分享

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

我们经常会遇到一些问题,而且可能会重复性遇到,这些方案可以收藏为以后备用。我们经常遇到如下问题:
1.两次以上格式化造成NameNode 和 DataNode namespaceID 不一致,有几种解决办法?
2.如何动态添加DataNode 动态将某个节点加入到集群中
3.用window 提交eclipse 任务发现权限不通过:
4.eclipse 运行中发现 Name node is  in safe mode


1.两次以上格式化造成NameNode 和 DataNode namespaceID 不一致。

报错:ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /var/lib/hadoop-0.20/cache/hdfs/dfs/data: namenode
namespaceID = 240012870; datanode namespaceID = 1462711424 .


解决方法1:修改$hadoop.tmp.dir    下的dfs/data/current/VERSION 文件中namespaceID 使其一致。
解决方法2:这个有点残暴,就是清空hadoop.tmp.dir这个目录,在我这里是/home/work/hadoop_tmp
分析:
上面是很多新手经常遇到的问题,hadoop.tmp.dir是什么?下面给大家详细看一下:
我是通过图1操,vim hdfs-site.xml

path.png
图1


查看hdfs.xml文件内容的.


图2是hdfs.xml文件的内容,位于hadoop/conf文件夹下。

hdfstmp.png
图2

hadoop.tmp.dir这个代表的意思hadoop的存放目录,类似我们的数据是放在本地文件中的C盘还是D盘。但是因为Linux特殊的文件系统,所以存放在了/home/work/hadoop_tmp文件夹下。
上面我们懂得了,hadoop.tmp.dir它的意思,那么我们进一步




进入通过 vim dfs/data/current/VERSION


version.png



编辑下面内容:修改namenodeID即可。
namenodeid.png



2.DataNode 或者 JobTracker 出了故障 单独启动

        hadoop-daemon.sh start datanode
        hadoop-daemon.sh start jobtracker

3.动态添加DataNode 动态将某个节点加入到集群中

        hadoop-daemon.sh --config ./conf start datanode
        hadoop-daemon.sh --config ./conf start tasktracker
相关内容还可以查看
hadoop集群添加namenode的步骤及常识


4.在运行过程中发现error:unmappable character for  encoding UTF8

由于java 程序不是utf8,所以在提交后不能解析的原因,将eclipse 编码设置成utf8:
3904620877030590311.png


这里交给大家该如何修改:
通过Window-》preference
tanchu.png


通过上上面操作,我们找到workspace,然后修改编码即可

code.png




5. 用window 提交eclipse 任务发现不通过:

原因:本地用户administrator(本机windows用户)想要远程操作hadoop系统,没有权限引起的。

解决办法:
1、如果是测试环境,可以取消hadoop hdfs的用户权限检查。打开conf/hdfs-site.xml,找到dfs.permissions属性修改为false(默认为true)OK了。(1.2.1 版本只有这个方法可行),如何操作可以参考第一个问题。
hdfstmp1.png

2、修改hadoop location参数,在advanced parameter选项卡中,找到hadoop.job.ugi项,将此项改为启动hadoop的用户名即可
3 修改window 机器的用户名为 hadoop 用户名。
5. 1用eclipse 连接远程集群连接不上
1.除了防火墙
2.权限修改
3.ip需要设置为静态
4.检查集群是否开启

6. 运行过程中发现Java heap space OutOfMemory


修改 hadoop-env.sh 文件 将:export HADOOP_CLIENT_OPTS="-Xmx128m $HADOOP_CLIENT_OPTS"
改成:export HADOOP_CLIENT_OPTS="-Xmx2048m $HADOOP_CLIENT_OPTS"

7 eclipse 运行中发现 Name node is  in safe mode
  1. org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot delete /tmp/hadoop-SYSTEM/mapred/system. Name node is in safe mode.
  2. The ratio of reported blocks 0.9412 has not reached the threshold 0.9990. Safe mode will be turned off automatically.
  3. at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.deleteInternal(FSNamesystem.java:1992)
  4. at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.delete(FSNamesystem.java:1972)
  5. at org.apache.hadoop.hdfs.server.namenode.NameNode.delete(NameNode.java:792)
  6. at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
  7. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  8. at java.lang.reflect.Method.invoke(Method.java:597)
  9. at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:563)
  10. at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1388)
  11. at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1384)
  12. at java.security.AccessController.doPrivileged(Native Method)
  13. at javax.security.auth.Subject.doAs(Subject.java:396)
  14. at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1083)
  15. at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1382)
  16.   :bin/hadoop dfsadmin -safemode leave (解除安全模式)
复制代码
在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。
safemode参数说明:
enter - 进入安全模式
leave - 强制NameNode离开安全模式
get -   返回安全模式是否开启的信息
wait - 等待,一直到安全模式结束。

解决方案:bin/hadoop dfsadmin -safemode leave

8. Invalid Hadoop Runtime specified; please click 'Configure Hadoop install directory' or fill in library location input
field

解决办法:eclipse window->preferences - > Map/Reduce  选择hadoop根目录

9. storage directory does not exist or is not accessible.
  1. Bad connection to FS. command aborted. exception: Call to dp01-154954/192.168.13.134:9000 failed on connection exception: java.net.ConnectException: Connection refused: no further information
  2. ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory D:\tmp\hadoop-SYSTEM\dfs\name is in an inconsistent
  3. state: storage directory does not exist or is not accessible.
复制代码
重新格式化  bin/hadoop namenode -format  (小心不要拼错)


10 hbase

INFO org.apache.hadoop.hbase.util.FSUtils: Waiting for dfs to exit safe mode...
:bin/hadoop dfsadmin -safemode leave (解除安全模式)

11.win7下 ssh启动不了  错误:ssh: connect to host localhost port 22: Connection refused

  输入windows 登录用户名

1347456851_5788.jpg


1347456879_9365.jpg
下一篇:
Hadoop常见错误问题及解决方法总结二

本帖被以下淘专辑推荐:

加微信w3aboutyun,可拉入技术爱好者群

已有(5)人评论

跳转到指定楼层
stark_summer 发表于 2015-2-13 13:53:16
回复

使用道具 举报

tang 发表于 2015-3-8 14:45:13
回复

使用道具 举报

tang 发表于 2015-4-2 16:18:46
回复

使用道具 举报

那时半夏 发表于 2016-3-13 20:03:26
谢谢分享,mark一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条