主题
引擎说明
衡石可以配置一个内置引擎,用于对数据集进行加速,适用于客户没有计算能力较强的查询引擎的场景。在数据集管理页面打开开关就能获得加速效果。衡石安装包包含了 Postgresql 引擎、GreenplumDB 引擎、Doris 引擎。 客户还可以自己提供其他类型的引擎,包括 Aws Athena,Aws Redshift,阿里云 Hologres,自建 Postgresql,自建 GreenplumDB,自建 MySQL,自建达梦数据库等。另外,如果选择使用衡石安装的 Postgresql 或者 GreenplumDB 作为引擎,还同时支持配置这个服务作为数仓,给数据集成作为输出节点使用。 默认衡石使用 GreenplumDB 作为内置的引擎和数仓,支持数据集导入引擎,同时支持作为数据集成的输出目的地。这种情况下不需要做高级配置。
引擎表名和表清理机制
为了避免读写冲突,全量导入的表名是随机生成的,表名中有创建时间。再次全量导入,则生成新的表,旧表不再使用。复制数据集时,两个数据集会重用一个表。删除数据集的时候,不删除表。这里引入了一个 垃圾回收的机制,清理任务定期扫描引擎表列表,发现没有被数据集引用的表,就删除。
引擎相关配置
引擎的配置需要在启动前在安装跟目录下的 conf/hengshi-sense-env.sh 文件中配置,需要在变量前面加上 export 关键字。相关字段说明如下:
字段 | 类型 | 对应 java 字段 | 描述 |
---|---|---|---|
HS_ENGINE_TYPE | STRING | ENGINE_TYPE | 引擎类型,参考引擎类型说明 |
IS_ENGINE_EMBEDDED | BOOL | 无 | 是否为衡石自带的引擎,默认为 true; 如果是衡石自带引擎,则可以在页面开放数仓, 如果不是衡石自带引擎,而是客户自己的引擎,则在页面不能开放数仓 |
SYSTEM_ENGINE_URL | STRING | SYSTEM_ENGINE_URL | 设置用户自建的引擎的 jdbc url 作为内置引擎 |
INTERNAL_ENGINE_DATASET_PATH | STRING | INTERNAL_ENGINE_DATASET_PATH | 数据集导入路径,默认是 public,多级路径用英文逗号分隔 |
INTERNAL_ENGINE_TMP_PATH | STRING | INTERNAL_ENGINE_TMP_PATH | 引擎临时路径,主要用于数据集成文件上传,默认是 hengshi_internal_engine_tmp_schema,多级路径用英文逗号分隔 |
INTERNAL_ENGINE_OUTPUT_PATH | STRING | INTERNAL_ENGINE_OUTPUT_PATH | 引擎公共数据路径,用于提供衡石的共用数据,比如万年历等。默认是 common,多级路径用英文逗号分隔 |
UPDATE_ENGINE_COMMON_DATA | BOOL | UPDATE_ENGINE_COMMON_DATA | 是否更新公共数据,默认是 false,如果存在不更新,不存在才导入 |
OPEN_DW_USER | STRING | OPEN_DW_USER | 衡石数仓用户名 |
OPEN_DW_DB | STRING | OPEN_DW_DB | 衡石数仓所在 DB |
OPEN_DW_TYPE | STRING | OPEN_DW_TYPE | 衡石数仓类型,可以为 postgresql 或者 greenplum,默认是 greenplum |
GREENPLUM_QUERY_USR | STRING | ENGINE_QUERY_USER | 衡石提供的 GreenplumDB 的查询用户名 |
GREENPLUM_QUERY_PWD | STRING | ENGINE_QUERY_PASSWORD | 衡石提供的 GreenplumDB 的查询用户密码 |
QUERY_QUEUE | STRING | ENGINE_QUERY_QUEUE | 衡石提供的 GreenplumDB 的查询用户所属的资源队列 |
GREENPLUM_ETL_USR | STRING | ENGINE_ETL_USER | 衡石提供的 GreenplumDB 的 ETL 用户名 |
GREENPLUM_ETL_PWD | STRING | ENGINE_ETL_PASSWORD | 衡石提供的 GreenplumDB 的 ETL 用户密码 |
ETL_QUEUE | STRING | ENGINE_ETL_QUEUE | 衡石提供的 GreenplumDB 的 ETL 用户所属的资源队列 |
ENGINE_CONN_POOL_SIZE | INTEGER | ENGINE_CONN_POOL_SIZE | 引擎连接池大小,默认是10 |
INTERNAL_ENGINE_CONNECTION_TITLE | STRING | INTERNAL_ENGINE_CONNECTION_TITLE | 引擎连接显示的标题,默认是“引擎连接” |
DATASET_CACHE_MAX_SIZE_MB | INTEGER | DATASET_CACHE_MAX_SIZE_MB | 导入引擎的数据集的大小限制,单位的 MB,默认50000 |
DATASET_CACHE_IMPORT_MAX_TIME | INTEGER | DATASET_CACHE_IMPORT_MAX_TIME | 导入引擎过程最大时间,单位是小时,默认是3,这个影响引擎表的回收判断,如果存在误判可以改大一些,后果是没有使用的表清理会延迟一些 |
ENGINE_UPDATE_DEFAULT_RESOURCE_GROUP_RATIO | BOOL | ENGINE_UPDATE_DEFAULT_RESOURCE_GROUP_RATIO | 是否需要更新默认资源组(default_group)的比例,默认是 true |
ENGINE_DEFAULT_RESOURCE_GROUP_RATIO | INTEGER | ENGINE_DEFAULT_RESOURCE_GROUP_RATIO | 默认资源组(default_group)的比例,默认是10 |
ENGINE_RESOURCE_GROUP_PREFIX | STRING | ENGINE_RESOURCE_GROUP_PREFIX | 衡石创建的资源组的前缀,多个衡石服务共享一套引擎可以用不同前缀,默认是 hengshi |
ENGINE_PLATFORM_RESOURCE_GROUP_RATIO | INTEGER | ENGINE_PLATFORM_RESOURCE_GROUP_RATIO | 平台方资源组的总比例,默认是30 |
ENGINE_TENANT_RESOURCE_GROUP_RATIO | INTEGER | ENGINE_TENANT_RESOURCE_GROUP_RATIO | 租户资源组的总比例,默认是40 |
TOTAL_TENANT_ENGINE_RESOURCE_UNIT | INTEGER | TOTAL_TENANT_ENGINE_RESOURCE_UNIT | 默认租户资源的总单元数,默认是100 |
引擎类型说明
IS_ENGINE_EMBEDDED | 含义 |
---|---|
true | 配置为衡石内嵌引擎 |
false | 配置为客户自由引擎 |
类型值 | 意义 |
---|---|
NONE | 不使用引擎 |
GREENPLUM | 使用 GreenplumDB(默认) |
DORIS | 使用 DorisDB |
POSTGRESQL | 使用 Postgresql |
ATHENA | 使用 Aws Athena |
CLIENT_GREENPLUM | 当是客户自有 GreenplumDB 时,配置此变量 |
REDSHIFT | 使用 Aws Redshift |
MYSQL | 使用 MySQL |
DAMENG | 使用达梦数据库 |
HOLOGRES | 使用阿里云的 Hologres |
样例1:使用衡石提供的 GreenplumDB 作为引擎,并使用它作为数仓
shell config 文件不用配置,这个是提供数仓的版本的脚本默认配置的,不需要做任何设置
java config 文件
shell
ENGINE_TYPE=greenplum
ENGINE_DB=jdbc:postgresql://192.168.211.4:15432/postgres?user=hengshi&password=xxx&charSet=UTF-8
ENGINE_QUERY_USER=hengshi_query
ENGINE_QUERY_PASSWORD=xxx
ENGINE_QUERY_QUEUE=hengshi_query_queue
ENGINE_ETL_USER=hengshi_etl
ENGINE_ETL_PASSWORD=xxx
ENGINE_ETL_QUEUE=hengshi_etl_queue
OPEN_DW_TYPE=greenplum
OPEN_DW_USER=dwguest
OPEN_DW_DB=hengshi_hs_dw
样例2:使用衡石提供的 Postgresql 作为引擎,并使用它作为数仓
- shell config 文件, postgresql 数仓 url 也会自动配置, 只需修改 HS_ENGINE_TYPE 类型
shell
HS_ENGINE_TYPE="postgresql"
export OPEN_DW_TYPE="postgresql"
export OPEN_DW_USER="dwguest"
export OPEN_DW_DB="hengshi_hs_dw"
- java config 文件
shell
ENGINE_TYPE=postgresql
ENGINE_DB=jdbc:postgresql://192.168.211.4:45433/engine?user=hengshi&password=xxx&charSet=UTF-8
OPEN_DW_TYPE=postgresql
OPEN_DW_USER=dwguest
OPEN_DW_DB=hengshi_hs_dw
样例3:使用外部的 Postgresql 作为引擎
- shell config 文件
shell
HS_ENGINE_TYPE="postgresql"
IS_ENGINE_EMBEDDED=false
export SYSTEM_ENGINE_URL="jdbc:postgresql://192.168.211.4:45433/engine?user=hengshi&password=xxx&charSet=UTF-8"
export INTERNAL_ENGINE_DATASET_PATH="public"
export INTERNAL_ENGINE_TMP_PATH="hengshi_internal_engine_tmp_schema"
export INTERNAL_ENGINE_OUTPUT_PATH="common"
- java config 文件
shell
ENGINE_TYPE=postgresql
SYSTEM_ENGINE_URL=jdbc:postgresql://192.168.211.4:45433/engine?user=hengshi&password=xxx&charSet=UTF-8
INTERNAL_ENGINE_DATASET_PATH=public
INTERNAL_ENGINE_TMP_PATH=hengshi_internal_engine_tmp_schema
INTERNAL_ENGINE_OUTPUT_PATH=common
样例4:使用外部的 GreenplumDB 作为引擎
- shell config 文件
shell
HS_ENGINE_TYPE="client_greenplum"
IS_ENGINE_EMBEDDED=false
export SYSTEM_ENGINE_URL="jdbc:postgresql://192.168.211.4:45433/engine?user=hengshi&password=xxx&charSet=UTF-8"
export INTERNAL_ENGINE_DATASET_PATH="public"
export INTERNAL_ENGINE_TMP_PATH="hengshi_internal_engine_tmp_schema"
export INTERNAL_ENGINE_OUTPUT_PATH="common"
- java config 文件
ENGINE_TYPE=client_greenplum
SYSTEM_ENGINE_URL=jdbc:postgresql://192.168.211.4:45433/engine?user=hengshi&password=xxx&charSet=UTF-8
INTERNAL_ENGINE_DATASET_PATH=public
INTERNAL_ENGINE_TMP_PATH=hengshi_internal_engine_tmp_schema
INTERNAL_ENGINE_OUTPUT_PATH=common
样例5:使用 Aws Athena 作为引擎
- shell config 文件
shell
HS_ENGINE_TYPE="athena"
IS_ENGINE_EMBEDDED=false
export SYSTEM_ENGINE_URL="jdbc:awsathena://AwsRegion=cn-north-1;User=user;Password=pass;Catalog=AwsDataCatalog;Schema=default;S3OutputLocation=s3://wss-athena-result/result/;S3DataStorageLocation=s3://wss-athena/0-storage/"
export INTERNAL_ENGINE_DATASET_PATH="AwsDataCatalog,enginedb"
export INTERNAL_ENGINE_TMP_PATH="AwsDataCatalog,enginetmp"
export INTERNAL_ENGINE_OUTPUT_PATH="AwsDataCatalog,enginecommon"
- java config 文件
shell
ENGINE_TYPE=athena
SYSTEM_ENGINE_URL=jdbc:awsathena://AwsRegion=cn-north-1;User=user;Password=pass;Catalog=AwsDataCatalog;Schema=default;S3OutputLocation=s3://wss-athena-result/result/;S3DataStorageLocation=s3://wss-athena/0-storage/
INTERNAL_ENGINE_DATASET_PATH=AwsDataCatalog,enginedb
INTERNAL_ENGINE_TMP_PATH=AwsDataCatalog,enginetmp
INTERNAL_ENGINE_OUTPUT_PATH=AwsDataCatalog,enginecommon
样例6:使用 Aws Redshift 作为引擎
- shell config 文件
shell
HS_ENGINE_TYPE="redshift"
IS_ENGINE_EMBEDDED=false
export SYSTEM_ENGINE_URL="jdbc:redshift://test.ccveezprunlx.cn-north-1.redshift.amazonaws.com.cn:5439/engine?user=user&password=pass"
export INTERNAL_ENGINE_DATASET_PATH="enginedb"
export INTERNAL_ENGINE_TMP_PATH="enginetmp"
export INTERNAL_ENGINE_OUTPUT_PATH="enginecommon"
- java config 文件
shell
ENGINE_TYPE=redshift
SYSTEM_ENGINE_URL=jdbc:redshift://test.ccveezprunlx.cn-north-1.redshift.amazonaws.com.cn:5439/engine?user=user&password=pass
INTERNAL_ENGINE_DATASET_PATH=enginedb
INTERNAL_ENGINE_TMP_PATH=enginetmp
INTERNAL_ENGINE_OUTPUT_PATH=enginecommon
样例7:使用 MySQL 作为引擎
- shell config 文件
shell
HS_ENGINE_TYPE="mysql"
IS_ENGINE_EMBEDDED=false
export SYSTEM_ENGINE_URL="jdbc:mysql://192.168.211.4:3306/testdb?user=root&password=Test123@"
export INTERNAL_ENGINE_DATASET_PATH="enginedb"
export INTERNAL_ENGINE_TMP_PATH="enginetmp"
export INTERNAL_ENGINE_OUTPUT_PATH="enginecommon"
- java config 文件
shell
ENGINE_TYPE=mysql
SYSTEM_ENGINE_URL=jdbc:mysql://192.168.211.4:3306/testdb?user=root&password=Test123@
INTERNAL_ENGINE_DATASET_PATH=enginedb
INTERNAL_ENGINE_TMP_PATH=enginetmp
INTERNAL_ENGINE_OUTPUT_PATH=enginecommon
样例8:使用 doris 作为引擎
- shell config 文件
shell
export HS_ENGINE_TYPE="other"
export IS_ENGINE_EMBEDDED=false
export SYSTEM_ENGINE_URL="jdbc:doris://10.10.10.251:9030/hengshidb?user=hengshi&password=hengshi"
export INTERNAL_ENGINE_DATASET_PATH="enginedb"
export INTERNAL_ENGINE_TMP_PATH="enginetmp"
export INTERNAL_ENGINE_OUTPUT_PATH="enginecommon"
- java config 文件
shell
ENGINE_TYPE=other
SYSTEM_ENGINE_URL=jdbc:doris://10.10.10.251:9030/hengshidb?user=hengshi&password=hengshi
INTERNAL_ENGINE_DATASET_PATH=enginedb
INTERNAL_ENGINE_TMP_PATH=enginetmp
INTERNAL_ENGINE_OUTPUT_PATH=enginecommon
样例9:使用 clickhouse 作为引擎
- shell config 文件
shell
export HS_ENGINE_TYPE="other"
export IS_ENGINE_EMBEDDED=false
export SYSTEM_ENGINE_URL="jdbc:clickhouse://192.168.2.250:8123/hengshi?user=default&password=hengshipwd&cluster=hengshi_cluster"
export INTERNAL_ENGINE_DATASET_PATH="enginedb"
export INTERNAL_ENGINE_TMP_PATH="enginetmp"
export INTERNAL_ENGINE_OUTPUT_PATH="enginecommon"
- java config 文件
shell
ENGINE_TYPE=other
SYSTEM_ENGINE_URL=jdbc:clickhouse://192.168.2.250:8123/hengshi?user=default&password=hengshipwd
INTERNAL_ENGINE_DATASET_PATH=enginedb
INTERNAL_ENGINE_TMP_PATH=enginetmp
INTERNAL_ENGINE_OUTPUT_PATH=enginecommon