You need to enable JavaScript to run this app.
导航
高阶使用
最近更新时间:2025.10.24 16:33:23首次发布时间:2022.10.10 11:25:42
复制全文
我的收藏
有用
有用
无用
无用

Connector 配置

内置 Connector

火山引擎 E-MapReduce(EMR)Trino 内置了 TPC-H、Hive、Iceberg 和 Hudi 连接器配置,如果您在安装 Trino 服务时已安装 Hive 服务,则 EMR 会自动生成对应的 Connector 配置文件。如果 Hive 服务是在 Trino 之后安装,则需要您在控制台侧手动重启 Trino 服务以触发生成 Connector 配置。

说明

EMR 只有在检测已安装 Hive 服务的前提下,才会自动生成 Hive、Iceberg 和 Hudi 的 Connector 配置文件。

内置 Connector 通常采用最小化配置,如果您需要对内置 Connector 配置进行修改,可以参考 Trino 官方文档 的 Connector 配置说明,并在 EMR 控制台“集群详情 > 服务列表 > Trino > 服务参数”中对具体 Connector 的配置进行调整。

自定义 Connector

如果内置 Connector 不能满足您的需求,EMR 也支持您在控制台侧自定义 Connector 配置。您可以在 EMR 控制台“集群详情 > 服务列表 > Trino > 服务参数”页面找到并编辑 custom-connector.properties 配置文件,通过“添加自定义参数”添加自定义 Connector 配置。
Image
如上图所示演示了添加 MySQL Connector 的自定义配置,其中:

  • 参数名称:目标数据源在 Trino 中的 Catalog 名称。
  • 参数值:目标数据源的 Connector 配置,可以参考 Trino 官方文档

资源组配置

Trino 支持资源组配置以限制资源的使用,尽量避免 SQL 任务因资源不足而失败,详细介绍可以参考 Trino 官方文档
如果您希望对 Trino 资源组进行配置,可以在 EMR 控制台“集群详情 > 服务列表 > Trino > 服务参数”页面修改 resource-groups.json 配置文件的参数值(JSON 格式)。如下图所示:
Image

基于 HAVIP 实现高可用

高可用虚拟 IP(即 HAVIP)是一种可独立持有,并根据实际业务需要随时创建或删除的私网 IP 资源。HAVIP 通常与高可用组件(如 Keepalived)搭配使用,以搭建高可用主备服务。关于 HAVIP 更详细的介绍可以参考 官方文档
对于启用了高可用(简称 HA)的集群,EMR 会在您集群的 master-1 和 master-2 节点上分别运行 Trino Coordinator,但默认只有 master-1 上的 Coordinator 提供服务。本小节将介绍如何基于“HAVIP+ Keepalived”手动配置,以实现让 master-1 和 master-2 节点上的 Coordinator 协作提供 HA 服务能力。
EMR HA 集群默认会在集群 master 节点上安装 Keepalived 组件,在具体开始配置之前您需要对 HAVIP 实例做如下配置:

  1. 已完成 HAVIP 实例的创建,且该实例需要与目标集群位于同一 VPC,如果需要跨 VPC 访问您集群的 Trino,建议为 HAVIP 实例绑定公网 IP。
  2. 已完成 HAVIP 实例与目标集群 master-1 和 master-2 ECS 实例的绑定。
  3. 已完成 HAVIP 访问域名申请和配置,现阶段这一步需要您联系火山 EMR 同学进行处理

本小节使用到的 HAVIP 基本信息如下:

属性

私网 IP

192.168.3.3

访问域名

virtual.emr-d2bc78xxx.cn-beijing.emr-volces.com

Keepalived 配置

修改集群 master-1 和 master-2 节点的 /etc/emr/keepalived/conf/keepalived.conf 配置,将其中的 virtual_ipaddress 配置项替换成 HAVIP 的私网 IP,例如:

# visual ip addr
virtual_ipaddress {
    192.168.3.3
}

执行 service keepalived restart 分别重启 master-1 和 master-2 节点上的 Keepalived 服务。如果配置成功,则进入 HAVIP 控制台将看到其中一台 ECS 实例已被选举为主节点,如下图所示:
Image

Trino 配置

在控制台侧“集群详情 - 服务列表 - Trino - 服务参数”修改 CoreGroup 的 discovery.uri 配置项为通过 HAVIP 访问域名(端口不变),例如:

discovery.uri=http://virtual.emr-d2bc7871c9xxx.cn-beijing.emr-volces.com:9084

如果启用了 LDAP,则需要分别在 master-1 和 master-2 节点上执行如下指令重新生成 keystore 和 truststore 证书:

  • 生成 keystore 证书
keytool -genkeypair \
        -alias trino \
        -validity 3650 \
        -keyalg RSA \
        -keystore ${keystore_path} \
        -keypass ${keystore_pass} \
        -storepass ${keystore_pass} \
        -dname 'CN=${HAVIP 访问域名}, OU=emr, O=ByteDance, L=Beijing, ST=Beijing, C=CN'

其中 keystore_path 和 keystore_pass 可以分别在控制台侧通过 http-server.https.keystore.pathhttp-server.https.keystore.key 参数获取。生成 keystore 证书示例:

keytool -genkeypair \
        -alias trino \
        -validity 3650 \
        -keyalg RSA \
        -keystore /etc/emr/trino/keystore/keystore.jks \
        -keypass ****** \
        -storepass ****** \
        -dname 'CN=virtual.emr-d2bc78xxx.cn-beijing.emr-volces.com, OU=emr, O=ByteDance, L=Beijing, ST=Beijing, C=CN'
  • 生成 truststore 证书
keytool -import -v -trustcacerts \
        -alias trino_trust \
        -validity 3650 \
        -file ${ldap_cert_path} \
        -keystore ${truststore_path} \
        -storepass ${truststore_pass} \
        -keypass ${truststore_pass} \
        -noprompt

其中 ldap_cert_path、truststore_path 和 truststore_pass 可以分别在控制台侧通过 trino.ldap-cert-pathhttp-server.https.truststore.pathhttp-server.https.truststore.key 参数获取。生成 truststore 证书示例:

keytool -import -v -trustcacerts \
        -alias trino_trust \
        -validity 3650 \
        -file /etc/emr/openldap/conf/CA/ldap.cert.pem \
        -keystore /etc/emr/trino/truststore/truststore.jks \
        -storepass ****** \
        -keypass ****** \
        -noprompt

执行完上述操作后需要重启 Trino 服务,然后将 --server 参数设置为 HAVIP 访问域名后连接 Trino 集群,例如:

trino \
  --server https://virtual.emr-d2bc787xxx.cn-beijing.emr-volces.com:9085 \
  --user zhenchao \
  --password

HA 切换

当主节点宕机时 HAVIP 会自动重新选主,如果只是主节点上的 Coordinator 服务异常,则可以在该节点上通过手动执行 service keepalived restart 触发主节点切换,正常情况下 Trino 将自动切换到新的主节点上的 Coordinator 提供服务,这一操作默认对客户端透明。

使用限制

基于 HAVIP 实现 Trino 高可用的同时也存在如下限制,您需要事先评估以决定是否采用:

  1. 如果同一个 HAVIP 实例在集群上被应用于多个组件的 HA 方案,则在异常情况下可能存在相互干扰的风险,尤其是配置了自动故障切换的场景,极端情况下会导致故障切换死循环。
  2. HAVIP 服务目前处于邀测状态,您需要通过申请才能使用该服务,且限制每个 VPC 最多允许创建 5 个 HAVIP 实例。