2012-12-05 4 views
12

ローカルディスクからファイルをhdfsにコピーしようとしました。最初はSafeModeExceptionでした。解決策を探しているうちに、同じコマンドをもう一度実行すると問題は表示されません。だから私はもう一度試しましたが、例外はありませんでした。SafeModeException:名前ノードがセーフモードにあります

[email protected]:/usr/local/hadoop$ bin/hadoop dfs -copyFromLocal /tmp/gutenberg/ /user/hduser/gutenberg 
copyFromLocal: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/hduser/gutenberg. Name node is in safe mode. 
[email protected]:/usr/local/hadoop$ bin/hadoop dfs -copyFromLocal /tmp/gutenberg/ /user/hduser/gutenberg 

どうしてですか?このコードを使用してセーフモードをオフにしておく必要がありますか?

hadoop dfs -safemode leave 
+0

コマンド実行の時間差は何ですか?最初にHDFSサービスを起動すると、すべてのデータノードがオンラインになるまでに数分かかります。 –

+2

FYI、私のバージョンのhadoopにセーフモードを残すコマンドは、 'hadoop dfsadmin -safemode leave'です。 –

+0

@saket問題の解決策を見つけましたか? –

答えて

17

名前ノードはデータノードでオンラインであると報告されたブロックの構成されたパーセントまでセーフモードです。 に設定することができますhdfs-site.xml

ブロックが非常に少ない小規模/開発用クラスタでは、このパラメータをデフォルトの0.9999fの値より小さくすることが理にかなっています。さもなければ、ブロックが1つ失われると、セーフモードでシステムがハングする可能性があります。 binhadoopパスへ

+1

安全モードのクラスタはHDFSから読み込めますが、HDFSに書き込むことはできません。 –

+0

はい。読み取り専用モードです。 –

12

ゴー(/usr/local/hadoop/bin/私のシステムでは)、

cd /usr/local/hadoop/bin/ 

ファイルhadoop

[email protected]:/usr/local/hadoop/bin$ ls 

O/pはなりますがあり確認、

hadoop   hadoop-daemons.sh start-all.sh  start-jobhistoryserver.sh stop-balancer.sh   stop-mapred.sh 
hadoop-config.sh rcc    start-balancer.sh start-mapred.sh   stop-dfs.sh    task-controller 
hadoop-daemon.sh slaves.sh   start-dfs.sh  stop-all.sh    stop-jobhistoryserver.sh 

次に、セーフモードをオフにする必要があります。 D ./hadoop dfsadmin -safemode leave、あなたに応答を取得します

[email protected]:/usr/local/hadoop/bin$ ./hadoop dfsadmin -safemode leave 

Safe mode is OFF 

注:私はhadoopuserの名前でのHadoopユーザーを作成しました。

+0

答えはすごいです、ありがとう、トン@AJ –

関連する問題