Amazon EMR - 上次作业完成后终止群集所用的时间

时间:2018-05-18 08:31:38

标签: amazon-web-services apache-spark amazon-s3 emr

我使用以下规范启动EMR群集:

  • 1个主节点m4.4xlarge,EBS存储32 GB
  • 10个核心节点m4.4xlarge,EBS Storage 1024 GB
  • 上次工作完成后自动终止

Spark作业已关联。它从S3读取数据并在S3中保存输出数据。

经过多次尝试,似乎每次Spark作业都会在大约1小时15分钟内终止(我可以看到在Spark Web UI中完成的作业,我可以看到S3中的输出是好的)。但EMR集群在关闭之前会持续20到30分钟。总的来说,需要1小时45分钟。

为什么EMR集群在上次完成任务后需要花费很长时间才能终止?

1 个答案:

答案 0 :(得分:0)

我们有一个类似的问题-在代码末尾称为spark.stop()和System.exit(),该工作已完成(正在观看它在终端中的运行),Web UI关闭,_SUCCESS令牌为编写,但应用程序只是坐在那里,仅在10-40分钟后在Hadoop Resource Manager中标记为已完成。

最终成为网络问题,我通过增加以下内容解决了该问题:

--conf spark.rpc.message.maxSize=512 (default: 128)
--conf spark.network.timeout=600 (default: 120s)
--conf spark.executor.heartbeatInterval=30s (default: 10s)

一种快速的检查方法是重复执行程序日志-我们看到了一堆以下警告提示我

yarn logs -applicationId <app_id> | grep WARN
...
WARN Executor: Issue communicating with driver in heartbeater