问题导读:
1.遇到问题该如何排除错误?
2.看不到namenode的可能原因是什么?
3.地址占用该如何解决?
4.could only be replicatied to 0 nodes, instead of 1的可能原因是什么,该如何解决?
5.通过localhost.localdomain根本无法映射到一个IP地址,会报什么错误?

遇到问题以后先查看日志,以下是常见的错误情况及解决方法,希望对大家有所帮助。

1、启动hadoop时没有NameNode的可能原因:
(1) NameNode没有格式化
(2) 环境变量配置错误
(3) Ip和hostname绑定失败
(4)hostname含有特殊符号如何.(符号点),会被误解析

2、地址占用
报错:org.apache.hadoop.hdfs.server.namenode.NameNode: Address already in use
解决方法:查找被占用的端口号对应的PID:netstat –tunl
  Pkill -9 PID
  实在不行就killall -9 java

3、safeMode
报错:

bin/hadoop fs -put ./input input
put: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/root/input. Name node is in safe mode.
hadoop dfsadmin -safemode leave

解决方法:
NameNode在启动的时候首先进入安全模式,如果dataNode丢失的block达到一定的比例(1-dfs.safemode.threshold.pct),则系统一直处于安全模式状态,即只读状态。
dfs.safemode.threshold.pct(缺省值0.999f)表示HDFS启动的时候,如果DataNode上报的block个数达到了元数据记录的block个数的0999倍才可以离开安全模式,否则一直是这种只读模式。如果设置为1,则HDFS一直处于安全模式。

下面这行摘录自NameNode启动时的日志(block上报比例1达到了阈值0.999)

The ratio of reported blocks 1.0000 has reached the threshold 0.9990. Safe mode will be turned off automatically in 14 seconds.

有两种方法离开这种安全模式:
(1) 修改dfs.safeMode.threshold.pct为一个比较小的值,缺省是0.999;
(2) hadoop dfsadmin –safemode leave命令强制离开

用户可通过dfsadmin –safemode value来操作安全模式,参数value说明如下:
Enter : 进入安全模式
Leave :强制NameNode离开安全模式
Get : 返回安全模式是否开启的信息
Wait:等待,一直到安全模式结束。

4、could only be replicatied to 0 nodes, instead of 1
报错:
hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop
.ipc.RemoteException: java.io.IOException: ... could only be replicated to 0 nodes, instead of 1 ...
可能出现的现象:用jps查看进程都正常。但是用web查看的话,live nodes 为0,这说明datanode没有正常启动,可是datanode进程又启动了。

解决方法1:
(1) 防火墙原因:
           永久关闭防火墙命令:chkconfig iptables stop
(2)namespaceid不一致
(3) 磁盘空间原因:
           df –ah      #查看磁盘空间
如果是磁盘空间不够,则调整磁盘空间(像下图就是磁盘空间不够)
<ignore_js_op>

如果上述方法不行,可用以下方法(只不过会丢失数据,慎用)
A. 先运行stop-all.sh
B. 格式化namenode,不过在这之前先删除原目录,
即core-site.xml下配置的<name>hadoop.tmp.dir</name>指向的目录,
删除后切记重新建立配置的空目录,然后运行命令hadoop namenode-format。

解决方法2:

  • 删除所有节点dfs.data.dir和dfs.tmp.dir目录(默认为tmp/dfs/data和tmp/dfs/tmp)下的数据文件;然后重新hadoop namenode -format 格式化节点;然后启动。
  • 如果是端口访问的问题,你应该确保所用的端口都打开,比如hdfs://machine1:9000/、50030、50070之类的。执行#iptables -I INPUT -p tcp --dport 9000 -j ACCEPT 命令。如果还有报错:hdfs.DFSClient: Exception in createBlockOutputStream java.net.ConnectException: Connection refused;应该是datanode上的端口不能访问,到datanode上修改iptables:#iptables -I INPUT -s machine1 -p tcp -j ACCEPT
  • 还有可能是防火墙的限制集群间的互相通信。尝试关闭防火墙。/etc/init.d/iptables stop
  • 最后还有可能磁盘空间不够了,请查看 df -al
  • 我在解决这个问题的时候还有人说:先后启动namenode、datanode可以解决这个问题(本人尝试发现没用,大家可以试试)$hadoop-daemon.sh start namenode ; $hadoop-daemon.sh start datanode

5、启动时报错java.net. UnknownHostException
原因分析:通过localhost.localdomain根本无法映射到一个IP地址。
解决方法:查看/etc/hosts,将主机名hostname添加到hosts文件中。

6、启动时报错: java.io.IOException: File jobtracker.info could only be replicated to 0 nodes, instead of 1。
解决方法:
首先,检查防火墙是否关闭,是否对各节点的通信产生了影响;
其次,可以检查namenode和datanode中的namespaceID的值是否相同,在不同的情况下,会造成该问题,修改为相同的值后,重启该节点;
然后,将safemode设置为off状态
Hadoop dfsadmin –safemode leave
此外,还需检查/etc/hosts文件中主机名的映射是否正确,不要使用127.0.0.1或localhost。
将safemode设置为off状态可以有两种方法:
执行上面的命令可以强制设置为off状态,或者在hdfs-site.xml文件中添加如下代码,将safemode的threshold.pct设置为较小的值,这种方法避免了在执行hadoop过程中经常性遇到错误Name node is in safe mode而导致需强制将safemode置为off。

  1. <property>
  2. <name>dfs.safemode.threshold.pct</name>
  3. <value>0.95f</value>
  4. </property>

复制代码

7、ip和域名解析问题
也会造成File jobtracker.info could only be replicated to 0 nodes, instead of 1的问题,此时要检查/etc/hosts文件中主机名的映射是否正确,不要使用127.0.0.1或localhost。

8、报错:Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.
结果:执行任务时,任务卡死在reduce上,不执行。
原因:任务会在最后将所有的reduce task 复制到一台机器上,做最后总的reduce,此时需要ip和主机域名的配置正确。
解决方法:将个节点的ip和主机名配置正确,不能使用127.0.0.1或localhost,使用内网ip可加快通信速度。

9、hive执行报错: java.lang.OutOfMemoryError: GC overhead limit exceeded
原因:
这个是jdk6新增的错误类型,是发生在GC占用大量时间为释放很小空间的时候发生的,是一种保护机制。
解决方法:
关闭该功能,可以添加JVM的启动参数来限制使用内存:
在mapred-site.xml里新增项:mapred.child.java.opts,
内容:-XX:-UseGCOverheadLimit

10、datanode节点TaskTracker任务启动,但是DataNode任务为启动

这一般是由于对hadoop进行升级后导致的,需要删除hadoop.tmp.dir所对应的文件夹,然后对namenode重新格式化,删除之前先将数据导出,否则数据就over了。

上一篇:
hadoop常见错误汇总及解决办法一

下一篇:

hadoop常见错误总结三

Hadoop常见错误问题及解决方法总结二的更多相关文章

  1. hadoop常见错误汇总及解决办法一

    我们经常会遇到一些问题,而且可能会重复性遇到,这些方案可以收藏为以后备用.我们经常遇到如下问题:1.两次以上格式化造成NameNode 和 DataNode namespaceID 不一致,有几种解决 ...

  2. coreseek常见错误原因及解决方法

    coreseek常见错误原因及解决方法 Coreseek 中文全文检索引擎 Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和 ...

  3. Excel公式的常见错误值及其解决方法

    Excel公式的常见错误值及其解决方法 经常用Excel的朋友可能都会遇到一些莫名奇妙的错误值信息:# N/A!.#VALUE!.#DIV/O!等等,出现这些错误的原因有很多种,如果公式不能计算正确结 ...

  4. 【原创】XAF 常见错误以及对应解决方法

    1.Appearance Criteria设置错误 Exception occurs while assigning the 'DetailView, ID:xxx_DetailView' view ...

  5. CentOS编译PHP过程中常见错误信息的解决方法

    原文链接:http://www.linuxidc.com/Linux/2014-05/102327.htm ********************************************** ...

  6. java Web 常见错误集锦 及解决方法

    只能删除pid为整数的商品,32位的pid商品不能删除? 原因onclick="agree('${s.pid}')"  括号中需要加 ' ' 删除多余的工作空间? 使用prefer ...

  7. PHP编译过程中常见错误信息的解决方法

    在CentOS编译PHP5的时候有时会遇到以下的一些错误信息,基本上都可以通过yum安装相应的库来解决.以下是具体的一些解决办法: checking for BZip2 support… yes ch ...

  8. hadoop常见错误总结三

    问题导读:1.... could only be replicated to 0 nodes, instead of 1 ...可能的原因是什么?2.Error: java.lang.NullPoin ...

  9. hadoop常见错误

    hadoop常见错误集锦: 1.DataXceiver error processing WRITE_BLOCK operation ERROR org.apache.hadoop.hdfs.serv ...

随机推荐

  1. PHP处理MySQL事务代码

    php使用mysqli进行事务处理 <?php$db = new mysqli("localhost","root",""," ...

  2. Linux运维第二天:安装虚拟机软件及RHEL7.2 64位系统

    第一步:安装虚拟机 一路默认就行啦(还是要改下安装路径,嘿嘿) 第二步:安装RHEL7.2 64位系统 1.新建一个虚拟机 典型和自定义随便选(最后都可以调的) 一般大婶都喜欢选自定义(自己可以设置的 ...

  3. 三十 Python分布式爬虫打造搜索引擎Scrapy精讲—将selenium操作谷歌浏览器集成到scrapy中

    1.爬虫文件 dispatcher.connect()信号分发器,第一个参数信号触发函数,第二个参数是触发信号,signals.spider_closed是爬虫结束信号 # -*- coding: u ...

  4. Jdev 本地RUN页面时候,将异常直接显示出来,而不是乱码

    本地运行页面时,经常会遇到以下错误 oracle.jbo.JboException: JBO-29000: JBO-29000: JBO-26028: ???? MemberAttributesDis ...

  5. 共用y轴的双图形绘制

    实现这种形式的图形,可通过matplotlib和pandas的实现,相比下pandas实现方便的多. 我数据分析的时候主要是stacked bar.bar和line形式的放在一张图上.stacked ...

  6. http请求的GET和POST请求:查询和新增(ajax)

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  7. python文件名不要跟模块名相同,报错AttributeError: 'module' object has no attribute 'Differ'

    python中的文件都会生成pyc文件,包括模块也是这样,所以调用模块的时候,实际上会调用模块.pyc文件:在这个前提下,如果将文件名命名成跟模块名一样,在同一目录下就会生成一个跟模块名一样的pyc文 ...

  8. C++中几个值得分析的小问题(2)

    下面有3个小问题,作为C++ Beginner你一定要知道错在哪里了. 1.派生类到基类的引用或指针转换一定“完美”存在? 一般情况,你很可能会认为:派生类对象的引用或指针转换为基类对象的引用或指针是 ...

  9. Python模块化

    在Python中,一个.py文件就称之为一个模块(Module). 模块化的好处: 1.大大提高了代码的可维护性. 2.编写代码不必从零开始.当一个模块编写完毕,就可以被其他地方引用.我们在编写程序的 ...

  10. [转载]latex插入两栏的图形或表格

    转载自:http://blog.csdn.net/huilingwu/article/details/51649250 latex进行两栏排版时,有时会遇到一些宽度较大的图形或表格,没办法挤在一栏中, ...