Hadoop开发遇到的问题之reduce卡住
遇到的问题描述:在hadoop上面执行程序,程序运行之后能够正常执行。一切似乎都是正常的,然而过了一段时间之后程序便开始阻塞直到程序超时退出(如下)。
14/08/19 21:17:51 INFO mapred.JobClient: map 99% reduce 71%
14/08/19 21:17:54 INFO mapred.JobClient: map 99% reduce 75%
14/08/19 21:17:57 INFO mapred.JobClient: map 99% reduce 79%
14/08/19 21:18:00 INFO mapred.JobClient: map 99% reduce 83%
14/08/19 21:18:03 INFO mapred.JobClient: map 99% reduce 87%
14/08/19 21:18:06 INFO mapred.JobClient: map 99% reduce 91%
出现这个问题是因为程序出现了一些异常,导致task执行失败,然而hadoop并不退出也不重启task。
异常一:程序玻本身的错误
attempt_201408192045_0002_m_000196_2: [2014-08-19 21:16:44 WARN ] [main] (org.apache.hadoop.mapred.Child:291) - Error running child
attempt_201408192045_0002_m_000196_2: java.io.IOException: Index: 0, Size: 0
attempt_201408192045_0002_m_000196_2: at com.ict.hadoop.WXExtraction$Map.map(WXExtraction.java:61)
attempt_201408192045_0002_m_000196_2: at com.ict.hadoop.WXExtraction$Map.map(WXExtraction.java:1)
attempt_201408192045_0002_m_000196_2: at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
attempt_201408192045_0002_m_000196_2: at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:391)
attempt_201408192045_0002_m_000196_2: at org.apache.hadoop.mapred.MapTask.run(MapTask.java:325)
attempt_201408192045_0002_m_000196_2: at org.apache.hadoop.mapred.Child$4.run(Child.java:270)
attempt_201408192045_0002_m_000196_2: at java.security.AccessController.doPrivileged(Native Method)
attempt_201408192045_0002_m_000196_2: at javax.security.auth.Subject.doAs(Subject.java:416)
attempt_201408192045_0002_m_000196_2: at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1127)
attempt_201408192045_0002_m_000196_2: at org.apache.hadoop.mapred.Child.main(Child.java:264)
attempt_201408192045_0002_m_000196_2: Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
attempt_201408192045_0002_m_000196_2: at java.util.ArrayList.rangeCheck(ArrayList.java:571)
attempt_201408192045_0002_m_000196_2: at java.util.ArrayList.get(ArrayList.java:349)
attempt_201408192045_0002_m_000196_2: at com.ict.wxparser.parser.WXParser.getMsgContent(WXParser.java:188)
attempt_201408192045_0002_m_000196_2: at com.ict.wxparser.parser.WXParser.parseLine(WXParser.java:137)
attempt_201408192045_0002_m_000196_2: at com.ict.hadoop.WXExtraction$Map.map(WXExtraction.java:57)
attempt_201408192045_0002_m_000196_2: ... 9 more
attempt_201408192045_0002_m_000196_2: [2014-08-19 21:16:44 INFO ] [main] (org.apache.hadoop.mapred.Task:956) - Runnning cleanup for the task
14/08/19 21:17:18 INFO mapred.JobClient: Task Id : attempt_201408192045_0002_m_000196_3, Status : FAILED
java.io.IOException: Index: 0, Size: 0
at com.ict.hadoop.WXExtraction$Map.map(WXExtraction.java:61)
at com.ict.hadoop.WXExtraction$Map.map(WXExtraction.java:1)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:391)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:325)
at org.apache.hadoop.mapred.Child$4.run(Child.java:270)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:416)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1127)
at org.apache.hadoop.mapred.Child.main(Child.java:264)
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:571)
at java.util.ArrayList.get(ArrayList.java:349)
at com.ict.wxparser.parser.WXParser.getMsgContent(WXParser.java:188)
at com.ict.wxparser.parser.WXParser.parseLine(WXParser.java:137)
at com.ict.hadoop.WXExtraction$Map.map(WXExtrac
解决这个问题的关键在于修改代码使得程序任务能够正常执行。
异常二:org.apache.hadoop.mapred.Child: Error running child : java.lang.OutOfMemoryError: unable to create new native thread
这个问题说明程序的内存已经溢出,这时候会抛出溢出异常,并导致程序执行失败。
解决方法:
1. 增大hadoop-env.sh 中HADOOP_HEAPSIZE的值
2 .增大 mapred-site.xml 中mapred.child.java.opts的值(默认为200M)
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx2048m</value>
</property>
3. 减小 mapred-site.xml中mapred.tasktracker.map.tasks.maximumde和mapred.tasktracker.reduce.tasks.maximum的值
<property>
<name>mapred.tasktracker.map.tasks.maximum</name>
<value>15</value>
</property>
Hadoop开发遇到的问题之reduce卡住的更多相关文章
- Ubuntu环境下eclipse的hadoop开发
在安装好hadoop伪分布式后,开始搭建eclipse的hadoop开发环境 我的版本信息如下: Ubuntu 版本 12.10 Hadoop版本 1.2.1 Java版本 1.6.0_31(命令j ...
- Hadoop开发环境简介(转)
1.Hadoop开发环境简介 1.1 Hadoop集群简介 Java版本:jdk-6u31-linux-i586.bin Linux系统:CentOS6.0 Hadoop版本:hadoop-1.0.0 ...
- 基于Eclipse搭建hadoop开发环境
一.基础环境准备 1.Eclipse 下载地址:http://pan.baidu.com/s/1slArxAP 2.JDK1.8 下载地址:http://pan.baidu.com/s/1i5iNy ...
- 搭建基于MyEclipse的Hadoop开发环境
不多说,直接上干货! 前面我们已经搭建了一个伪分布模式的Hadoop运行环境.请移步, hadoop-2.2.0.tar.gz的伪分布集群环境搭建(单节点) 我们绝大多数都习惯在Eclipse或MyE ...
- Hadoop开发相关问题
总结自己在Hadoop开发中遇到的问题,主要在mapreduce代码执行方面.大部分来自日常代码执行错误的解决方法,还有一些是对Java.Hadoop剖析.对于问题,通过查询stackoverflow ...
- hadoop开发环境部署——通过eclipse远程连接hadoop2.7.3进行开发
一.前言 环境: 系统:centos6.5 hadoop版本:Apache hadoop2.7.3(Windows和centos都是同一个) eclipse版本:4.2.0(juno版本,window ...
- 在ubuntu下使用Eclipse搭建Hadoop开发环境
一.安装准备1.JDK版本:jdk1.7.0(jdk-7-linux-i586.tar.gz)2.hadoop版本:hadoop-1.1.1(hadoop-1.1.1.tar.gz)3.eclipse ...
- [原创] 毕设---在myeclipes中安装Hadoop开发插件
1.安装Hadoop开发插件 hadoop安装包contrib/目录下有个插件hadoop-0.20.2-eclipse-plugin.jar,拷贝到myeclipse根目录下/dropins目录下. ...
- 使用HDP快速搭建Hadoop开发环境 | Debugo
本文简单记录了一下使用VMware workstation 10.CentOS和HDP 2.0.6(Hadoop 2.2)发行版构建Hadoop开发测试环境的全部流程.这个过程中我遇到了不少问题,也耽 ...
随机推荐
- 根据请求头跳转判断Android&iOS
if(navigator.userAgent.match(/Android/i)) { window.location = 'http://apk.hiapk.com/m/downloads?id=c ...
- 关于 视频同步vsync 信号在不同一时候钟域採样问题
今天调试 视频 4k(3840 x 1920)的vsync信号(时钟为 297Mhz) 进入 170Mhz 的时钟域, 发现输出来的信号信号抖动特别厉害.后来才发现这是不同一时候钟域 造成的影响. 快 ...
- MySQL加密的性能测试
这是对MySQL进行加密性能测试的两篇文章系列之二.在第一篇中,我专门使用MySQL的内置的对SSL的支持来 做压力测试,产生了一些令人惊讶的结果. AD:WOT2015 互联网运维与开发者大会 热销 ...
- Node.js 实现简单小说爬虫
最近因为剧荒,老大追了爱奇艺的一部网剧,由丁墨的同名小说<美人为馅>改编,目前已经放出两季,虽然整部剧槽点满满,但是老大看得不亦乐乎,并且在看完第二季之后跟我要小说资源,直接要奔原著去看结 ...
- (第二章)Java并发机制的底层实现原理
一.概述 Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令. ...
- Android 基于Netty的消息推送方案之概念和工作原理(二)
上一篇文章中我讲述了关于消息推送的方案以及一个基于Netty实现的一个简单的Hello World,为了更好的理解Hello World中的代码,今天我来讲解一下关于Netty中一些概念和工作原理的内 ...
- DELL RACADM 工具使用介绍
如果iDRAC的IP或者设置出现问题,不能够链接,那么可以通过RACADM这个程序在系统层面可以对iDRAC进行设置,使用的方法以及命令都在下边. RACADM provides command li ...
- 关于ajax网络请求的封装
// 封装的ajax网络请求函数// obj 是一个对象function AJAX(obj){ //跨域请求 if (obj.dataType == "jsonp") ...
- .call()和.apply()相同点与不同点
.call()和.apply()相同点与不同点 function add(a,b) { alert(a+b); } function sub(a,b) { alert(a-b); } add.call ...
- js获得url的参数
网上找的一段代码,非常好用,现在难以找到原作者,但是非常感谢!/** * 获取当前URL参数值 * @param name 参数名称 * @return 参数值 */ function ...