web-dev-qa-db-ja.com

名前ノードはセーフモードです。帰れない

root# bin/hadoop fs -mkdir t
mkdir: org.Apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/root/t. Name node is in safe mode.

hdfsで何も作成できない

やった

root# bin/hadoop fs -safemode leave

しかし、表示

safemode: Unknown command

何が問題ですか?

Solution

113

Namenodeを強制的にセーフモードから抜け出すには、次のコマンドを実行する必要があります。

 bin/hadoop dfsadmin -safemode leave

Unknown command-safemodeのサブコマンドではなく、hadoop fsのサブコマンドではないため、コマンドに対してhadoop dfsadminエラーが発生しています。

また、上記のコマンドの後、一度hadoop fsckを実行することをお勧めします。これにより、hdfsにある不整合を整理することができます。

更新:

新しいディストリビューションでは、hdfsコマンドの代わりにhadoopコマンドを使用してください。 hadoopコマンドは非推奨です:

hdfs dfsadmin -safemode leave

hadoop dfsadminは廃止され、hadoop fsコマンドも廃止されました。すべてのhdfs関連タスクは、別のコマンドhdfsに移動されています。

198
Amar

これを試して、それは動作します

Sudo -u hdfs hdfs dfsadmin -safemode leave
27
Wesam Na

コマンドは私のために機能しませんでしたが、次は機能しました

hdfs dfsadmin -safemode leave

hdfsコマンドの代わりにhadoopコマンドを使用しました。

チェックアウト http://ask.gopivotal.com/hc/en-us/articles/200933026-HDFS-goes-into-readonly-mode-and-errors-out-with-Name-node-is- in-safe-mode- リンクも

21
Kishan B

上記のHadoopバージョン2.6.1を使用する場合、コマンドは機能しますが、減価すると不満を言います。 HadoopをDockerコンテナーで実行していたため、実際にhadoop dfsadmin -safemode leaveを使用できませんでした。コンテナーで実行すると、そのコマンドは魔法のように失敗します。私はドキュメントをチェックし、ドキュメントにdfs.safemode.threshold.pctを見つけました

Dfs.replication.minで定義された最小レプリケーション要件を満たすブロックの割合を指定します。 0以下の値は、セーフモードを終了する前に特定の割合のブロックを待機しないことを意味します。 1より大きい値は、セーフモードを永続的にします。

そこで、hdfs-site.xmlを次のように変更しました(古いHadoopバージョンでは、明らかにhdfs-default.xmlでそれを行う必要があります:

<configuration>
    <property>
        <name>dfs.safemode.threshold.pct</name>
        <value>0</value>
    </property>
</configuration>
6
ambodi

これを試してください

Sudo -u hdfs hdfs dfsadmin -safemode leave

セーフモードのステータスを確認します

Sudo -u hdfs hdfs dfsadmin -safemode get

まだセーフモードである場合、理由の1つはノードの十分なスペースではないため、次を使用してノードのディスク使用量を確認できます。

df -h

ルートパーティションがいっぱいの場合は、ファイルを削除するか、ルートパーティションにスペースを追加して、最初の手順を再試行します。

5
Tarun Reddy

メモリーが不足すると、Namenodeはセーフモードに入ります。その結果、HDFSは読み取り専用になります。つまり、HDFSに追加のディレクトリまたはファイルを作成することはできません。セーフモードを終了するには、次のコマンドを使用します。

hadoop dfsadmin -safemode leave

Cloudera Managerを使用している場合:

go to >>Actions>>Leave Safemode

しかし、それは常に問題を解決するとは限りません。完全なソリューションは、メモリ内にいくつかのスペースを作ることにあります。次のコマンドを使用して、メモリ使用量を確認します。

free -m

Clouderaを使用している場合は、HDFSに健康状態が悪い兆候があるかどうかも確認できます。おそらく、namenodeに関連するメモリの問題を示しているはずです。使用可能なオプションに従って、より多くのメモリを割り当てます。 Cloudera Managerを使用していない場合、同じコマンドを使用するコマンドはわかりませんが、方法が必要です。それが役に立てば幸い! :)

4
Amitesh Ranjan

セーフモードがオンの場合(HDFSは読み取り専用モードです)
セーフモードオフの意味(HDFSは書き込み可能および読み取り可能モードです)

Hadoop 2.6.0では、以下のコマンドを使用して名前ノードのステータスを確認できます。

ネームノードのステータスを確認するには

$ hdfs dfsadmin -safemode get

安全モードに入るには:

$ hdfs dfsadmin -safemode enter

安全モードを終了するには

~$ hdfs dfsadmin -safemode leave
3

HDFS OSユーザーを使用して以下のコマンドを実行し、セーフモードを無効にします。

Sudo -u hdfs hadoop dfsadmin -safemode leave
1
Mayank Gupta

以下のコマンドを使用してセーフモードをオフにします

$> hdfs dfsadmin -safemode leave

0
Azam Khan