不同于其它服务组件,Trino 对配置项采取严格校验的策略,只要配置项的变更没有通过 Trino 校验(例如配置项的名称或值不能被识别、配置项冗余等),都会导致服务无法正常启动。因此在变更配置前,您需要仔细检查配置项是否正确,一旦出现因为服务参数变更导致的服务启动异常可以先回滚操作,检查正确后再重新配置。
通常 keystore 证书的变更对用户而言是透明,EMR 会在每次启动 Trino 服务时校验 keystore 证书的有效性,如果出现如下情况将会重新生成新的 keystore 证书:
keystore 证书过期。
Keystore 证书文件损坏。
keystore 密码发生变更。
如果您是将 keystore 证书文件拷贝到其它节点或本地使用,当 keystore 证书被刷新后需要您主动同步更新后的 keystore 证书文件。
当集群级别内存限制耗尽时会出现此问题,解决方法是调大 query.max-memory
参数值。该参数是集群级别的限制,表示查询可以在所有节点上聚合的最大内存。
解决方法是将参数 query.max-memory-per-node
值增加到工作节点所在实例内存的 40%,该参数决定查询可以在节点上使用的最大内存。
以下是避免内存问题的建议:
对于 join 操作,当较大的表在右侧时任务可能会出错。因此理想的情况是在 join 的右侧放置较小的表,将较大的表放在左侧。
Join 和 Aggregation 构建 HashTable 是比较耗 CPU 和内存的算子,因此建议如果数据量较大时建议开启 spill 策略。