遇到的问题描述:在hadoop上面执行程序,程序运行之后能够正常执行。一切似乎都是正常的,然而过了一段时间之后程序便开始阻塞直到程序超时退出(如下)。

  1. 14/08/19 21:17:51 INFO mapred.JobClient: map 99% reduce 71%
  2. 14/08/19 21:17:54 INFO mapred.JobClient: map 99% reduce 75%
  3. 14/08/19 21:17:57 INFO mapred.JobClient: map 99% reduce 79%
  4. 14/08/19 21:18:00 INFO mapred.JobClient: map 99% reduce 83%
  5. 14/08/19 21:18:03 INFO mapred.JobClient: map 99% reduce 87%
  6. 14/08/19 21:18:06 INFO mapred.JobClient: map 99% reduce 91%

出现这个问题是因为程序出现了一些异常,导致task执行失败,然而hadoop并不退出也不重启task。

异常一:程序玻本身的错误

  1. attempt_201408192045_0002_m_000196_2: [2014-08-19 21:16:44 WARN ] [main] (org.apache.hadoop.mapred.Child:291) - Error running child
  2. attempt_201408192045_0002_m_000196_2: java.io.IOException: Index: 0, Size: 0
  3. attempt_201408192045_0002_m_000196_2: at com.ict.hadoop.WXExtraction$Map.map(WXExtraction.java:61)
  4. attempt_201408192045_0002_m_000196_2: at com.ict.hadoop.WXExtraction$Map.map(WXExtraction.java:1)
  5. attempt_201408192045_0002_m_000196_2: at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
  6. attempt_201408192045_0002_m_000196_2: at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:391)
  7. attempt_201408192045_0002_m_000196_2: at org.apache.hadoop.mapred.MapTask.run(MapTask.java:325)
  8. attempt_201408192045_0002_m_000196_2: at org.apache.hadoop.mapred.Child$4.run(Child.java:270)
  9. attempt_201408192045_0002_m_000196_2: at java.security.AccessController.doPrivileged(Native Method)
  10. attempt_201408192045_0002_m_000196_2: at javax.security.auth.Subject.doAs(Subject.java:416)
  11. attempt_201408192045_0002_m_000196_2: at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1127)
  12. attempt_201408192045_0002_m_000196_2: at org.apache.hadoop.mapred.Child.main(Child.java:264)
  13. attempt_201408192045_0002_m_000196_2: Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
  14. attempt_201408192045_0002_m_000196_2: at java.util.ArrayList.rangeCheck(ArrayList.java:571)
  15. attempt_201408192045_0002_m_000196_2: at java.util.ArrayList.get(ArrayList.java:349)
  16. attempt_201408192045_0002_m_000196_2: at com.ict.wxparser.parser.WXParser.getMsgContent(WXParser.java:188)
  17. attempt_201408192045_0002_m_000196_2: at com.ict.wxparser.parser.WXParser.parseLine(WXParser.java:137)
  18. attempt_201408192045_0002_m_000196_2: at com.ict.hadoop.WXExtraction$Map.map(WXExtraction.java:57)
  19. attempt_201408192045_0002_m_000196_2: ... 9 more
  20. 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
  21. 14/08/19 21:17:18 INFO mapred.JobClient: Task Id : attempt_201408192045_0002_m_000196_3, Status : FAILED
  22. java.io.IOException: Index: 0, Size: 0
  23. at com.ict.hadoop.WXExtraction$Map.map(WXExtraction.java:61)
  24. at com.ict.hadoop.WXExtraction$Map.map(WXExtraction.java:1)
  25. at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
  26. at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:391)
  27. at org.apache.hadoop.mapred.MapTask.run(MapTask.java:325)
  28. at org.apache.hadoop.mapred.Child$4.run(Child.java:270)
  29. at java.security.AccessController.doPrivileged(Native Method)
  30. at javax.security.auth.Subject.doAs(Subject.java:416)
  31. at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1127)
  32. at org.apache.hadoop.mapred.Child.main(Child.java:264)
  33. Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
  34. at java.util.ArrayList.rangeCheck(ArrayList.java:571)
  35. at java.util.ArrayList.get(ArrayList.java:349)
  36. at com.ict.wxparser.parser.WXParser.getMsgContent(WXParser.java:188)
  37. at com.ict.wxparser.parser.WXParser.parseLine(WXParser.java:137)
  38. 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)

  1. <property>
  2. <name>mapred.child.java.opts</name>
  3. <value>-Xmx2048m</value>
  4. </property>

3. 减小 mapred-site.xml中mapred.tasktracker.map.tasks.maximumde和mapred.tasktracker.reduce.tasks.maximum的值

  1. <property>
  2. <name>mapred.tasktracker.map.tasks.maximum</name>
  3. <value>15</value>
  4. </property>

Hadoop开发遇到的问题之reduce卡住的更多相关文章

  1. Ubuntu环境下eclipse的hadoop开发

    在安装好hadoop伪分布式后,开始搭建eclipse的hadoop开发环境 我的版本信息如下: Ubuntu 版本 12.10 Hadoop版本 1.2.1 Java版本  1.6.0_31(命令j ...

  2. Hadoop开发环境简介(转)

    1.Hadoop开发环境简介 1.1 Hadoop集群简介 Java版本:jdk-6u31-linux-i586.bin Linux系统:CentOS6.0 Hadoop版本:hadoop-1.0.0 ...

  3. 基于Eclipse搭建hadoop开发环境

    一.基础环境准备 1.Eclipse 下载地址:http://pan.baidu.com/s/1slArxAP 2.JDK1.8  下载地址:http://pan.baidu.com/s/1i5iNy ...

  4. 搭建基于MyEclipse的Hadoop开发环境

    不多说,直接上干货! 前面我们已经搭建了一个伪分布模式的Hadoop运行环境.请移步, hadoop-2.2.0.tar.gz的伪分布集群环境搭建(单节点) 我们绝大多数都习惯在Eclipse或MyE ...

  5. Hadoop开发相关问题

    总结自己在Hadoop开发中遇到的问题,主要在mapreduce代码执行方面.大部分来自日常代码执行错误的解决方法,还有一些是对Java.Hadoop剖析.对于问题,通过查询stackoverflow ...

  6. hadoop开发环境部署——通过eclipse远程连接hadoop2.7.3进行开发

    一.前言 环境: 系统:centos6.5 hadoop版本:Apache hadoop2.7.3(Windows和centos都是同一个) eclipse版本:4.2.0(juno版本,window ...

  7. 在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 ...

  8. [原创] 毕设---在myeclipes中安装Hadoop开发插件

    1.安装Hadoop开发插件 hadoop安装包contrib/目录下有个插件hadoop-0.20.2-eclipse-plugin.jar,拷贝到myeclipse根目录下/dropins目录下. ...

  9. 使用HDP快速搭建Hadoop开发环境 | Debugo

    本文简单记录了一下使用VMware workstation 10.CentOS和HDP 2.0.6(Hadoop 2.2)发行版构建Hadoop开发测试环境的全部流程.这个过程中我遇到了不少问题,也耽 ...

随机推荐

  1. [置顶] 【Git入门之十一】标签管理

    原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12309731 标签是啥?标签就是给某个版本的一个标记. 1.为当前版本创建标 ...

  2. [Qt] Mask 蒙版

    [Qt] Mask 蒙版 Mask能够覆盖在其他的widget上面,实现一些动态图片的加载效果.下面给出代码. mask.h #ifndef MASK_HJ #define MASK_HJ #incl ...

  3. Java体系总结

    一.Java SE部分 1.java基础:基础语法:面向对象(重点):集合框架(重点):常见类库API: 2.java界面编程:AWT:事件机制:Swing: 3.java高级知识:Annotatio ...

  4. DevExpress之时间控件

    dateEdit和timeEdit 基本属性 DisplayFormat.FormatString-------失去焦点是控件显示的格式,timeEdit用不上 EditMask----------- ...

  5. 设计模式16---设计模式之组合模式(Composite)(行为型)

    1.场景模拟 使用软件模拟大树的根节点和树枝节点和叶子节点 抽象为两类,容器节点和叶子节点 2.不用模式的解决方案 package demo14.composite.example1; import ...

  6. SD卡中FAT32文件格式高速入门(图文具体介绍)

    说明: MBR :Master Boot Record ( 主引导记录) DBR :DOS Boot Record ( 引导扇区) FAT :File Allocation Table ( 文件分配表 ...

  7. iOS蓝牙4.0协议简单介绍

    iOS开发蓝牙4.0的框架是CoreBluetooth,本文主要介绍CoreBluetooth的使用,关于本文中的代码片段大多来自github上的一个demo,地址是myz1104/Bluetooth ...

  8. Vim的设置和使用——编程者

    一.第一个插件:Ctags 当我们看到一个陌生的变量或者函数,我们总想知道它的含义,因此,快速找到它的定义很重要.Ctags插件中的"Ctrl+]"快捷键就可以做到. 二.教你高效 ...

  9. Altium Designer极坐标布局方法

    1.键盘快捷组合 O+G,打开栅格管理器,点击左下角的“菜单”,在对话框中的选择“添加极坐标栅格”. 2.双击新添加的优先等级为1的栅格,在弹出的polar  grid editor 对话框中,对里边 ...

  10. [Leetcode][048] Rotate Image 略详细 (Java)

    题目在这里 https://leetcode.com/problems/rotate-image/ [个人分析] 这个题目,我觉得就是考察基本功.考察细心的,算法方面没有太多东西,但是对于坐标的使用有 ...