EMR Trino集群启用Hive Catalog缓存后主节点无法连接核心节点
解决AWS EMR启用Trino Hive Catalog缓存后Worker节点无法激活的问题
问题背景
在AWS EMR上配置Trino Hive Catalog缓存,添加以下配置到Hive连接器属性:
hive.cache.enabled=true hive.cache.location=/var/lib/trino/cache1
集群启动后执行show catalogs命令超时,报错:
Insufficient active worker nodes. Waited 5.00m for at least 1 workers, but only 0 workers are active
未添加缓存配置时集群运行正常,Coordinator日志显示缓存已完成初始化。
解决思路
1. 检查缓存目录权限
Trino Worker进程需要对hive.cache.location指定的目录拥有读写权限:
- 在Worker节点执行命令验证目录权限:
ls -ld /var/lib/trino/cache1 - 确保目录所有者为
trino用户,权限至少为750。若权限不符,可在集群启动脚本中添加如下命令提前创建并配置目录:mkdir -p /var/lib/trino/cache1 && chown trino:trino /var/lib/trino/cache1 && chmod 750 /var/lib/trino/cache1
2. 验证缓存端口可用性
缓存默认使用8898(数据传输端口)和8899(bookkeeper端口),需确保这些端口未被占用且安全组允许节点间通信:
- 检查端口占用情况:
netstat -tulpn | grep -E "8898|8899" - 若端口被占用,可在Hive连接器属性中自定义端口:
hive.cache.data-transfer-port=8900 hive.cache.bookkeeper-port=8901 - 确认EMR集群安全组允许Coordinator与Worker节点之间的TCP通信,开放上述端口。
3. 检查Worker节点磁盘空间
缓存配置中hive.cache.disk-usage-percentage=80要求Worker节点有足够磁盘空间:
- 查看磁盘使用情况:
df -h /var/lib/trino - 若剩余空间不足,清理磁盘冗余数据或降低
hive.cache.disk-usage-percentage值(例如改为70)。
4. 查看Worker节点Trino日志
Coordinator日志仅显示缓存初始化状态,Worker节点的启动失败原因需查看本地日志:
- EMR中Trino Worker日志路径通常为
/var/log/trino/,重点检查server.log和launcher.log,寻找权限错误、端口冲突、磁盘不足等具体报错信息。
5. 确认缓存配置一致性
确保所有Worker节点的Hive连接器配置与Coordinator完全一致:
- 验证Worker节点的
hive.properties文件中是否包含完整的缓存配置项,避免出现配置遗漏或不一致的情况。
内容的提问来源于stack exchange,提问作者Wenjin Ma
相关产品推荐
相关产品推荐

