主题
配置文件
配置文件中存放 HENGSHI SENSE 的配置参数,可以通过修改配置文件来改变 HENGSHI SENSE 的服务方式。
配置文件说明
配置文件存放在 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 服务才能生效。
加速引擎相关配置
加速引擎相关配置只有在安装加速引擎时需要配置。
- 引擎管理模块 master 引擎管理模块 master 是一台独立机器,其 ip 或 hostname 可以通过 conf/hengshi-sense-env.sh 配置文件的 HS_ENGINE_HOST 进行配置。
- 引擎数据查询模块 segment 引擎数据查询模块 segment 可以配置多台机器,其 ip 或 hostname 通过 conf/engine-segment-hosts 配置文件配置,每一行是一个 segment 的 ip 或 hostname。默认系统会生成只包含 localhost 的配置。
数据目录配置建议
请参考下面的建议进行数据目录配置。
- 初始安装时,程序和系统数据至少需要3G 空间。
- 如果上传文件很多,占用空间很大,建议将 HS_HENGSHI_DATA 目录配置到大磁盘。系统数据、上传数据和加速引擎数据都存储在这个目录下。
- 如果需要加速引擎给很大的数据加速,建议配置 HS_ENGINE_HOME 目录到大磁盘。配置后引擎加速数据会独立于 HS_HENGSHI_DATA,存储在这个目录下。
常用配置变量说明
所有配置项都需要写进 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"
加密配置文件中的密码
如果有需求在 conf/hengshi-sense-env.sh 配置文件中只能保存密码密文,可以如下操作
- 生成密码的密文 如下会生成密码 'abc123abc123abc123abc123abc123abc123abc123abc123' 的密文
sh
cd /opt/hengshi;
bin/gete.sh "abc123abc123abc123abc123abc123abc123abc123abc123"
#程序输出
U2FsdGVkX1/Ol74LahZWp6HlMspWmBHL5c4/s20Aw7o/z89q9pUITWfE/w2RCAu9
eyjEPtdGLOfXg3OGVcr9CJRPwgmpQWmWHvZ4j1aBmH8=
- 替换配置文件中变量 例如,替换 "HS_PG_RO_PWD" 的配置
sh
HS_PG_RO_PWD="abc123abc123abc123abc123abc123abc123abc123abc123"
#替换为
E_HS_PG_RO_PWD="U2FsdGVkX1/Ol74LahZWp6HlMspWmBHL5c4/s20Aw7o/z89q9pUITWfE/w2RCAu9
eyjEPtdGLOfXg3OGVcr9CJRPwgmpQWmWHvZ4j1aBmH8="
注意:如果同时存在明文/密文配置,则密文配置优先生效. 例如同时配置了 HS_PG_RO_PWD
与 E_HS_PG_RO_PWD
则最终 "E_HS_PG_RO_PWD" 生效
- 支持密文配置的变量映射
明文变量 | 密文变量 |
---|---|
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 |
自定义 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 驱动,可以使用如下方法:
- 以 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
- 添加配置文件
/opt/hengshi/jdbc-jar/jdbc_conf.json
,内容如下:
json
[
{
// 与相应的数据连接的 options.type 字段相同
"name":"hive",
"versions":[
{
// 具体版本号
"version":"1.1.1",
// jar 包路径
"jdbcJarPath":"/opt/hengshi/jdbc-jar/hive1.1.1",
// 驱动主类的全名称,如果和默认版本的类名一致,可以不配置。
"driverName":"org.apache.hive.jdbc.HiveDriver",
"configs":{
// hive1.1不支持 autoCommit 设置,这里为 false。
// 所有额外的衡石特定配置需要以_hs_开头,以便在构建连接池之前移除这些配置。
"_hs_set_auto_commit":false
}
},
// 多个版本放在 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
}
}
]
}
// 多个不同连接放在最外层数组的不同元素下
// , {...}
]
- 配置文件 conf/hengshi-sense-env.sh 中添加配置项
export HENGSHI_JDBC_CONFIG=/opt/hengshi/jdbc-jar/jdbc_conf.json
,重启 hengshi 服务 - 新建数据连接时,选择对应的版本。default 是指的 hengshi 内部的版本,其他是自定义的驱动版本
注意
- 集群部署方式:需要在所有[hengshi]节点下进行上述操作
- docker 容器部署方式: 添加配置项操作,对 docker-compose.yaml 配置文件进行修改,在 hengshi>environment 下增加 HENGSHI_JDBC_CONFIG: /opt/hengshi/jdbc-jar/jdbc_conf.json 配置后重启 hengshi 服务
- k8s 集群部署方式: jar 包以及配置文件位置,上述 /opt/hengshi/jdbc-jar 目录调整为/opt/hsdata/jdbc-jar 添加配置项操作,对 configmap.yaml 配置文件进行修改,增加 HENGSHI_JDBC_CONFIG: /opt/hengshi/jdbc-jar/jdbc_conf.json 配置后重启 hengshi 服务
Flink Web 界面开放访问配置
shell
# 默认配置为 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 等反向代理工具代理后增加配置后访问,避免通过直接访问端口方式访问服务。
二级访问路径配置
二级路径访问的需求依赖 Nginx 等反向代理工具实现,不同版本有不同的配置方式。
配置方式一
该配置方式适用 5.0.2 及 5.0.2 以上版本。
Nginx 参考配置
配置过程中以**/bi**二级路径为例。
- prefix style
text
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
text
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
text
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**二级路径为例。
yaml
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
配置方式二
该配置方式适用 5.0.1 及 5.0 版本。
Nginx 参考配置
配置过程中以**/bi**二级路径为例。
text
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**二级路径为例。
yaml
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 参数在此版本中已不再生效。