【发布时间】:2020-09-23 09:41:39
【问题描述】:
我正在尝试在 EMR 上作为步骤运行我们的管道,但我被困在这一步。
EMR 集群配置:
"logPath" : "s3://ekin-logs/",
"masterInstanceType" : "m5.xlarge",
"slaveInstanceType" : "m5.xlarge",
"instanceCount" : 2,
"subnetIds" : $SUBNET_ID,
"ec2KeyName" : "ekin-analytics",
"applications" : ["Spark","Hadoop"],
步骤参数:
"args" : [
"spark-submit",
"--master", "yarn",
"--executor-memory", "8G",
"--driver-memory", "7G",
"--deploy-mode","cluster",
"--class","com.testinium.analytics.AppCommonDataSource",
"--conf","spark.eventLog.enabled=true",
"s3://analytics-emr-test/ekin-spark-app.jar",
"--prefixOutputDir", "hdfs:///home/hadoop/data/customer",
"--maxTimeGapThreshold","180000",
"--domainId", "13",
"--submitId", "1",
"--startTime" ,"1543664538237",
"--endTime", "1551994119153"
],
"jar" : "command-runner.jar",
"name" : "AppCommonDataSource",
"actionOnFailure" : "CANCEL_AND_WAIT"
起初,我收到以下错误:
ExecutorLostFailure (executor 1 退出导致其中一个正在运行 任务)原因:容器因超出内存限制而被 YARN 杀死。 使用了 10.4 GB 的 8.3 GB 物理内存。考虑提升 spark.yarn.executor.memoryOverhead 或禁用 由于 YARN-4714,yarn.nodemanager.vmem-check-enabled。
我研究了 Stack Overflow,发现人们通过在 yarn-site.xml 中添加 yarn.nodemanager.vmem-check-enabled 参数解决了这个问题。(stackoverflow solution)
我也添加了这个参数,但没有任何改变。
我的集群的yarn-site参数:
yarnProperties.put("yarn.scheduler.maximum-allocation-mb", 10240);
yarnProperties.put("yarn.nodemanager.resource.memory-mb", 10240);
yarnProperties.put("yarn.nodemanager.vmem-check-enabled", "false");
yarnProperties.put("yarn.nodemanager.pmem-check-enabled", "false");
下面这个错误是我最后得到的:
ExecutorLostFailure (executor 1 退出导致其中一个正在运行 任务)原因:来自坏节点的容器: 主机上的 container_1591270643256_0002_01_000002: ip-172-31-35-232.eu-west-1.compute.internal。退出状态:137。 诊断:容器应要求被杀死。退出代码是 137
注意:有时它仅适用于主节点。
【问题讨论】:
-
您是否在尝试相同的数据?
-
是的,每次运行集群时,我们都会从 s3 中提取相同的数据。数据为 6G,parquet 格式。
-
执行者有多少,核心有多少,平均最大文件有多大。
-
你找到解决这个问题的方法了吗?我正在为同样的错误而苦苦挣扎。
-
遇到同样的错误:WARN YarnAllocator: Container from a bad node
标签: amazon-web-services apache-spark hadoop-yarn amazon-emr