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
それを解決する方法は?
私はこの問題に直面しており、非常に簡単に解決できます。ネームノードとデータノードの実行を開始した後、ネームノードを再度フォーマットしたため、データノードが起動していません。これは、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がなければ、データを再構築する方法はありません。ワードカウントが実行されていない場合、それは他の問題です。
次のコマンドを使用して、DataNodeフォルダーのすべてのコンテンツを削除し、Datanodeをフォーマットするだけです。
hadoop namenode -format
Namenodeもフォーマットするときにこの問題が発生しました。問題を解決するために私がしたことは:
dfs.name.dir
の場所を見つけます。たとえば、dfs.name.dir
が/home/hadoop/hdfs
であるとします。(a)/home/hadoop/hdfs/current
に移動します。
(b)VERSION
ファイルを検索します。テキストエディタを使用して開きます。
(c)namespaceID=122684525
という行があります(122684525は私のIDです。あなたのIDは異なります)。 IDを書き留めます。
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
にコピーします。逆にしないでください。
start-dfs.sh && start-yarn.sh
を実行します。データノードが開始されます。私も同じ問題があり、ログを確認し、以下のエラーが見つかりました
例外-データノードログ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を作成しました
上記の問題は、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を再度フォーマットします。これで、データノードが正常に起動します!!
同じ問題が発生しました(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
次のサービスが開始されます。
19088 Jps
18707 ResourceManager
19043 NodeManager
18535 SecondaryNameNode
18329 DataNode
18159 NameNode
core-site.xmlで、tempディレクトリの絶対パスを確認します。これが正しく指定されていない場合、または作成されていない場合(mkdir)。データノードを起動できません。
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>
それを行う正しい方法ではありません。しかし、確かに動作します〜
datanode、namenode、およびtmpフォルダーからファイルを削除します。これらの内部で作成されたファイル/フォルダーはすべてhadoopが所有し、データノードが次の試行でスターを付けないために失敗またはロックされた可能性のある最後に実行されたデータノードの詳細への参照を持つ場合があります