web-dev-qa-db-ja.com

hadoop / hdfs / nameが不整合な状態です:ストレージディレクトリ(hadoop / hdfs / data /)が存在しないか、アクセスできません

私はこのトピックのstackoverflowで提供されているすべての異なるソリューションを試しましたが、特定のログと詳細についてもう一度尋ねるのは役に立ちません

どんな助けでもありがたいです

Hadoopクラスターに1つのマスターノードと5つのスレーブノードがあります。 ubuntuユーザーとubuntuグループは~/Hadoopフォルダーの所有者です~/hadoop/hdfs/data~/hadoop/hdfs/nameの両方のフォルダーが存在します

両方のフォルダの権限は755に設定されています

スクリプトを開始する前にnamenodeを正常にフォーマットしましたstart-all.sh

スクリプトが「NAMENODE」の起動に失敗する

これらはマスターノードで実行されています

ubuntu@master:~/hadoop/bin$ jps

7067 TaskTracker
6914 JobTracker
7237 Jps
6834 SecondaryNameNode
6682 DataNode

ubuntu@slave5:~/hadoop/bin$ jps

31438 TaskTracker
31581 Jps
31307 DataNode

以下は、名前ノードログファイルのログです。

..........
..........
.........

014-12-03 12:25:45,460 INFO org.Apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source jvm registered.
2014-12-03 12:25:45,461 INFO org.Apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source NameNode registered.
2014-12-03 12:25:45,532 INFO org.Apache.hadoop.hdfs.util.GSet: Computing capacity for map BlocksMap
2014-12-03 12:25:45,532 INFO org.Apache.hadoop.hdfs.util.GSet: VM type       = 64-bit
2014-12-03 12:25:45,532 INFO org.Apache.hadoop.hdfs.util.GSet: 2.0% max memory = 1013645312
2014-12-03 12:25:45,532 INFO org.Apache.hadoop.hdfs.util.GSet: capacity      = 2^21 = 2097152 entries
2014-12-03 12:25:45,532 INFO org.Apache.hadoop.hdfs.util.GSet: recommended=2097152, actual=2097152
2014-12-03 12:25:45,588 INFO org.Apache.hadoop.hdfs.server.namenode.FSNamesystem: fsOwner=ubuntu
2014-12-03 12:25:45,588 INFO org.Apache.hadoop.hdfs.server.namenode.FSNamesystem: supergroup=supergroup
2014-12-03 12:25:45,588 INFO org.Apache.hadoop.hdfs.server.namenode.FSNamesystem: isPermissionEnabled=true
2014-12-03 12:25:45,622 INFO org.Apache.hadoop.hdfs.server.namenode.FSNamesystem: dfs.block.invalidate.limit=100
2014-12-03 12:25:45,623 INFO org.Apache.hadoop.hdfs.server.namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)
2014-12-03 12:25:45,716 INFO org.Apache.hadoop.hdfs.server.namenode.FSNamesystem: Registered FSNamesystemStateMBean and NameNodeMXBean
2014-12-03 12:25:45,777 INFO org.Apache.hadoop.hdfs.server.namenode.FSEditLog: dfs.namenode.edits.toleration.length = 0
2014-12-03 12:25:45,777 INFO org.Apache.hadoop.hdfs.server.namenode.NameNode: Caching file names occuring more than 10 times 
2014-12-03 12:25:45,785 INFO org.Apache.hadoop.hdfs.server.common.Storage: Storage directory /home/ubuntu/hadoop/file:/home/ubuntu/hadoop/hdfs/name does not exist
2014-12-03 12:25:45,787 ERROR org.Apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
org.Apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /home/ubuntu/hadoop/file:/home/ubuntu/hadoop/hdfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
    at org.Apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.Java:304)
    at org.Apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.Java:104)
    at org.Apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.Java:427)
    at org.Apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.Java:395)
    at org.Apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.Java:299)
    at org.Apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.Java:569)
    at org.Apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.Java:1479)
    at org.Apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.Java:1488)
2014-12-03 12:25:45,801 ERROR org.Apache.hadoop.hdfs.server.namenode.NameNode: org.Apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /home/ubuntu/hadoop/file:/home/ubuntu/hadoop/hdfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
    at org.Apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.Java:304)
    at org.Apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.Java:104)
    at org.Apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.Java:427)
    at org.Apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.Java:395)
    at org.Apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.Java:299)
    at org.Apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.Java:569)
    at org.Apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.Java:1479)
    at org.Apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.Java:1488)
14
Tariq

Hdfs-site.xmlファイルから「file:」を削除しました

[誤ったHDFS-SITE.XML]

  <property>
  <name>dfs.namenode.name.dir</name>
  <value>file:/home/hduser/mydata/hdfs/namenode</value>
  </property>
  <property>
  <name>dfs.datanode.data.dir</name>
  <value>file:/home/hduser/mydata/hdfs/datanode</value>
  </property>

[正しいHDFS-SITE.XML]

  <property>
  <name>dfs.namenode.name.dir</name>
  <value>/home/hduser/mydata/hdfs/namenode</value>
  </property>


  <property>
  <name>dfs.datanode.data.dir</name>
  <value>/home/hduser/mydata/hdfs/datanode</value>
  </property>

助けてくれてありがとう Erik

14
Tariq

以下の手順に従ってください。

1.すべてのサービスを停止する

2.namenodeをフォーマットする

3.データノードディレクトリを削除します

4.すべてのサービスを開始する

8
Rengasamy

端末でこれらのコマンドを実行する

$ cd ~
$ mkdir -p mydata/hdfs/namenode
$ mkdir -p mydata/hdfs/datanode

両方のディレクトリ755に許可を与える

その後、

このプロパティをconf/hdfs-site.xmlに追加します

  <property>
 <name>dfs.namenode.name.dir</name>
 <value>file:/home/hduser/mydata/hdfs/namenode</value>
</property>


<property>
 <name>dfs.datanode.data.dir</name>
 <value>file:/home/hduser/mydata/hdfs/datanode</value>
</property>

動作しない場合は、その後

stop-all.sh
start-all.sh
6
Kishore

1)所有者であるノードディレクトリに名前を付け、chmod 750を適切に指定します
2)すべてのサービスを停止
3)hadoop namenode -formatを使用してnamenodeをフォーマットします
4)これをhdfs-site.xmlに追加します

<property>
    <name>dfs.data.dir</name>
    <value>path/to/hadooptmpfolder/dfs/name/data</value> 
    <final>true</final> 
    </property> 
    <property> 
    <name>dfs.name.dir</name>
    <value>path/to/hadooptmpfolder/dfs/name</value> 
    <final>true</final> 
</property> 

5)hadoop namenode -formatを実行するには〜/ .bashrcのhadoopが解凍されている場所にexport PATH=$PATH:/usr/local/hadoop/bin/を追加し、パスに追加します

2
Saurabh

同様の問題があったので、namenodeをフォーマットしてから開始しました

Hadoop namenode -format
hadoop-daemon.sh start namenode
0
tmndungu