数据中心连接器

数据中心连接器允许查询远程openLooKeng数据中心。可实现来自本地openLooKeng环境的不同openLooKeng集群之间的数据融合分析。

本端连接器配置

配置数据中心连接器时,在etc/catalog中创建一个属性文件,例如<dc-name>.properties,即将数据中心连接器挂载到<dc-name> 目录。使用以下内容创建配置文件,并根据实际的远端openLooKeng替换connection属性:

基本配置

  1. connector.name=dc
  2. connection-url=http://example.net:8080
  3. connection-user=<远端openLooKeng用户名>
  4. connection-password=<远端openLooKeng密码>
属性名称说明是否必选默认值
connection-url需要连接的openLooKeng的URL必选
connection-user需要连接的openLooKeng的用户名可选
connection-password需要连接的openLooKeng的密码可选

安全配置

当远端openLooKeng开启了安全认证或TLS/SSL通道加密时,则需要在<dc-name>.properties进行相应的安全配置。

Kerberos认证方式

属性名称说明默认值
dc.kerberos.config.pathKerberos配置文件
dc.kerberos.credential.cachepathKerberos凭证缓存
dc.kerberos.keytab.pathKerberos keytab文件
dc.kerberos.principal向openLooKeng协调节点进行身份验证时使用的主体
dc.kerberos.remote.service.nameopenLooKeng协调节点Kerberos服务的名称。Kerberos身份验证时,需要配置该参数
dc.kerberos.service.principal.patternopenLooKeng协调节点Kerberos服务主体模式${SERVICE}@${HOST}
dc.kerberos.use.canonical.hostname通过首先将主机名解析为IP地址,然后对该IP地址执行反向DNS查找,从而使用Kerberos服务主体的openLooKeng协调节点的规范主机名false

令牌认证方式

属性名称说明默认值
dc.accesstoken基于令牌身份验证的访问令牌

外部证书认证方式

属性名称说明默认值
dc.extra.credentials连接外部服务的额外凭证。ExtraCredentials是一个键值对列表。示例:foo:bar;abc:xyz将创建凭证abc=xyzfoo=bar

SSL/TLS

属性名称说明默认值
dc.ssl使用HTTPS连接false
dc.ssl.keystore.passwordkeystore密码
dc.ssl.keystore.path包含用于身份验证的证书和私钥的JavaKeyStore文件的位置
dc.ssl.truststore.passwordtruststore密码
dc.ssl.truststore.path用于验证HTTPS服务器证书的Java TrustStore文件的位置

代理配置

属性名称说明默认值
dc.socksproxySOCKS代理主机和端口。示例:localhost:1080
dc.httpproxyHTTP代理主机和端口。示例:localhost:8888

性能优化配置

属性名称说明默认值
dc.metadata.cache.enabled启用元数据缓存,缓存远端openLooKeng的元数据信息true
dc.metadata.cache.maximum.size元数据缓存最大值,可缓存的远端openLooKeng元数据条数10000
dc.metadata.cache.ttl元数据缓存TTL,TTL到期,则需要重新从远端openLooKeng获取元数据1.00s
dc.query.pushdown.enabled启用子查询下推到远端openLooKengtrue
dc.query.pushdown.moduleFULL_PUSHDOWN,表示全部下推;BASE_PUSHDOWN,表示部分下推,其中部分下推是指filter/aggregation/limit/topN/project这些可以下推。FULL_PUSHDOWN
dc.http-compression启用zstd压缩数据false

其他配置

属性名称说明默认值
dc.http-request-connectTimeoutHTTP请求连接超时,默认值为30秒30.00s
dc.http-request-readTimeoutHTTP请求读取超时,默认为30秒30.00s
dc.httpclient.maximum.idle.connectionsHTTP客户端保持打开的最大空闲连接20
dc.http-client-timeout客户端持续重试取数据的时间,默认值为10分钟10.00m
dc.max.anticipated.delay集群中两个查询请求之间的最大预期时延。如果远程dc没有收到超过此延迟的请求,则可能会取消查询10.00m
dc.application.name.prefix添加到任何指定的ApplicationName客户端信息属性的前缀,该前缀用于设置openLooKeng查询的源名称。如果没有设置此属性或ApplicationName,则查询的源将是hetu-dchetu-dc
dc.remote-http-server.max-request-header-size此属性应等效于远程服务器中http-server.max-request-header-size的值
dc.remote.cluster.id远程集群的唯一ID

远端openLooKeng配置

远端openLooKeng配置

可以在etc/config.properties中设置以下属性:

属性名称说明默认值
hetu.data.center.split.count每个查询允许的最大Split个数5
hetu.data.center.consumer.timeout执行查询获取到数据后,等待被取走的最大时延10min

远端Nginx配置

在远端开启HA,同时使用Nginx作为代理时,需要对Nginx的配置进行一定修改:

  1. http {
  2. upstream for_aa {
  3. ip_hash;
  4. server 192.168.0.101:8090; #coordinator-1 的IP和PORT;
  5. server 192.168.0.102:8090; #coordinator-2 的IP和PORT;
  6. check interval=3000 rise=2 fall=5 timeout=1000 type=http;
  7. }
  8. upstream for_cross_region {
  9. hash $hashKey consistent;
  10. server 192.168.0.101:8090; #coordinator-1 的IP和PORT;
  11. server 192.168.0.102:8090; #coordinator-2 的IP和PORT;
  12. check interval=3000 rise=2 fall=5 timeout=1000 type=http;
  13. }
  14. server {
  15. listen nginx_ip:8888;
  16. location / {
  17. proxy_pass http://for_aa;
  18. proxy_redirect off;
  19. proxy_set_header Host $host:$server_port;
  20. }
  21. location ^~/v1/dc/(.*)/(.*) {
  22. set $hashKey $2;
  23. proxy_redirect off;
  24. proxy_pass http://for_cross_region;
  25. proxy_set_header Host $host:$server_port;
  26. }
  27. location ^~/v1/dc/statement/(.*)/(.*)/(.*) {
  28. set $hashKey $3;
  29. proxy_redirect off;
  30. proxy_pass http://for_cross_region;
  31. proxy_set_header Host $host:$server_port;
  32. }
  33. }
  34. }

多openLooKeng集群

可以根据需要创建任意多的目录,因此,如果有额外的数据中心,只需添加另一个不同的名称的属性文件到etc/catalog中(确保它以.properties结尾)。例如,如果将属性文件命名为sales.properties,openLooKeng将使用配置的连接器创建一个名为sales的目录。

使用跨域动态过滤

启用跨域动态过滤,在执行跨openLooKeng查询时,在本端生成过滤器,并将过滤器发送到远端openLooKeng进行数据过滤,减少从远端openLooKeng拉取的数据量。需要先确保openLooKeng环境中有启用state-store(相关配置可参考state-store的配置文档)。启用跨域动态过滤有两种方式:

方式一: 可以在etc/config.properties中设置以下属性:

属性名称说明默认值
enable-dynamic-filtering是否启用动态过滤特性false
dynamic-filtering-max-per-driver-row-count每个driver最大允许处理的行数,超过该行数,则该查询的动态过滤特性会自动取消100
dynamic-filtering-max-per-driver-size每个driver最大允许处理的数据量大小,超过该值,则该查询的动态过滤特性会自动取消10KB

方式二:通过设置session:

例1(通过CLI链接openLooKeng):

java -jar hetu-cli-*-execute.jar --server ip:port --session enable-dynamic-filter=ture --session dynamic-filtering-max-per-driver-row-count=10000 --session dynamic-filtering-max-per-driver-size=1MB

例2(通过JDBC链接openLooKeng):

  1. Properties properties = new Properties();
  2. properites.setProperties("enable-dynamic-filter", "true");
  3. properites.setProperties("dynamic-filtering-max-per-driver-row-count", "10000");
  4. properites.setProperties("dynamic-filtering-max-per-driver-size", "1MB");
  5. String url = "jdbc:lk://127.0.0.0:8090/hive/default";
  6. Connection connection = DriverManager.getConnection(url, properties);

查询远程数据中心

数据中心连接器为远程数据中心中的每个目录提供一个以属性文件名为前缀的目录。将每个带前缀的远程目录视为本地集群中的独立目录。可以通过执行SHOW CATALOGS来查看可用远程目录:

  1. SHOW CATALOGS;

如果在远程数据中心中有一个名为mysql的目录,则可以通过执行SHOW SCHEMAS来查看远程目录中的模式:

  1. SHOW SCHEMAS FROM dc.mysql;

如果远程目录mysql中有一个名为web的模式,则可以通过执行SHOW TABLES来查看该目录中的表:

  1. SHOW TABLES FROM dc.mysql.web;

可以使用以下方法之一查看web模式中clicks表中的列的列表:

  1. DESCRIBE dc.mysql.web.clicks;
  2. SHOW COLUMNS FROM dc.mysql.web.clicks;

最后,可以访问web模式中的clicks表:

  1. SELECT * FROM dc.mysql.web.clicks;

如果对目录属性文件使用不同的名称,请使用该目录名称,而不要在上述示例中使用dc

数据中心连接器限制

数据中心连接器是一个只读连接器。暂不支持以下SQL语句:

ALTER SCHEMAALTER TABLEANALYZECACHE TABLECOMMENTCREATE SCHEMACREATE TABLECREATE TABLE ASCREATE VIEWDELETEDROP CACHEDROP SCHEMADROP TABLEDROP VIEWGRANTINSERTINSERT OVERWRITEREVOKESHOW CACHESHOW CREATE VIEWSHOW GRANTSSHOW ROLESSHOW ROLE GRANTSUPDATEVACUUM