Hadoop 映射器因 "Container killed by the ApplicationMaster" 而失败
Hadoop Mapper is failing because of "Container killed by the ApplicationMaster"
我正在尝试在 Hadoop 上执行 map reduce 程序。
当我将作业提交到 hadoop 单节点集群时。正在创建作业,但失败并显示消息
"Container killed by the ApplicationMaster"
使用的输入大小为 10 MB。
当我使用输入文件 400 KB 的相同脚本时,它成功了。但是对于大小为 10 MB 的输入文件失败。
我的终端显示的完整日志如下。
15/05/29 09:52:16 WARN util.NativeCodeLoader: Unable to `load native- hadoop library for your platform... using builtin-java classes where applicable
Submitting job on the cluster...
15/05/29 09:52:17 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
15/05/29 09:52:18 INFO input.FileInputFormat: Total input paths to process : 1
15/05/29 09:52:18 INFO mapreduce.JobSubmitter: number of splits:1
15/05/29 09:52:19 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1432910768528_0001
15/05/29 09:52:19 INFO impl.YarnClientImpl: Submitted application application_1432910768528_0001
15/05/29 09:52:19 INFO mapreduce.Job: The url to track the job: http://localhost:8088/proxy/application_1432910768528_0001/
15/05/29 09:52:19 INFO mapreduce.Job: Running job: job_1432910768528_0001
15/05/29 09:52:29 INFO mapreduce.Job: Job job_1432910768528_0001 running in uber mode : false
15/05/29 09:52:29 INFO mapreduce.Job: map 0% reduce 0%
15/05/29 09:52:41 INFO mapreduce.Job: map 100% reduce 0%
15/05/29 10:03:01 INFO mapreduce.Job: map 0% reduce 0%
15/05/29 10:03:01 INFO mapreduce.Job: Task Id : attempt_1432910768528_0001_m_000000_0, Status : FAILED
AttemptID:attempt_1432910768528_0001_m_000000_0 Timed out after 600 secs
Container killed by the ApplicationMaster.
Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143
我这里的映射器正在触发另一个程序,它将在这里处理我的输入文件。被映射器触发的程序通常会消耗大量内存。
所以请在这方面帮助我。
一个容器就是一个yarn JVM进程。在Mapreduce应用主服务中,mapper和reducer任务都是在yarn框架内部执行的容器。
您可以通过增加缩减程序的数量(例如 mapreduce.job.reduces=10
)或增加缩减堆大小( mapreduce.reduce.java.opts=-Xmx2014m
)
来解决此问题
如果你想在 运行 时拥有固定数量的减速器,你可以在命令行传递 Map/Reduce 作业时执行此操作。使用具有所需数量的 -D mapreduce.job.reduces=10
将在 运行 时间产生那么多的减速器。
在代码中,您可以配置JobConf
变量来设置映射器和缩减器的数量。假设我们有 JobConf
变量作为工作。
Configuration conf = new Configuration();
Job job = new Job(conf);
job.setNumReduceTasks(10); // 10 reducers
您还可以针对此特定作业将文件拆分成更小的文件以避免内存问题。
如果问题仍然存在,请检查 yarn 日志和 post 日志。
在 yarn-site.xml
中包含以下属性并重新启动 VM
,
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
<description>Whether virtual memory limits will be enforced for containers</description>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>4</value>
<description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
</property>
我正在尝试在 Hadoop 上执行 map reduce 程序。
当我将作业提交到 hadoop 单节点集群时。正在创建作业,但失败并显示消息
"Container killed by the ApplicationMaster"
使用的输入大小为 10 MB。
当我使用输入文件 400 KB 的相同脚本时,它成功了。但是对于大小为 10 MB 的输入文件失败。
我的终端显示的完整日志如下。
15/05/29 09:52:16 WARN util.NativeCodeLoader: Unable to `load native- hadoop library for your platform... using builtin-java classes where applicable
Submitting job on the cluster...
15/05/29 09:52:17 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
15/05/29 09:52:18 INFO input.FileInputFormat: Total input paths to process : 1
15/05/29 09:52:18 INFO mapreduce.JobSubmitter: number of splits:1
15/05/29 09:52:19 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1432910768528_0001
15/05/29 09:52:19 INFO impl.YarnClientImpl: Submitted application application_1432910768528_0001
15/05/29 09:52:19 INFO mapreduce.Job: The url to track the job: http://localhost:8088/proxy/application_1432910768528_0001/
15/05/29 09:52:19 INFO mapreduce.Job: Running job: job_1432910768528_0001
15/05/29 09:52:29 INFO mapreduce.Job: Job job_1432910768528_0001 running in uber mode : false
15/05/29 09:52:29 INFO mapreduce.Job: map 0% reduce 0%
15/05/29 09:52:41 INFO mapreduce.Job: map 100% reduce 0%
15/05/29 10:03:01 INFO mapreduce.Job: map 0% reduce 0%
15/05/29 10:03:01 INFO mapreduce.Job: Task Id : attempt_1432910768528_0001_m_000000_0, Status : FAILED
AttemptID:attempt_1432910768528_0001_m_000000_0 Timed out after 600 secs
Container killed by the ApplicationMaster.
Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143
我这里的映射器正在触发另一个程序,它将在这里处理我的输入文件。被映射器触发的程序通常会消耗大量内存。
所以请在这方面帮助我。
一个容器就是一个yarn JVM进程。在Mapreduce应用主服务中,mapper和reducer任务都是在yarn框架内部执行的容器。
您可以通过增加缩减程序的数量(例如 mapreduce.job.reduces=10
)或增加缩减堆大小( mapreduce.reduce.java.opts=-Xmx2014m
)
如果你想在 运行 时拥有固定数量的减速器,你可以在命令行传递 Map/Reduce 作业时执行此操作。使用具有所需数量的 -D mapreduce.job.reduces=10
将在 运行 时间产生那么多的减速器。
在代码中,您可以配置JobConf
变量来设置映射器和缩减器的数量。假设我们有 JobConf
变量作为工作。
Configuration conf = new Configuration();
Job job = new Job(conf);
job.setNumReduceTasks(10); // 10 reducers
您还可以针对此特定作业将文件拆分成更小的文件以避免内存问题。
如果问题仍然存在,请检查 yarn 日志和 post 日志。
在 yarn-site.xml
中包含以下属性并重新启动 VM
,
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
<description>Whether virtual memory limits will be enforced for containers</description>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>4</value>
<description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
</property>