在纱线模式下运行的 Spark 作业显示很少的任务失败,原因如下:
执行程序丢失失败(执行程序 36 由其中一个正在运行的任务退出( 原因:容器标记为失败:主机上的container_xxxxxxxxxx_yyyy_01_000054:ip-xxx-yy-zzz-zz。退出状态:-100。诊断:容器在*丢失*节点上释放
知道为什么会这样吗?
主要有两个原因。
- 可能是因为你的内存纱线容器所需的开销不够,解决办法是增加
spark.executor.memoryOverhead
- 可能是因为从节点磁盘没有足够的空间来写入 Spark 所需的 tmp 数据。 检查您的 yarn 用户缓存目录(对于 EMR,它位于
/mnt/yarn/usercache/
上(,
或键入df -h
以检查磁盘剩余空间。
被框架杀死的容器,无论是由于应用程序释放还是由于节点故障等原因而"丢失",都有一个特殊的退出代码 -100。节点故障可能是由于磁盘空间或执行程序内存不足。
您的集群不在 AWS 上,但作为 AWS 经理,MR 集群他们发布了常见问题解答
对于胶水作业:https://aws.amazon.com/premiumsupport/knowledge-center/container-released-lost-node-100-glue/
对于电子病历:https://aws.amazon.com/premiumsupport/knowledge-center/emr-exit-status-100-lost-node/