zoukankan      html  css  js  c++  java
  • 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

    <ignore_js_op> 
    图1


    查看hdfs.xml文件内容的.


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

    <ignore_js_op> 
    图2

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




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


    <ignore_js_op> 



    编辑下面内容:修改namenodeID即可。
    <ignore_js_op> 



    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:
    <ignore_js_op> 


    这里交给大家该如何修改:
    通过Window-》preference
    <ignore_js_op> 


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

    <ignore_js_op> 




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

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

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

    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: mphadoop-SYSTEMdfs ame 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 登录用户名

    <ignore_js_op> 



    <ignore_js_op>

    1347456879_9365.jpg (36.15 KB, 下载次数: 4)

    下载附件  保存到相册

    2014-3-5 22:41 上传

     
    下一篇:
    Hadoop常见错误问题及解决方法总结二
  • 相关阅读:
    【转】嵌入式程序员应该知道的16个问题
    GetMemory()函数
    Some good questions
    [转]永远做一个有计划的人
    内存分配管理
    c语言面试题(感觉比较好的题目)
    const char*, char const*, char*const的区别
    《论语》《中庸》《大学》经典语录
    洗脑
    python基础之函数参数,名称空间,以及函数嵌套
  • 原文地址:https://www.cnblogs.com/snowbook/p/5684709.html
Copyright © 2011-2022 走看看