MapReduce运行问题记录

本文记录了在MapReduce运行过程中遇到的配置问题和代码问题,包括只能本地运行、内存溢出、JobHistory设置异常及序列化错误。针对这些问题,提供了详细的解决方法,如修改YARN和MapReduce配置,解决内存分配问题,以及修复序列化和Key类的compareTo方法。
摘要由CSDN通过智能技术生成

配置问题

1.只能本地运行

具体问题

通过hadoop jar的方式提交jar包,但是只能本地运行Local_job。

解决方法

hadoop部署包下/etc/hadoop/yarn.xml配置出错。缺少如下配置,添加即可。

<property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
    </property>

2.内存溢出

具体问题

内存超出限制,container被kill,导致任务失败。异常如下所示,在博客《Container is running beyond virtual memory limits…》中对这个问题有清楚的讲解。

Container [pid=100156,containerID=container_1513249052998_0001_02_000001] is running beyond virtual memory limits. 
Current usage: 114.4 MB of 1 GB physical memory used;
 2.2 GB of 2.1 GB virtual memory used. Killing container.

上述信息中,分配了1GB的物理内存,占用了114.4MB,未超出限制。1GB是默认分配的物理内存大小。这个值应该是由mapreduce.map.memory.mb和mapreduce.reduce.memory.mb决定。这个值设置的是 Container 的内存上限,这个参数由 NodeManager 读取并进行控制,当 Container 的内存大小超过了这个参数值,NodeManager 会负责 kill 掉 Container。

分配了2.1GB的虚拟内存,占用了2.2GB超出了限制。2.1GB是默认分配的虚拟内存大小。这个值实际上由默认物理内存大小和yarn.nodemanager.vmem-pmem-ratio决定。yarn.nodemanager.vmem-pmem-ratio表示虚拟内存和物理内存的比例,默认为2.1。

解决方法

方法1:解除虚拟内存的检查。在yarn-site.xml文件中添加设置如下,但是这个方法比较危险,可能导致集群崩坏。

<property>
  <name>yarn.nodemanager.vmem-check-enabled</name>
  <value>false</value>
  <description>Whether virtual memory limits will be enforced for containers.</description>
</property>

方法2:在mapred-site.xml文件中添加设置,增大默认的物理内存大小(mapreduce.map.memory.mb和mapreduce.reduce.memory.mb),注意,这个值不能超过yarn.scheduler.maximum-allocation-mb(可以通过yarn-site.xml设置)的大小;在yarn-site.xml文件中添加设置,增大虚拟内存/物理内存比例(yarn.nodemanager.vmem-pmem-ratio)。

最终,我在mapred-site.xml文件中增大了物理内存,另外还增加了mapreduce.map.java.opts和mapreduce.reduce.java.opts的设置。在《mapreduce on yarn简单内存分配解释》中有比较清除的解释,如下:

以map任务为例,Container其实就是在执行一个脚本文件,而脚本文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值