包含Trino组件的集群,当查询速度不符合数据处理要求,或某些大查询超出内存总量限制,且调整配置参数也不足以应对使用场景时,可以尝试进行扩容,通过新增Worker节点数的方式来增加Worker数量,从而满足业务需求。当业务高峰期已过或者当更少的资源也能满足业务需求时,可再进行缩容,以节约成本。本文介绍如何对Trino集群进行扩缩容。
注意事项
目前EMR集群在扩容时,不能单独选择仅扩充某个组件,而是会使已安装的所有组件一起在新节点触发扩容与初始化操作。如果您的集群是Trino与Hadoop等组件混合部署的,在扩容之前需要谨慎考虑。
扩容前准备
Trino在扩容时能够同步组件本身以及绝大部分配置项。但是,新增的UDF包、手动替换的JAR包、手动升级的组件(例如JindoSDK)、自行添加的Event Listener等无法在扩容时同步到新节点上。为避免在扩容后某些查询失败或结果不符合预期,建议将这些操作都编写成脚本,在新节点创建过程中脚本会自动执行。详情请参见管理引导操作。
扩缩容操作
扩容后操作
扩容完成之后,新节点会自动加入集群。可以执行select * from system.runtime.nodes
命令查看集群中的节点状态。
如果在调整配置时,曾单独调整过节点组或节点配置(而非使用集群默认配置),也需要为新节点或节点组重新配置。例如,之前仅为Core节点组单独调整过内存,Task节点组的内存需要重新调整。
如果部分操作无法编写脚本,在扩容之后需要手动重新操作一遍。例如,如果之前使用了动态加载UDF操作增加过UDF,且不方便将此操作编辑成脚本,就需要在扩容之后先DROP JAR,再重新添加。此时执行DROP JAR可能会报错,这是因为在新扩容的节点上未找到对应的JAR,忽略即可。包含对应JAR的Worker节点均能够成功执行此操作。