火山引擎 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 不能满足您的需求,EMR 也支持您在控制台侧自定义 Connector 配置。您可以在 EMR 控制台“集群详情 > 服务列表 > Trino > 服务参数”页面找到并编辑 custom-connector.properties 配置文件,通过“添加自定义参数”添加自定义 Connector 配置。
如上图所示演示了添加 MySQL Connector 的自定义配置,其中:
Trino 支持资源组配置以限制资源的使用,尽量避免 SQL 任务因资源不足而失败,详细介绍可以参考 Trino 官方文档。
如果您希望对 Trino 资源组进行配置,可以在 EMR 控制台“集群详情 > 服务列表 > Trino > 服务参数”页面修改 resource-groups.json 配置文件的参数值(JSON 格式)。如下图所示:
高可用虚拟 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 实例做如下配置:
本小节使用到的 HAVIP 基本信息如下:
属性 | 值 |
|---|---|
私网 IP | 192.168.3.3 |
访问域名 | virtual.emr-d2bc78xxx.cn-beijing.emr-volces.com |
修改集群 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 实例已被选举为主节点,如下图所示:
在控制台侧“集群详情 - 服务列表 - Trino - 服务参数”修改 CoreGroup 的 discovery.uri 配置项为通过 HAVIP 访问域名(端口不变),例如:
discovery.uri=http://virtual.emr-d2bc7871c9xxx.cn-beijing.emr-volces.com:9084
如果启用了 LDAP,则需要分别在 master-1 和 master-2 节点上执行如下指令重新生成 keystore 和 truststore 证书:
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.path 和 http-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'
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-path、http-server.https.truststore.path 和 http-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
当主节点宕机时 HAVIP 会自动重新选主,如果只是主节点上的 Coordinator 服务异常,则可以在该节点上通过手动执行 service keepalived restart 触发主节点切换,正常情况下 Trino 将自动切换到新的主节点上的 Coordinator 提供服务,这一操作默认对客户端透明。
基于 HAVIP 实现 Trino 高可用的同时也存在如下限制,您需要事先评估以决定是否采用: