包含Trino组件的集群,当查询速度不符合数据处理要求,或某些大查询超出内存总量限制,且调整配置参数也不足以应对使用场景时,可以尝试进行扩容,通过新增Worker节点数的方式来增加Worker数量,从而满足业务需求。当业务高峰期已过或者当更少的资源也能满足业务需求时,可再进行缩容,以节约成本。本文介绍如何对Trino集群进行扩缩容。

注意事项

目前EMR集群在扩容时,不能单独选择仅扩充某个组件,而是会使已安装的所有组件一起在新节点触发扩容与初始化操作。如果您的集群是Trino与Hadoop等组件混合部署的,在扩容之前需要谨慎考虑。

扩容前准备

Trino在扩容时能够同步组件本身以及绝大部分配置项。但是,新增的UDF包、手动替换的JAR包、手动升级的组件(例如JindoSDK)、自行添加的Event Listener等无法在扩容时同步到新节点上。为避免在扩容后某些查询失败或结果不符合预期,建议将这些操作都编写成脚本,在新节点创建过程中脚本会自动执行。详情请参见管理引导操作

扩缩容操作

Trino扩容和缩容的详细操作,请参见扩容集群缩容集群。扩缩容操作也支持定时执行,详细信息请参见弹性伸缩概述
重要
  • 当前EMR的自动缩容操作仅支持在Task节点组上完成。如果后续有缩容需求,建议在扩容时新建Task节点组,在Task节点组中建立新节点。
  • Trino支持优雅下线,但仅可使用Restful API的方式触发,详情请参见官网文档
  • 直接缩容会导致当前正在执行的任务失败甚至卡住,建议在没有查询任务正在运行的时候执行缩容操作。如果这种情况已发生,重试失败的查询即可。

扩容后操作

扩容完成之后,新节点会自动加入集群。可以执行select * from system.runtime.nodes命令查看集群中的节点状态。

如果在调整配置时,曾单独调整过节点组或节点配置(而非使用集群默认配置),也需要为新节点或节点组重新配置。例如,之前仅为Core节点组单独调整过内存,Task节点组的内存需要重新调整。

如果部分操作无法编写脚本,在扩容之后需要手动重新操作一遍。例如,如果之前使用了动态加载UDF操作增加过UDF,且不方便将此操作编辑成脚本,就需要在扩容之后先DROP JAR,再重新添加。此时执行DROP JAR可能会报错,这是因为在新扩容的节点上未找到对应的JAR,忽略即可。包含对应JAR的Worker节点均能够成功执行此操作。