YMLiang

在Hbase-shell中执行命令list之后报了一串错误…如何解决?

  • SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/home/xdl/hbase-0.98.9-hadoop2/lib/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/home/xdl/hadoop-2.5.2/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    2018-10-19 05:31:49,934 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    --以上是因为Hadoop的依赖包与hbase的依赖包中的jar包相同,不影响启动关键在于下面的异常:
    
  • 服务起不来,看一下具体报错

    ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
    Server is not running yet 服务起不来
    --第一个想到的方法是关闭hbase重新启动
    stop-hbase.sh
    start-hbase.sh
    

    果然是没卵用的


  • 网上还有说是让关闭hadoop的安全模式
    查看hadoop的安全模式状态:

    hadoop dfsadmin -safemode get
    Safe mode is OFF
    

    OFF:表示安全模式关闭状态,如果是ON则可以用
    hadoop dfsadmin -safemode leave 命令来关闭安全模式


  • 果然第二个方法也没用,那换第三个方法,网上还有说是hbase的依赖包与hadoop的依赖包重复让删除hbase中的重复的依赖包:

    slf4j-log4j12-1.6.4.jar
    slf4j-api-1.6.4.jar
    

    果然删了以后还是没卵用
    那么list后出现的ERROR最有用的是 ZOOKEEPER的问题:
    ERROR:can't get master address from ZooKeeper; znode data == null
    那我们就从这里入手,从zookeeper的data路径: (三个节点都删)(这里以三个节点(1主2从)为例)
    /home/zkpk/zookeeper-3.4.5/data 下的 myid zookeeper_server.pid 除了myid以外的其他文件都删掉
    然后重启zookeeper : zkServer.sh restart (三个节点都重启zookeeper)
    这时候应该不会报:ERROR:can't get master address from ZooKeeper; znode data == null这个错误了
    而且HMaster也应该不会掉了(其实我的HMaster在我每次进入hbase shell 后 list 后就掉了…)
    但当你再进入 hbase shell 再 list时还可能报:ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet 这个错误
    解决方法就是:格式化namenode (我就是这样好的),如何格式化?
    hadoop namenode -format
    然后启动Hadoop集群(start-all.sh),zookeeper(前面重启过zookeeper,这里就不用重启了),hbase(start-hbase.sh{这里说一嘴,关闭hbase时从节点上的HRegionServer关不掉可以直接KILL -9 掉它})
    再进入hbase shell中去测试吧,应该没问题了!!

总结一下,出了错不要总是在Hbase上找问题,关键要去集群环境,zookeeper环境上寻找,最坏的做法就是格式化集群,这样会导致hdfs上的文件清空,还有就是zookeeper文件夹下的data文件夹里面的内容除了配置的myid不需要删以外,其他的都删掉,你下次再启动zookeeper后会自动生成所以不太影响,但问题往往会出在这里,多试一些方法,解决问题最重要

 评论


博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

本站使用 Material X 作为主题 , 总访问量为 次 。
Copyright 2018-2019 YMLiang'BLOG   |   京ICP备 - 19039949  |  载入天数...载入时分秒...