web-dev-qa-db-ja.com

DataNodeがシングルノードhadoop 2.6.0で起動しない

Ubuntu 14.04LTSを実行しているラップトップにhadoop 2.6.0をインストールしました。 start-all.shを実行してhadoopデーモンを正常に起動し、WourdCountサンプルを正常に実行した後、動作しないjarサンプルを実行しようとしたため、hadoop namenode -formatを使用してフォーマットし、最初からやり直すことにしましたが、 start-dfs.sh && start-yarn.shを使用してすべてのデーモンを起動すると、次に示すようにすべてのデーモンが実行されますが、データノードは実行されません。

hdferas@feras-Latitude-E4310:/usr/local/hadoop$ jps
12628 NodeManager
12110 NameNode
12533 ResourceManager
13335 Jps
12376 SecondaryNameNode

それを解決する方法は?

19

私はこの問題に直面しており、非常に簡単に解決できます。ネームノードとデータノードの実行を開始した後、ネームノードを再度フォーマットしたため、データノードが起動していません。これは、namenodeからメタデータをクリアしたことを意味します。これで、Wordカウントを実行するために保存したファイルはまだdatanodeにあり、namenodeがフォーマットされて開始されないため、datanodeにはブロックレポートの送信先がわかりません。

これを修正するために必要なことを以下に示します。すべてのHadoopサービス(stop-all.sh)を停止し、アクティブなssh接続を閉じます。

cat /usr/local/hadoop/etc/hadoop/hdfs-site.xml

このステップは重要です。データノードのデータがどこに保存されているかを確認してください。 datanode.data.dirに関連付けられた値です。私にとっては/ usr/local/hadoop/hadoop_data/hdfs/datanodeです。ターミナルを開き、上記のディレクトリに移動して、そのディレクトリの下にあるcurrentという名前のディレクトリを削除します。 「現在の」ディレクトリのみを削除していることを確認してください。

Sudo rm -r /usr/local/hadoop/hadoop_data/hdfs/datanode/current

次に、namenodeをフォーマットし、すべてが正常かどうかを確認します。

hadoop namenode -format

何かを聞かれたらyesと答えてください。

jps

私の答えが問題を解決することを願っています。それが私に知らせない場合。

ちょっとしたアドバイス:ネームノードをフォーマットしないでください。 namenodeがなければ、データを再構築する方法はありません。ワードカウントが実行されていない場合、それは他の問題です。

52
Srimanth

次のコマンドを使用して、DataNodeフォルダーのすべてのコンテンツを削除し、Datanodeをフォーマットするだけです。

hadoop namenode -format
5
Piyush Yadav

Namenodeもフォーマットするときにこの問題が発生しました。問題を解決するために私がしたことは:

  1. dfs.name.dirの場所を見つけます。たとえば、dfs.name.dir/home/hadoop/hdfsであるとします。

(a)/home/hadoop/hdfs/currentに移動します。

(b)VERSIONファイルを検索します。テキストエディタを使用して開きます。

(c)namespaceID=122684525という行があります(122684525は私のIDです。あなたのIDは異なります)。 IDを書き留めます。

  1. hadoop.tmp.dirの場所を見つけます。私は/home/hadoop/tempです。

(a)/home/hadoop/temp/dfs/data/currentに移動します。

(b)ファイルVERSIONを検索し、テキストエディターを使用して開きます。

(c)namespaceID=という行があります。このファイルと前のファイルのnamespaceIDは同じでなければなりません。

(d)これが、データノードが開始されなかった主な理由です。両方を同じにしたので、データノードは正常に起動します。

注:namespaceIDを/home/hadoop/hdfs/current/VERSIONから/home/hadoop/temp/dfs/data/current/VERSIONにコピーします。逆にしないでください。

  1. start-dfs.sh && start-yarn.shを実行します。データノードが開始されます。
3
Rajesh N

私も同じ問題があり、ログを確認し、以下のエラーが見つかりました

例外-データノードログFATAL org.Apache.hadoop.hdfs.server.datanode.DataNode:secureMain Java.io.IOExceptionの例外:dfs.datanode.data.dirのすべてのディレクトリが無効です: "/ usr/local/hadoop_store/hdfs/datanode /

以下のコマンドを実行して問題を解決します

Sudo chown -R hduser:hadoop/usr/local/hadoop_store

注-パス/ usr/local/hadoop_storeの下にnamenodeとdatanodeを作成しました

3
Vigneshwaran

上記の問題は、dfsおよびyarnデーモンを停止せずにnamenodeをフォーマットする(hadoop namenode -format)ために発生します。 namenodeのフォーマット中に、以下の質問が表示されます。このためにYキーを押します。ストレージディレクトリ/ tmp/hadoop-root/dfs/nameのファイルシステムを再フォーマットしますか? (YまたはN)

解決策、dfs.name.dirのcurrent(ディレクトリ名)ディレクトリ内のファイルを削除する必要があります。これはhdfs.site.xmlで言及しています。私のシステムでは、dfs.name.dirは/ tmp/hadoop-root/dfs/name/currentにあります。 rm -r/tmp/hadoop-root/dfs/name/current上記のコメントを使用して、現在のディレクトリ内のファイルを削除しました。 「現在の」ディレクトリのみを削除していることを確認してください。dfsおよびyarnデーモン(stop-dfs.shおよびstop-yarn.sh)を停止した後、namenodeを再度フォーマットします。これで、データノードが正常に起動します!!

2

同じ問題が発生しました(DataNodeとTaskTrackerは起動しません)。

解像度:すべての「現在の」サブディレクトリを削除:データ、名前、namesecondaryを解決して、start-all.sh、jpsのときに表示されないDataNode/taskTrackerを解決します

(私のdfs.name.dir locationは:/ home/training/hadoop-temp/dfs/data/current;/home/training/hadoop-temp/dfs/name/current;/home/training/hadoop-temp/dfs/namesecondary/current

必ずサービスを停止してください: stop-all.sh

1。 data、name、namesecondary、remove/deleteの下の各「current」サブディレクトリに移動します(例:rm -r name/current)

2。 then format:hadoop namenode -format

mkdir current/home/training/hadoop-temp/dfs/data/current下

4。/home/training/hadoop-temp/dfs/name/currentからディレクトリとコンテンツを取得し、/ data/currentディレクトリにコピーします

例:以下のファイル:

/ home/training/hadoop-temp/dfs/name/current

[training @ CentOS current] $ ls -l

-rw-rw-r--。 1トレーニングトレーニング9901 9月25 01:50編集

-rw-rw-r--。 1トレーニングトレーニング582 Sep 25 01:50 fsimage

-rw-rw-r--。 1トレーニングトレーニング8 Sep 25 01:50 fstime

-rw-rw-r--。 1トレーニングトレーニング101 Sep 25 01:50 VERSION

5。 VERSIONのstorageType = NAME_NODEを、先ほどコピーしたdata/current/VERSIONのstorageType = DATA_NODEに変更します。

前:

[training @ CentOS dfs] $ cat data/current/VERSION

namespaceID = 1018374124

cTime = 0

storageType = NAME_NODE

layoutVersion = -32

AFTER:

[training @ CentOS dfs] $ cat data/current/VERSION

namespaceID = 1018374124

cTime = 0

storageType = DATA_NODE

layoutVersion = -32

6。以下の各サブディレクトリに、name/currentがdata、name、namesecondaryに対して持つファイルと同じファイルがあることを確認してください

[training @ CentOS dfs] $ pwd

/ home/training/hadoop-temp/dfs /

[training @ CentOS dfs] $ ls -l

合計12

drwxr-xr-x。 5トレーニングトレーニング4096 Sep 25 01:29データ

drwxrwxr-x。 5トレーニングトレーニング4096 Sep 25 01:19名前

drwxrwxr-x。 5トレーニングトレーニング4096 Sep 25 01:29 namesecondary

7。サービスを開始します:start-all.sh次のように入力すると、5つのサービスがすべて表示されます:jps

Hadoop-2.6.0を使用していますが、以下を使用して解決しました:

1./usr/local/hadoop_store/hdfs内のすべてのファイルを削除する

コマンド:Sudo rm -r/usr/local/hadoop_store/hdfs/*

2.フォーマットhadoop namenode

コマンド:hadoop namenode -format

3. ..../sbinディレクトリに移動します(cd/usr/local/hadoop/sbin)

start-all.sh

  1. use command ==> hduser @ abc-3551:/ $ jps

次のサービスが開始されます。

19088 Jps
18707 ResourceManager
19043 NodeManager
18535 SecondaryNameNode
18329 DataNode
18159 NameNode
0
ashu17188

core-site.xmlで、tempディレクトリの絶対パスを確認します。これが正しく指定されていない場合、または作成されていない場合(mkdir)。データノードを起動できません。

0
dhilip77

yarn-site.xmlに以下のプロパティを追加します

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.Apache.hadoop.mapred.ShuffleHandler</value>
</property>
0

それを行う正しい方法ではありません。しかし、確かに動作します〜

datanode、namenode、およびtmpフォルダーからファイルを削除します。これらの内部で作成されたファイル/フォルダーはすべてhadoopが所有し、データノードが次の試行でスターを付けないために失敗またはロックされた可能性のある最後に実行されたデータノードの詳細への参照を持つ場合があります

0
user1332909