CDH4でNameNode HA構築時にハマったことのめも

残しとかないと忘れそう。

環境

  • OS: CentOS 6.4 x86_64
  • Hadoop: CDH 4.5.0
  • 確認

  • http://master1:60010
    でHBaseの確認.Region Serverのところで全台起動してるかどうか
  • http://master1:50070
    でNameNode,DataNodeの確認。Live Nodesに全台起動してるか(Dead Nodesに1台でもあっちゃダメ)
  • datanodeが起動できない

    2013-11-28 16:14:29,425 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in BPOfferService for Block pool BP-1310642609-172.17.6.1-1385620151028 (storage id DS-106816560-172.17.7.1-50010-1385552458212) service to hbm02.ada/172.17.6.2:8020
    java.lang.NullPointerException
            at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.sendHeartBeat(BPServiceActor.java:435)
            at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.offerService(BPServiceActor.java:521)
            at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:673)
            at java.lang.Thread.run(Thread.java:724)

    こんなエラーが出て。sendHeartBeatって出てるから、死活監視が送れてないんだろなってことだけど原因がわからない。

    HadoopのException in BPOfferServiceにハマるという記事を見つけたけど、/data1,/data2は存在してたので違うのかなと思ったんですが。

    hdfs-site.xml

      <property>
         <name>dfs.datanode.data.dir</name>
         <value>/disk1/dfs/data/dn,/disk2/dfs/data/dn</value>
      </property>

    でも結局はここが問題でした。
    dfs.datanode.data.dirに指定するディレクトリは別ディスクじゃないとだめらしい。(同じディスクの場合はfile://をつける? file:///disk1)
    マウントしてた別ディスクじゃなくてただmkdirで作った同じディスク内のディレクトリを指定したのでうまく動かなかったみたい。

    datanodeが起動できない 2

    namenodeを初期化した後にdatanodeも再起動しようとした場合、
    hdfs-site.xmlのdfs.datanode.data.dirに指定したディレクトリの中身を削除しないと
    起動できない.

     

    hbase shellが起動できない 2

    WARN conf.Configuration: hadoop.native.lib is deprecated. Instead, use io.native.lib.av
    ailable
    java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: /tmp/jffi6020281304576505156.tmp: /tmp/jffi60
    20281304576505156.tmp: failed to map segment from shared object: Operation not permitted
            at com.kenai.jffi.Foreign$InValidInstanceHolder.getForeign(Foreign.java:90)
            at com.kenai.jffi.Foreign.getInstance(Foreign.java:95)
            at com.kenai.jffi.Library.openLibrary(Library.java:151)

    こんなかんじのエラーが。

    $ sudo mount -o remount exec /tmp

    でかいけつ

    Leave a reply

    Your email address will not be published.

    You may use these HTML tags and attributes:

    <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>