1. 配置文件

配置文件中存放HENGSHI SENSE的配置参数,可以通过修改配置文件来改变HENGSHI SENSE的服务方式。

1.1. 配置文件说明

配置文件存放在conf路径下,包含hengshi-sense-env.sh和engine-segment-hosts两个文件。其中engine-segment-hosts用于存放加速引擎的segment表的配置信息,hengshi-sense-env.sh中存放除加速引擎segment host列表外的所有配置项。

说明
如果conf/hengshi-sense-env.sh不存在,可通过拷贝conf/hengshi-sense-env.sh.sample模板生成这个文件。
配置文件修改后需要重启HENGSHI服务才能生效。

1.2. 加速引擎相关配置

加速引擎相关配置只有在安装加速引擎时需要配置。

  • 引擎管理模块master
    引擎管理模块master是一台独立机器,其ip或hostname可以通过conf/hengshi-sense-env.sh配置文件的HS_ENGINE_HOST进行配置。
  • 引擎数据查询模块segment
    引擎数据查询模块segment可以配置多台机器,其ip或hostname通过conf/engine-segment-hosts配置文件配置,每一行是一个segment的ip或hostname。默认系统会生成只包含localhost的配置。

1.3. 数据目录配置建议

请参考下面的建议进行数据目录配置。

  • 初始安装时,程序和系统数据至少需要3G空间。
  • 如果上传文件很多,占用空间很大,建议将HS_HENGSHI_DATA目录配置到大磁盘。系统数据、上传数据和加速引擎数据都存储在这个目录下。
  • 如果需要加速引擎给很大的数据加速,建议配置HS_ENGINE_HOME目录到大磁盘。配置后引擎加速数据会独立于HS_HENGSHI_DATA,存储在这个目录下。

1.4. 常用配置变量说明

所有配置项都需要写进conf/hengshi-sense-env.sh文件。

参数 用途
JAVA_HOME 运行时java的环境目录。
HS_HENGSHI_PORT HENGSHI WEB服务端口,默认8080。BI禁止root启动,1024以下端口请配置代理转发,如nginx等。
HS_HENGSHI_DATA HENGSHI存储所有数据的根目录,默认在安装目录下,当有大分区专门用于存储数据时,可以配置此变量。
HS_PG_HOST 程序内部数据库主机,当不使用衡石metadb时可以通过此变量修改配置。
HS_PG_PORT 程序内部数据库监听端口,默认为54320,当与现有服务端口冲突可通过此变量更改端口。
HS_PG_DB 程序内部数据库的数据库名。
HS_PG_USR 程序内部数据库用户名。
HS_PG_PWD 程序内部数据库密码。
HS_ENGINE_HOME 引擎数据文件路径。
HS_ENGINE_HOST 引擎主机,配置后会在对应机器部署引擎的master模块,默认为localhost。
HS_ENGINE_SEGMENTS 引擎worker节点,数组,默认为(localhost)。多节点时示例为(Node-A Node-B Node-C)。
HS_ENGINE_PORT 引擎端口。

衡石启动jvm最大内存默认为 6G, 如果需要修改请用 HENGSHI_JAVA_OPTS. 比如像改成最小1G,最大4G,在conf/hengshi-sense-env.sh中配置 export HENGSHI_JAVA_OPTS="-Xms1g -Xmx4g"

1.5. 加密配置文件中的密码

如果有需求在 conf/hengshi-sense-env.sh 配置文件中只能保存密码密文,可以如下操作

  1. 生成密码的密文
    如下会生成密码 'abc123abc123abc123abc123abc123abc123abc123abc123' 的密文

    cd /opt/hengshi;
    bin/gete.sh "abc123abc123abc123abc123abc123abc123abc123abc123"
    #程序输出
    U2FsdGVkX1/Ol74LahZWp6HlMspWmBHL5c4/s20Aw7o/z89q9pUITWfE/w2RCAu9
    eyjEPtdGLOfXg3OGVcr9CJRPwgmpQWmWHvZ4j1aBmH8=
    
  2. 替换配置文件中变量
    例如,替换 "HS_PG_RO_PWD" 的配置

    HS_PG_RO_PWD="abc123abc123abc123abc123abc123abc123abc123abc123"
    #替换为
    E_HS_PG_RO_PWD="U2FsdGVkX1/Ol74LahZWp6HlMspWmBHL5c4/s20Aw7o/z89q9pUITWfE/w2RCAu9
    eyjEPtdGLOfXg3OGVcr9CJRPwgmpQWmWHvZ4j1aBmH8="
    

    注意:如果同时存在明文/密文配置,则密文配置优先生效. 例如同时配置了 HS_PG_RO_PWDE_HS_PG_RO_PWD 则最终 "E_HS_PG_RO_PWD" 生效

  3. 支持密文配置的变量映射

明文变量 密文变量
HS_PG_PWD E_HS_PG_PWD
HS_PG_RO_PWD E_HS_PG_RO_PWD
HS_ENGINE_PWD E_HS_ENGINE_PWD
HS_SYSLOG_PWD E_HS_SYSLOG_PWD
HS_ACCESSLOG_PWD E_HS_ACCESSLOG_PWD
QUARTZ_PWD E_QUARTZ_PWD
GREENPLUM_QUERY_PWD E_GREENPLUM_QUERY_PWD
GREENPLUM_ETL_PWD E_GREENPLUM_ETL_PWD
MINIO_ROOT_PASSWORD E_MINIO_ROOT_PASSWORD
REDIS_PASSWORD E_REDIS_PASSWORD

1.6. 自定义JDBC配置

如果连接的数据源版本在"特殊数据源版本JDBC驱动表"中,需要下载对应版本驱动,解压驱动zip并将解压内容拷贝到安装目录下的plugins目录内,重启HENGSHI服务后生效。

特殊数据源版本JDBC驱动表:

服务端版本 下载地址
hive-1.1 https://download.hengshi.com/3rd/hive-1.1-jdbc-minimal.zip

注意:
往plugins目录内放入JDBC驱动后,只能连接对应版本的服务,其他版本的服务不能保证连通。 例如下载hive-1.1的驱动放置到plugins目录下,这时只能保证连接hive-1.1,对于其他hive版本不保证连通性。

上述方法修改的是整个服务的默认JDBC驱动,如果需要同时使用两个版本以上的JDBC驱动,可以使用如下方法:

  1. 以hive1.1.1,hive1.1.0,hive1.0.0为例,系统需要默认hive JDBC驱动和这三个版本的hive JDBC驱动能同时使用。分别解压相应版本的依赖压缩包,把jar文件放到hengshi server服务器的一个相应目录中,例如/opt/hengshi/jdbc-jar/hive1.1.1,/opt/hengshi/jdbc-jar/hive1.1.0,/opt/hengshi/jdbc-jar/hive1.0.0
  2. 添加配置文件/opt/hengshi/jdbc-jar/jdbc_conf.json,内容如下:
    [
    {
     "name":"hive",                                       // 与相应的数据连接的options.type字段相同
     "versions":[
       {
         "version":"1.1.1",                               // 具体版本号
         "jdbcJarPath":"/opt/hengshi/jdbc-jar/hive1.1.1", // jar包路径
         "driverName":"org.apache.hive.jdbc.HiveDriver",  // 驱动主类的全名称,如果和默认版本的类名一致,可以不配置。
         "configs":{
           "_hs_set_auto_commit":false                    //hive1.1不支持autoCommit设置,这里为false。所有额外的衡石特定配置需要以_hs_开头,以便在构建连接池之前移除这些配置。
         }
       },                                                 //多个版本放在versions数组的不同元素下
       {
         "version":"1.1.0",
         "jdbcJarPath":"/opt/hengshi/jdbc-jar/hive1.1.0",
         "driverName":"org.apache.hive.jdbc.HiveDriver",
         "configs":{
           "_hs_set_auto_commit":false
         }
       },
       {
         "version":"1.0.0",
         "jdbcJarPath":"/opt/hengshi/jdbc-jar/hive1.0.0",
         "driverName":"org.apache.hive.jdbc.HiveDriver",
         "configs":{
           "_hs_set_auto_commit":false
         }
       }
     ]
    }                                                      //多个不同连接放在最外层数组的不同元素下
    ]
    
  3. 配置文件conf/hengshi-sense-env.sh中添加配置项export HENGSHI_JDBC_CONFIG=/opt/hengshi/jdbc-jar/jdbc_conf.json,重启hengshi服务
  4. 新建数据连接时,选择对应的版本。default是指的hengshi内部的版本,其他是自定义的驱动版本

注意:

  1. 集群部署方式:需要在所有[hengshi]节点下进行上述操作
  2. docker容器部署方式:
    添加配置项操作,对docker-compose.yaml配置文件进行修改,在hengshi>environment下增加 HENGSHI_JDBC_CONFIG: /opt/hengshi/jdbc-jar/jdbc_conf.json 配置后重启hengshi服务
  3. k8s集群部署方式:
    jar包以及配置文件位置,上述 /opt/hengshi/jdbc-jar目录调整为/opt/hsdata/jdbc-jar
    添加配置项操作,对configmap.yaml配置文件进行修改,增加 HENGSHI_JDBC_CONFIG: /opt/hengshi/jdbc-jar/jdbc_conf.json 配置后重启hengshi服务
# 默认配置为 export FLINK_REST_BIND_ADDRESS=127.0.0.1
# conf/hengshi-sense-env.sh 增加下列配置
export FLINK_REST_BIND_ADDRESS=0.0.0.0 # ip地址 0.0.0.0 或者服务器本机ip

注意:
Flink Web界面可通过无密码访问,不建议直接开放公网flink端口,直接开放端口可能会增加服务器被恶意攻击风险。
如需使用此功能,建议通过nginx等反向代理工具代理后增加配置后访问,避免通过直接访问端口方式访问服务。

1.8. 二级访问路径配置

二级路径访问的需求依赖Nginx等反向代理工具实现,不同版本有不同的配置方式。

1.8.1. 配置方式一

该配置方式适用 5.0.2 及 5.0.2 以上版本。

Nginx 参考配置

配置过程中以/bi二级路径为例。

  • prefix style
    location /bi/ {             #<====[1/3] 路径地址前缀
        proxy_set_header Accept-Encoding "";  #<====[2/3] 不要漏掉,当开启压缩时,需要有此项配置
        proxy_set_header X-HS-Sub-Path "/bi/"; #<====[3/3] /bi/ 路径地址前缀,与 location 声明的一致
        proxy_set_header Host $host;
        proxy_hide_header Access-Control-Allow-Origin;
        proxy_pass http://hengshi-server/;
    }
    
  • longest matching prefix style
    location ^~ /bi/ {             #<====[1/3] 路径地址前缀
       proxy_set_header Accept-Encoding "";  #<====[2/3] 不要漏掉,当开启压缩时,需要有此项配置
       proxy_set_header X-HS-Sub-Path "/bi/"; #<====[3/3] /bi/ 路径地址前缀,与 location 声明的一致
       proxy_set_header Host $host;
       proxy_hide_header Access-Control-Allow-Origin;
       proxy_pass http://hengshi-server/;
    }
    
  • regex style
    location ~ ^/bi {             #<====[1/3] 路径地址前缀   
       proxy_set_header Accept-Encoding "";  #<====[2/3] 不要漏掉,当开启压缩时,需要有此项配置
       proxy_set_header X-HS-Sub-Path "/bi/"; #<====[3/3] /bi/ 路径地址前缀,与 location 声明的一致
       proxy_set_header Host $host;
       proxy_hide_header Access-Control-Allow-Origin;
       rewrite ^/bi/(.*) /$1 break;  #<==== 改写 URI
       proxy_pass http://hengshi-server;  #<==== 路径结尾没有 URI,这里是没有结尾的 '/'
    }
    

Ingress 参考配置

配置过程中以/bi二级路径为例。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_set_header Accept-Encoding "";     #<====[2/3] 不要漏掉,当开启压缩时,需要有此项配置
      proxy_set_header X-HS-Sub-Path "/bi/";   #<====[3/3] /bi/ 路径地址前缀,与 location 声明的一致
spec:
  ingressClassName: nginx
  rules:
    - host: example.hengshi.com
      http:
        paths:
          - path: /bi/     #<====[1/3] 路径地址前缀
            pathType: Prefix

1.8.2. 配置方式二

该配置方式适用 5.0.1 及 5.0 版本。

Nginx 参考配置

配置过程中以/bi二级路径为例。

   upstream hengshi-server {
         server 127.0.0.1:8080;
      }
  • prefix style
    location /bi/ {             #<====[1/3] 路径地址前缀,无正则匹配
        proxy_set_header Accept-Encoding "";  #<====[2/3] 不要漏掉,当开启压缩时,需要有此项配置
        proxy_set_header Host $host;
        proxy_hide_header Access-Control-Allow-Origin;
        proxy_pass http://hengshi-server/;
        sub_filter_once on;
        sub_filter '<base href="/">' '<base href="/bi/" />';  #<====[3/3] /bi/ 路径地址前缀,与 location 声明的一致
    }
    
  • regex style
    location ^/bi/(.*) {             #<====[1/4] 路径地址规则
        proxy_set_header Accept-Encoding "";  #<====[2/4] 不要漏掉,当开启压缩时,需要有此项配置
        proxy_set_header Host $host;
        proxy_hide_header Access-Control-Allow-Origin;
        proxy_pass http://hengshi-server/$1;  #<====[3/4] 将 uri 中路径后面的部分 '$1' 传给 upstream
        sub_filter_once on;
        sub_filter '<base href="/">' '<base href="/bi/" />';  #<====[4/4] /bi/ 路径地址前缀,与 location 声明的一致
    }
    
  • exact match (此种类型仅能匹配一个 api 地址,不能匹配其他 api,用于特殊场景)
    location = /bi/api/auth/login-info {       #<====[1/4] 完全匹配的路径
        proxy_set_header Accept-Encoding "";  #<====[2/4] 不要漏掉,当开启压缩时,需要有此项配置
        proxy_set_header Host $host;
        proxy_hide_header Access-Control-Allow-Origin;
        proxy_pass http://hengshi-server/api/auth/login-info;  #<====[3/4] 将 upstream 的路径写全
        sub_filter_once on;
        sub_filter '<base href="/">' '<base href="/bi/" />';  #<====[4/4] /bi/ 路径地址前缀,与 location 声明的一致
    }
    

Ingress 参考配置

配置过程中以/bi二级路径为例。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: hengshi-sense
  namespace: hengshi
  annotations:
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_set_header Accept-Encoding "";
      proxy_hide_header Access-Control-Allow-Origin;
      sub_filter_once on;
      sub_filter '<base href="/">' '<base href="/bi/" />';
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  ingressClassName: nginx
  rules:
    - host: example.hengshi.com
      http:
        paths:
          - path: /bi(/|$)(.*)
            pathType: Prefix
            backend:
              service:
                name: hengshi-sense
                port:
                  number: 8080

注意: CONTEXT_PATH参数在此版本中已不再生效。

results matching ""

    No results matching ""

    替代衡石metadb