2017-09-25 11 views
0

毎日、Hadoopクラスタは、「複製禁止ブロック」があると報告しています。これはCloudera Managerによって管理されます。私は問題を修正するコマンドが実行されているHDFS再発のエラー:複製されていないブロック

! Under-Replicated Blocks

Concerning: 767 under replicated blocks in the cluster. 3,115 total blocks in the cluster. Percentage under replicated blocks: 24.62%. Warning threshold: 10.00%.

が、次の朝には、警告が任意の新しいデータが追加されずに戻って、時にはです:健康警告の例があります。一時的に成功したコマンドの一つは、私も

su hdfs 
hdfs fsck/| grep 'Under replicated' | awk -F':' '{print $1}' >> /tmp/under_replicated_files 
for hdfsfile in `cat /tmp/under_replicated_files`; do echo "Fixing $hdfsfile :" ; hadoop fs -setrep 2 $hdfsfile; done 

両方の作業を行うanother recommended commandを試してみました

hdfs dfs -setrep -R 2 /* 

だったが、修正は永続的ではありません。

Cloudera Managerでは、Replication FactorMinimal Block Replicationはともに2に設定されています。

約24時間ごとに1回しか発生しないため、試行錯誤は私の唯一の手段であり、修正を試みるのは困難で時間がかかります。なぜこのエラーが戻ってくるのか分かりません!任意の提案をいただければ幸いです。 Clouderaのマネージャーで、次のHDFS構成を設定することで解決してくれてありがとう

+0

基本的に、データが複製されていない場合、HDFSはブロックを他のデータノードに自動的に複製して、複製の要素と一致させる必要があります。 CM> HDFS>アクションドロップダウンで指定したバランサを実行して、このエラーを修正することもできます。 クラスタにいくつのデータノードがありますか? NNのWeb UIを介して、どのファイルに複製されたブロックがあるかを確認しましたか?これらのファイルは、ジョブによって作成された一時ファイルですか?関連する仕事が完了してからしばらくの間、何もせずにそのような警告が消え去るのを見ましたか? – Salim

+0

問題が発生したときと同じリズムで仕事をしていますか? – tk421

+0

@ tk421残念ながら、それはデータ取り込みジョブ(またはそのような仕事のためのジョブ)なしでは単独で発生するようです。 – Smittey

答えて

0

問題:HDFSサービスへ

  1. 移動します。
  2. [設定]タブをクリックします。
  3. [スコープ]> [名前ノード]を選択します。
  4. Filesystem Trash Interval0 day(s)

    が '0' の入力は、ゴミの機能を無効にします。

    : 次のコマンドを実行して、生産under_replicated_filesファイルを調べて示した - 私はこれを設定したら

このプロパティは、また、私は問題のレプリケートされないゴミ・ブロックのすべてを削除しfs.trash.interval

を使用して設定することができます

hdfs fsck/| grep 'Under replicated' | awk -F':' '{print $1}' >> /tmp/under_replicated_files 

私はすべての.Trashを削除しました。

これは、いったん削除されると、他のものを.Trashに移動させるのを止めました(私は誰にとっても受け入れられる解決策ではないかもしれないが、それは私のユースケースではまったく問題ありません)。また、複製されていないブロックをすべて削除すると、警告が消えたことになります。

関連する問題