我正在presto上的tpch 100gb数据集上执行一些查询,我有4个节点,1个主节点,3个工作节点。当我尝试运行一些查询(不是全部(时,我在 Presto Web 界面上看到节点在执行过程中死亡,导致查询失败,错误如下:
.facebook.presto.operator.PageTransportTimeoutException:与工作节点通信时遇到太多错误。节点可能已崩溃或负载过大。这可能是暂时性问题,因此请在几分钟后重试查询。
我重新启动了所有节点和presto服务,但错误仍然存在,如果我对较小的数据集运行相同的查询,则不存在此问题。有人可以就此问题提供一些帮助吗?
谢谢
这种错误的3个可能原因。您可以 ssh 到其中一个工作线程,以找出查询运行时的问题所在。
高处理器
将
task.concurrency
调低至,例如,8高内存
在
jvm.config
中,-Xmx
内存总量不应超过80%。在config.properties
中,query.max-memory-per-node
不应超过Xmx
数的一半。打开文件限制低
在
/etc/security/limits.conf
中为 Presto 进程设置一个更大的数字。默认值肯定太低了。
这可能是配置问题。例如,如果未正确设置本地最大内存,并且查询使用过多的堆内存,则 full GC 可能会导致此类错误。我建议在Presto Google组中询问并描述某种方法来重现该问题:)
我在Mac上运行presto,内存为16GB 下面是java.config文件的配置。
-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
即使运行查询,我也收到以下错误
选择现在((;
Query 20200817_134204_00005_ud7tk failed: Encountered too many errors talking to a worker node. The node may have crashed or be under too much load. This is probably a transient issue, so please retry your query in a few minutes.
我将 -Xmx16G 值更改为 -Xmx10G,它工作正常。
我使用以下链接在我的系统上安装 presto。
Presto 安装链接