2013-07-24 8 views
5

Hadoopでは、ノードを廃止すると、Hadoopはクラスタ内のファイルを再配布し、適切に複製されます。分解されたノードからデータが削除されますか?ノードを分解すると、そのノードからデータが削除されますか?

特定のノードのディスク間でデータのバランスを取ろうとしています。私はノードを分解してノードを再処理することでこれを行う予定です。分解が完了した後、そのノードからデータを削除する必要がありますか、それとも再送信するだけで十分ですか(除外ファイルから除外してhadoop dfsadmin -refreshNodesを実行してください)。

更新:私はノードを分解し、そのノードのすべてのデータを削除してから再分類しました。

+0

ノードに複数のディスクがマウントされていますか? –

+0

はい。ノードには6つのディスクがあります。 – schmmd

答えて

1

AFAIK、あなたはそれを廃止するとデータはDataNodeから削除されません。しかし、そのDataNodeへの書き込みは可能ではありません。 DataNodeを廃止すると、そのDataNodeによって保持されているレプリカは、「廃止」されたレプリカとしてマークされます。これらのレプリカは、引き続き読み取りアクセスに適格です。

なぜ、この分解/再処理サイクルを実行したいのですか?hdfs-site.xmlのdfs.data.dirプロパティにすべてのディスクをカンマ区切りの値として指定し、 DataNodeデーモン。再起動後にバランサを実行してください。

+0

バランサは、ノード内のディスク上ではなく、ノード上のバランシングを行います。ノードに4つのディスクがあり、それらのディスクがいっぱいになると、さらに2つのディスクが追加されます。データがアンバランスであるため、ディスクスペースの問題が発生します。 https://issues.apache.org/jira/browse/HDFS-1312を参照してください。 – schmmd

+0

はい。それはできません。私はあなたが質問にこれを指定しなかったので、ノードにすべてのディスクを接続していると仮定していました。とにかく、あなたは@ JtheRockerによって提案されたようにそれを行うことができます。 – Tariq

0

現在、Hadoopはこれを自動的に行うことはサポートしていません。しかし、それを自動的に行うためのハッキングがあるかもしれません。

私の意見では、処理が中断されてからレプリケーションが遅くなり、ブロックを手動で別のディスクに移動させることになります。

あなたが行うことができ、手動かのディスク間でバランスをとる、このような何か -

.Take HDFSまたはあなたがターゲットとしている唯一のデータノードダウン。

UNIXのmvコマンドを使用して、個々のブロックとメタペアをホストマシン上のあるディレクトリから別のディレクトリに移動します。例えば。 blkデータファイルとblk.metaファイルのペアを同じホスト上のディスクをまたいで移動させます。

.Restart HDFSやデータノード

Reference link for the procedure

補遺:あなたはおそらくblk_ *BLKのペアを移動する必要が _ *に対してメタファイルと各データディスクのディレクトリ内のdfs/current。例えば。ペアファイルは、 - あなたはこれを手動で行う必要がない場合blk_3340211089776584759とblk_3340211089776584759_1158.metaは

、あなたはおそらく/ DFSに占有されているどのくらいのあなたのデータディスクのそれぞれの現在のディレクトリを検出するために、カスタムスクリプトを書くことができますblk_ *とblk _ *。metaのペアを1つずつ移動させます。

+0

私はこれを知っています。 blkファイルをどのサブフォルダに移動するかについてもっと詳しく知っておくといいでしょう。 – schmmd

+0

私は1週間前にこれを行うためのスカラプログラムを書いたが、分解と再処理はより安全に思える:https://github.com/schmmd/hadoop-balancer – schmmd

+0

@schmmd、私は一見するだろう。ありがとう、その間に、私はいくつかの編集を見てきました!このことを解決する方法を見つけよう。 :) –

関連する問題