【问题标题】:Hadoop Mapper is failing because of "Container killed by the ApplicationMaster"Hadoop Mapper 因“容器被 ApplicationMaster 杀死”而失败
【发布时间】:2015-12-09 03:13:35
【问题描述】:

我正在尝试在 Hadoop 上执行 map reduce 程序。

当我将我的工作提交到 hadoop 单节点集群时。正在创建作业,但消息失败

“被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

我的映射器正在触发另一个程序,它将在这里处理我的输入文件。被mapper触发的程序通常会消耗大量内存。

所以请在这方面帮助我。

【问题讨论】:

  • 您好 user3854185,您能否分享一下您是如何清除此错误的。我也面临同样的问题?

标签: java linux hadoop mapreduce


【解决方案1】:

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>

【讨论】:

    【解决方案2】:

    容器是一个纱线 JVM 进程。在 Mapreduce 应用主服务中,mapper 和 reducer 任务都是在 yarn 框架内执行的容器。

    您可以通过增加 reducer 的数量(例如 mapreduce.job.reduces=10)或增加 reduce 堆大小(mapreduce.reduce.java.opts=-Xmx2014m)来解决此问题

    如果您希望在运行时拥有固定数量的 reducer,您可以在命令行传递 Map/Reduce 作业时执行此操作。使用带有所需数量的-D mapreduce.job.reduces=10 将在运行时产生那么多reducer。

    在代码中,你可以配置JobConf变量来设置mapper和reducer的数量。假设我们有 JobConf 变量作为工作。

    Configuration conf = new Configuration();
    Job job = new Job(conf);
    job.setNumReduceTasks(10); // 10 reducers
    

    您还可以针对此特定作业将文件拆分为较小的大小以避免内存问题。

    如果还是有问题,请查看 yarn 日志并发布日志。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      相关资源
      最近更新 更多