すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:NameNode の起動後に NameNode がセーフモードを終了できない場合はどうすればよいですか?

最終更新日:Jan 11, 2025

このトピックでは、NameNode の起動後に NameNode がセーフモードを終了できない問題のトラブルシューティング方法について説明します。

エラーメッセージ

NameNode ログまたは Hadoop Distributed File System(HDFS)コンポーネントの Web ユーザーインターフェース(UI)に次のエラーメッセージが表示される場合は、NameNode がセーフモードを終了できないことを示します。その結果、HDFS のほとんどのサービスを使用できません。

Safemode is ON.The reported blocks xxx needs addition ablocks to reach the threshold 0.9990 of total blocks yyy  // セーフモードがオンです。報告されたブロック xxx は、合計ブロック yyy のしきい値 0.9990 に到達するために追加の ablocks が必要です。

原因

DataNode によって報告されたブロック数が指定されたしきい値に達していない場合、NameNode はセーフモードを終了できません。しきい値は、合計ブロック数に対する報告されたブロック数の割合です。デフォルトのしきい値は 0.999f です。すべての DataNode が起動されているかどうかを確認します。すべての DataNode が起動されている場合は、次のシナリオが発生しているかどうかを確認します。

  • 不適切な O&M により一部のブロックが失われ、しきい値に到達できません。このシナリオでは、NameNode は自動的にセーフモードを終了できません。

  • 通常の HA スイッチオーバーではなく例外により、DataNode や NameNode などの多数の HDFS プロセスが再起動された場合、DataNode がブロックを報告するのに時間がかかります。このシナリオでは、DataNode はフルブロックのレポートをトリガーする必要があり、NameNode は受信したブロック数がしきい値に達した場合にのみ自動的にセーフモードを終了できます。プロセス全体にかかる時間は、ブロック数によって異なります。

解決策

  • 解決策 1:hdfs ユーザーとして次のコマンドを実行して、手動でセーフモードを終了します。

    hdfs dfsadmin -safemode leave // hdfs dfsadmin -safemode leave
  • 解決策 2:次のコマンドを実行して、しきい値を下げます。しきい値を下げた後、NameNode で変更を有効にするには、次の手順を実行する必要があります。HDFS セクションの [ステータス] タブで、[再起動] コンポーネントの [アクション] 列にある NameNode をクリックします。

    dfs.namenode.safemode.threshold-pct=0.9f (Default value: 0.999f.) // dfs.namenode.safemode.threshold-pct=0.9f(デフォルト値:0.999f)
    説明

    上記の例では、0.9f が使用されています。ビジネス要件に基づいて dfs.namenode.safemode.threshold-pct パラメーターの値を指定できます。