hetu-core/hetu-docs/zh/connector/datacenter.md

13 KiB
Raw Permalink Blame History

数据中心连接器

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

本端连接器配置

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

基本配置

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

安全配置

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

Kerberos认证方式

属性名称 说明 默认值
dc.kerberos.config.path Kerberos配置文件
dc.kerberos.credential.cachepath Kerberos凭证缓存
dc.kerberos.keytab.path Kerberos keytab文件
dc.kerberos.principal 向openLooKeng协调节点进行身份验证时使用的主体
dc.kerberos.remote.service.name openLooKeng协调节点Kerberos服务的名称。Kerberos身份验证时需要配置该参数
dc.kerberos.service.principal.pattern openLooKeng协调节点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.password keystore密码
dc.ssl.keystore.path 包含用于身份验证的证书和私钥的JavaKeyStore文件的位置
dc.ssl.truststore.password truststore密码
dc.ssl.truststore.path 用于验证HTTPS服务器证书的Java TrustStore文件的位置

代理配置

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

性能优化配置

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

其他配置

属性名称 说明 默认值
dc.http-request-connectTimeout HTTP请求连接超时默认值为30秒 30.00s
dc.http-request-readTimeout HTTP请求读取超时默认为30秒 30.00s
dc.httpclient.maximum.idle.connections HTTP客户端保持打开的最大空闲连接 20
dc.http-client-timeout 客户端持续重试取数据的时间默认值为10分钟 10.00m
dc.max.anticipated.delay 集群中两个查询请求之间的最大预期时延。如果远程dc没有收到超过此延迟的请求则可能会取消查询 10.00m
dc.application.name.prefix 添加到任何指定的ApplicationName客户端信息属性的前缀该前缀用于设置openLooKeng查询的源名称。如果没有设置此属性或ApplicationName则查询的源将是hetu-dc hetu-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的配置进行一定修改

http {
    upstream for_aa {
        ip_hash;
        server 192.168.0.101:8090;   #coordinator-1 的IP和PORT
        server 192.168.0.102:8090;   #coordinator-2 的IP和PORT
        check interval=3000 rise=2 fall=5 timeout=1000 type=http;
    }

    upstream for_cross_region {
        hash $hashKey consistent;
        server 192.168.0.101:8090;   #coordinator-1 的IP和PORT
        server 192.168.0.102:8090;   #coordinator-2 的IP和PORT
        check interval=3000 rise=2 fall=5 timeout=1000 type=http;
    }
    
    server {
        listen nginx_ip:8888;
        
        location / {
            proxy_pass http://for_aa;
            proxy_redirect off;
            proxy_set_header Host $host:$server_port;
        }
        
        location ^~/v1/dc/(.*)/(.*) {
            set $hashKey $2;
            proxy_redirect off;
            proxy_pass http://for_cross_region;
		    proxy_set_header Host $host:$server_port;
        }
        
        location ^~/v1/dc/statement/(.*)/(.*)/(.*) {
            set $hashKey $3;
            proxy_redirect off;
            proxy_pass http://for_cross_region;
		    proxy_set_header Host $host:$server_port;
        }
    }
}

多openLooKeng集群

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

Properties properties = new Properties();
properites.setProperties("enable-dynamic-filter", "true");
properites.setProperties("dynamic-filtering-max-per-driver-row-count", "10000");
properites.setProperties("dynamic-filtering-max-per-driver-size", "1MB");

String url = "jdbc:lk://127.0.0.0:8090/hive/default";
Connection connection = DriverManager.getConnection(url, properties);

查询远程数据中心

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

SHOW CATALOGS;

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

SHOW SCHEMAS FROM dc.mysql;

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

SHOW TABLES FROM dc.mysql.web;

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

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

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

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