このチュートリアル を使用して、マルチノードHadoopクラスターをセットアップおよび構成しました。
Start-all.shコマンドを入力すると、すべてのプロセスが次のように正しく初期化されます。
starting namenode, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-namenode-jawwadtest1.out
jawwadtest1: starting datanode, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-datanode-jawwadtest1.out
jawwadtest2: starting datanode, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-datanode-jawwadtest2.out
jawwadtest1: starting secondarynamenode, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-secondarynamenode-jawwadtest1.out
starting jobtracker, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-jobtracker-jawwadtest1.out
jawwadtest1: starting tasktracker, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-tasktracker-jawwadtest1.out
jawwadtest2: starting tasktracker, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-tasktracker-jawwadtest2.out
ただし、jpsコマンドを入力すると、次の出力が表示されます。
31057 NameNode
4001 RunJar
6182 RunJar
31328 SecondaryNameNode
31411 JobTracker
32119 Jps
31560 TaskTracker
ご覧のとおり、実行中のデータノードプロセスはありません。単一ノードのクラスターを構成しようとしましたが、同じ問題が発生しました。ここで何が間違っているのか誰にも分かりますか?チュートリアルに記載されていない構成ファイルはありますか、または見直したことがありますか?私はHadoopを初めて使用しますが、少し迷いました。どんな助けも大歓迎です。
編集:hadoop-root-datanode-jawwadtest1.log:
STARTUP_MSG: args = []
STARTUP_MSG: version = 1.0.3
STARTUP_MSG: build = https://svn.Apache.org/repos/asf/hadoop/common/branches/$
************************************************************/
2012-08-09 23:07:30,717 INFO org.Apache.hadoop.metrics2.impl.MetricsConfig: loa$
2012-08-09 23:07:30,734 INFO org.Apache.hadoop.metrics2.impl.MetricsSourceAdapt$
2012-08-09 23:07:30,735 INFO org.Apache.hadoop.metrics2.impl.MetricsSystemImpl:$
2012-08-09 23:07:30,736 INFO org.Apache.hadoop.metrics2.impl.MetricsSystemImpl:$
2012-08-09 23:07:31,018 INFO org.Apache.hadoop.metrics2.impl.MetricsSourceAdapt$
2012-08-09 23:07:31,024 WARN org.Apache.hadoop.metrics2.impl.MetricsSystemImpl:$
2012-08-09 23:07:32,366 INFO org.Apache.hadoop.ipc.Client: Retrying connect to $
2012-08-09 23:07:37,949 ERROR org.Apache.hadoop.hdfs.server.datanode.DataNode: $
at org.Apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(Data$
at org.Apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransition$
at org.Apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNo$
at org.Apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.Java$
at org.Apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNod$
at org.Apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode($
at org.Apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataN$
at org.Apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.$
at org.Apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.Java:1$
2012-08-09 23:07:37,951 INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: S$
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at jawwadtest1/198.101.220.90
************************************************************/
このようなことをする必要があります:
bin/stop-all.sh
(または stop-dfs.sh
およびstop-yarn.sh
2.xシリーズでは)rm -Rf /app/tmp/hadoop-your-username/*
bin/hadoop namenode -format
(または2.xシリーズのhdfs
)ソリューションは、 http://pages.cs.brandeis.edu/~cs147a/lab/hadoop-troubleshooting/ から取得しました。基本的には、ゼロから再起動することで構成されているため、hdfsをフォーマットしてデータを失わないようにしてください。
私は同じ問題に遭遇しました。 hadoop/confのconfig xmlファイルで参照されるサブディレクトリ名、データ、およびtmpを持つhdfsフォルダー「/ home/username/hdfs」を作成しました。
Hadoopを起動してjpsを実行したときに、データノードが見つからなかったため、bin/hadoop datanodeを使用して手動でデータノードを起動しようとしました。次に、エラーメッセージから、hadoop構成ファイルのいずれかで参照されていたdfs.data.dir =/home/username/hdfs/data /へのアクセスに問題があることがわかりました。 hadoopを停止し、/ home/username/hdfs/tmp/*ディレクトリの内容を削除してから、このコマンドを試してください-chmod -R 755 /home/username/hdfs/
そして、hadoopを起動します。データノードが見つかりました!
データノードの実行中に同様の問題に直面しました。次の手順は役に立ちました。
サブディレクトリとしてnamenodeとdatanodeを作成した*/hadoop_store/hdfsディレクトリに移動します。 ([hadoop_directory] /etc/hadoop/hdfs-site.xmlで構成されたパス)。つかいます
rm -r namenode
rm -r datanode
*/hadoop_store/hdfsディレクトリで使用
Sudo mkdir namenode
Sudo mkdir datanode
許可問題の場合、使用
chmod -R 755 namenode
chmod -R 755 datanode
[hadoop_directory] / binで使用
hadoop namenode -format (To format your namenode)
単一ノードの擬似分散インスタンスを実行しているときに同じ問題が発生していました。解決方法を理解できませんでしたが、簡単な回避策は、DataNodeを手動で起動することですhadoop-x.x.x/bin/hadoop datanode
次に、次のようにdfsと糸を再起動します。
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh履歴サーバーの起動
これがうまくいくことを願っています。
以下のコマンドを行で実行:-
ステップ1:-Stop-all.sh
ステップ2:-このパスに到達
cd /usr/local/hadoop/bin
ステップ3:-そのコマンドhadoop datanodeを実行します
DataNodeが動作するようになりました
Tmpディレクトリプロパティがcore-site.xmlの有効なディレクトリを指しているかどうかを制御してください
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hduser/data/tmp</value>
</property>
ディレクトリの設定が間違っていると、datanodeプロセスが正しく起動しません。
以下の手順を実行すると、データノードが再び起動します。
すべてのサービスを停止します-./stop-all.shすべてのマスターとスレーブからすべてのhdfs tmpディレクトリをフォーマットします。スレーブからフォーマットすることを忘れないでください。
Namenodeをフォーマットします(hadoop namenode -format)
次に、namenodeでサービスを開始します。 ./bin/start-all.sh
これにより、datanodeサービスを開始することができました。
hadoop.tmp.dir
のcore-site.xml
プロパティが正しく設定されているかどうかを確認します。設定した場合は、このディレクトリに移動し、このディレクトリを削除するか空にします。設定しなかった場合は、デフォルトのフォルダ/tmp/hadoop-${user.name}
に移動し、同様にこのディレクトリを削除するか空にします。
3つの手順に従う必要があります。
(1)ログに移動して最新のログを確認する必要があります(hadoop-2.6.0/logs/hadoop-user-datanode-ubuntu.logで)
エラーが次の場合
Java.io.IOException:/ home/kutty/work/hadoop2data/dfs/dataの非互換のclusterID:namenode clusterID = CID-c41df580-e197-4db6-a02a-a62b71463089; datanode clusterID = CID-a5f4ba24-3a56-4125-9137-fa77c5bb07b1
つまり、namenodeクラスターIDとdatanodeクラスターIDは同一ではありません。
(2)namenode clusterID CID-c41df580-e197-4db6-a02a-a62b71463089を上記のエラーでコピーします
(3)hadoopdata/dfs/data/current/versionのDatanodeクラスターIDをNamenodeクラスターIDに置き換えます
clusterID = CID-c41df580-e197-4db6-a02a-a62b71463089
Hadoopを再起動します。 DataNodeを実行します
「hadoop tmp dir」の下のすべてを削除する代わりに、別のものを設定できます。たとえば、core-site.xmlに次のプロパティがある場合:
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hduser/data/tmp</value>
</property>
これを次のように変更できます。
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hduser/data/tmp2</value>
</property>
次に、scp core-site.xmlを各ノードに追加し、「hadoop namenode -format」を実行してから、hadoopを再起動します。
Hadoopフォルダーの下のデータノードを削除してから、start-all.shを再実行します
tmpディレクトリのフォーマットが機能しない場合は、これを試してください:
お役に立てれば。
ディレクトリの再作成を削除した後でも、データノードは起動していませんでした。そこで、bin/hadoop datanode
を使用して手動で開始しましたが、結論に達しませんでした。同じユーザー名から別のターミナルを開いてjps
を実行すると、実行中のデータノードプロセスが表示されました。動作していますが、未完成の端末を開いたままにしておく必要があります。
以下の手順を実行すると、データノードが再び起動します。
1)dfsを停止します。 2)hdfs-site.xmlを開きます3)hdfs-site.xmlおよび-format namenodeからdata.dirおよびname.dirプロパティを再度削除します。
4)次に、dfsを再度開始します。
以下のようなログファイルに問題の詳細があります。「dfs.data.dirの無効なディレクトリ:/ home/hdfs/dnman1の不正なアクセス許可、予想:rwxr-xr-x while実際:rwxrwxr-x」とそこから、データフォルダへのアクセス許可が777であることがわかりました。 755に修正し、機能し始めました。
dfs.data.dir
の下にリストされているディレクトリのファイル許可を777から755に変更しました
そして、データノードが機能し始めました。
同じエラーが発生しました。 dfsを数回開始および停止しようとし、以前の回答で言及されているすべてのディレクトリをクリアしましたが、何も助けませんでした。
この問題は、OSを再起動し、Hadoopを最初から設定した後にのみ解決されました。 (再起動せずにゼロからHadoopを設定しても機能しませんでした)
私はいくつかの混合構成を適用し、それは私のために働いた。
最初>>${HADOOP_HOME}/sbin/stop-all.sh
を使用してHadoopのすべてのサービスを停止します
2番目>>${HADOOP_HOME}/etc/hadoop/mapred-site.xml
にあるmapred-site.xmlを確認し、localhost
をmaster
に変更します。
3番目>>
hadoopによって作成された一時フォルダーを削除するrm -rf //path//to//your//hadoop//temp//folder
4番目>>
tempに再帰的許可を追加します。Sudo chmod -R 777 //path//to//your//hadoop//temp//folder
5番目>>
今、すべてのサービスを再度開始します。そして、まずデータノードを含むすべてのサービスが実行されていることを確認します。 ここに画像の説明を入力
以下を確認する必要があります。
/ app/hadoop/tmp/dfs/data/current/VERSIONおよび/ app/hadoop/tmp/dfs/name/current/VERSION ---
これらの2つのファイルと、名前ノードとデータノードの名前空間ID.
データノードのNamespaceIDが名前ノードのNamespaceIDと同じ場合にのみ、データノードが実行されます。
それらが異なる場合は、viエディターまたはgeditを使用してネームノードNamespaceIDをデータノードのネームスペースIDにコピーし、保存して、デーモンを再実行します。
これを試して
dfs.data.dir
に指定された値を変更しますMac OS(擬似分散モード)の場合:
オープンターミナル
cd /tmp
rm -rf hadoop*
bin/hdfs namenode -format
sbin/start-dfs.sh
Hadoopでjpsを使用してデータノードを見つけることができなくなったら、hadoopのインストールディレクトリ(/opt/hadoop-2.7.0/hadoop_data/dfs/data
)start-all.shおよびjpsを使用してhadoopを再起動しました。
今回はデータノードを見つけることができ、現在のフォルダーが再び作成されました。
これは、Hadoopの新しいバージョン用です(2.4.0を実行しています)
ファイル内:hdfs-site.xml dfs.namenode.name.dir dfs.namenode.data.dirに対応するディレクトリパスを探します
お役に立てれば。