zoukankan      html  css  js  c++  java
  • problems_hadoop

    problems_hadoop

    1 启动Hadoop集群sbin/start-dfs.sh,DataNode没有启动

    RCA
    多次格式化namenode导致的namenode与datanode之间的不一致(多次格式化,版本不一致)
    solution
    HADOOP_HOME=/develop/hadoop-2.7.5

    1. 先关闭dfs:$HADOOP_HOME/sbin/stop-dfs.sh
    2. 删除HADOOP_HOME下的hadoopDatas, logs和temp文件夹
      rm -rf $HADOOP_HOME/hadoopDatas/ $HADOOP_HOME/logs/ $HADOOP_HOME/temp/
    3. 格式化集群:$HADOOP_HOME/bin/hdfs namenode -format
    4. 重启集群:$HADOOP_HOME/sbin/start-dfs.sh
    5. 查看进程:jps

    note
    本solution仅针对数据不重要的环境,如果数据重要,则不能格式化,需要其他方法。

    2 执行"hdfs dfs ls /"报错

    desc: 执行如下命令报错:

    [root@node1 customShells]# hdfs dfs -ls /
    Warning: fs.defaultFS is not set when running "ls" command.
    

    RCA: /usr/bin/ 下存在 hadoop和hdfs可执行文件,usr/bin 是优先查找的路径,所以先找到了 、usr/bin 下面的hdfs,直接执行了。 执行的不是你安装目录下的文件,所以读取不到你hadoop的配置。
    可以执行 which hadoop和which hdfs来查找这2个命令所在位置。
    solution: 重命名或删除/usr/bin/下的这2个命令。
    note: 最后,一定记得执行 source /etc/profile 命令,否则系统会找不到hdfs命令。

    3 hdfs管理界面:Summary部分,Configured Capacity: 0 B

    desc:
    hdfs管理界面:Summary部分,Configured Capacity: 0 B。正常应该不是0,而是显示系统分配给hdfs的剩余容量。

    RCA:
    NameNode的clusterID和DataNode的不一致,所以未能启动。之所以会这样,是因为我们执行了多次bin/hdfs namenode -format命令,导致NameNode的clusterID改变而DataNode却没变。有时也可能是因为data和name文件夹的权限问题。

    网上解决步骤:

    1. 停止所有进程:sbin/stop-all.sh
    2. 将namenode的clusterID(在/develop/hadoop-2.7.5/hadoopDatas/namenodeDatas/current/VERSION文档中)复制到datanode的clusterID(在/develop/hadoop-2.7.5/hadoopDatas/datanodeDatas/current/VERSION文档中)
    3. 启动所有进程 /sbin/start-all.sh
    4. 检验
      实际操作发现还是不行;于是删除整个hadoopDatas,重新创建hadoopDatas文件夹以及下面的子文件夹,然后重新格式化bin/hdfs namenode -format,再启动各项服务,解决。
    5. 小结:
      bin/hdfs namenode -format该命令仅执行一次,以后尽量不要执行,因为一执行,则所有数据都丢失!并且,导致NameNode的clusterID和DataNode的不一致,从而系统出错!

    4 执行[root@node01 hadoop-2.6.0-cdh5.14.0]# sbin/start-dfs.sh 后,namenode未启动

    desc:
    执行[root@node01 hadoop-2.6.0-cdh5.14.0]# sbin/start-dfs.sh 后,namenode未启动。

    解决步骤:
    查看/develop/hadoop-2.6.0-cdh5.14.0/logs/hadoop-root-namenode-node01.hadoop.com.log日志文件,发现报错信息:

    2019-05-22 00:52:44,132 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Encountered exception loading fsimage
    java.io.IOException: NameNode is not formatted.
    2019-05-22 00:52:44,251 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode.
    java.io.IOException: NameNode is not formatted.
    

    RCA:
    namenode未格式化。

    solution:
    三台机器上,递归删除以下目录删除:
    rm -rf /develop/hadoop-2.6.0-cdh5.14.0/hadoopDatas/

    三台机器上,重新创建以下目录:

    mkdir -p /develop/hadoop-2.6.0-cdh5.14.0/hadoopDatas/tempDatas
    mkdir -p /develop/hadoop-2.6.0-cdh5.14.0/hadoopDatas/namenodeDatas
    mkdir -p /develop/hadoop-2.6.0-cdh5.14.0/hadoopDatas/datanodeDatas
    mkdir -p /develop/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/edits
    mkdir -p /develop/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/snn/name
    mkdir -p /develop/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/snn/edits
    

    node01上,执行:
    bin/hdfs namenode -format

    node01上,执行:

    cd /develop/hadoop-2.6.0-cdh5.14.0/
    sbin/start-dfs.sh
    sbin/start-yarn.sh
    sbin/mr-jobhistory-daemon.sh start historyserver
    

    5 删除hdfs上的内容报错:rm: Cannot delete /wxcm/ Name node is in safe mode.

    desc: 在执行删除hdfs上的内容时(hdfs dfs -rm -f -r -skipTrash /wxcm)报错:rm: Cannot delete /wxcm/ Name node is in safe mode.

    RCA: 这是因为在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。

    solution:
    (1)只需要等待一会儿即可;
    (2)可以通过以下命令来手动离开安全模式:hdfs dfsadmin -safemode leave

    用户可以通过hdfs dfsadmin -safemode value 来操作安全模式,参数value的说明如下:

    hdfs dfsadmin -safemode enter - 进入安全模式
    hdfs dfsadmin -safemode leave - 强制NameNode离开安全模式
    hdfs dfsadmin -safemode get - 返回安全模式是否开启的信息
    hdfs dfsadmin -safemode wait - 等待,一直到安全模式结束。
    

    但是这次即使执行了hdfs dfsadmin -safemode leave也无法退出安全模式。

    运行df -lh 发现三个节点的磁盘几乎都满了,于是清理不必要的文件释放磁盘空间。再次运行 hdfs dfsadmin -safemode leave ,成功退出。

    然后可以成功的执行hdfs的删除操作了:hdfs dfs -rm -f -r -skipTrash /wxcm。

    但是,删除hdfs上的目录/wxcm,并清空垃圾桶(hdfs dfs -expunge) 之后,检查vmwareMachines文件夹,就是存放虚拟机的文件夹,发现占用的空间还是没有减少。

    原来vmware的虚拟机磁盘只会越来越大,而不会随着文件的删除而自动减少。需要手动压缩磁盘。具体是右击某个虚拟机,选择“设置”,选中硬盘,到右侧找到“压缩”,点击压缩按钮,还可以点击“碎片整理”。不过这个方法效果一般。vmware的虚拟机的物理磁盘文件增大后,没法减小,不过打开虚拟机后,里面显示的已使用磁盘空间确实减少了。

    6

  • 相关阅读:
    java.net.ConnectException: localhost/127.0.0.1:8088 Connection refused java程序员
    网络模式:GSM,WCDMA,CDMA2000什么意思 java程序员
    Spring contextConfigLocation java程序员
    src总结 java程序员
    广州天河软件园面试Java实习生时的一些面试题 java程序员
    纠结了好久的Android SDK无法更新问题 java程序员
    Android SDK 2.3/3.0/4.0/4.1 下载与安装教程 java程序员
    域名解析文件hosts文件是什么?如何修改hosts文件? java程序员
    安卓模拟器Android SDK 4.0.3 R2安装完整图文教程 java程序员
    SpringBoot+mongoDB实现id自增
  • 原文地址:https://www.cnblogs.com/mediocreWorld/p/15189001.html
Copyright © 2011-2022 走看看