Google Dataproc 超时​​并终止执行程序

Google Dataproc timing out and killing excutors

我有一个 google dataproc spark 集群,设置了一个主节点和 16 个工作节点。 master 有 2 个 cpu 和 13g 内存,每个 worker 有 2 个 cpu 和 3.5g 内存。我 运行 是一项网络密集型工作,我有一个包含 16 个对象的数组,我将这个数组分成 16 个分区,这样每个工作人员都能得到一个对象。这些对象发出大约 250 万个 Web 请求,并将它们聚合起来发送回主服务器。每个请求都是一个 Solr 响应,并且小于 50k。响应中的一个字段(ID,作为字符串)被提取并添加到列表中以发送回主服务器。此过程将在大约 1-2 小时内完成。

但是,在执行过程中的某个时刻,我不断收到一个错误,即 master 丢失了一个执行者的心跳并杀死了它。除了超时之外,没有更多的详细信息发送给 master,并且 worker 的日志显示它只是 运行 正常。我尝试安装 stackdriver 监控以查看这是否是 RAM 问题,但代理延迟超过一个小时,而它应该最多 2 分钟,所以我没有任何最新的内存信息。

有人知道为什么会这样吗?我的想法是网络端口可能被作业淹没,因此实例无法发送心跳或实例指标,可能是 RAM 问题(我尝试的大多数 RAM 值都出现相同的错误),或者有一些Google 方面的问题。

感谢@Dennis 的评论,我设法发现执行者被杀死时抛出了 OOM 异常。我以前从未见过它,因为这个错误只是在标准输出中输出,而不是人们所期望的任何错误日志。