4

8 台のマシンを持つ Hadoop クラスターがあり、8 台のマシンすべてがデータ ノードです。HDFS にシーケンス ファイル (各ファイルは約 1GB) を継続的に作成する 1 台のマシン (マシン A など) で実行されているプログラムがあります。

ここに問題があります。8 台のマシンはすべて同じハードウェアであり、容量も同じです。他のマシンがまだ HDFS 用のディスクに約 50% の空き容量を持っている場合、マシン A には 5% しか残っていません。ブロック情報を確認したところ、ほぼすべてのブロックがマシン A に 1 つのレプリカを持っていることがわかりました。

レプリカのバランスを取る方法はありますか? ありがとう。

4

2 に答える 2

1

やり方がある。Hadoop コマンド ライン バランサ ツールを使用できます。HDFS データは、常に DataNode 全体に均一に配置されるとは限りません。クラスタ内の DataNode 全体に HDFS データを均一に分散するには、これを使用できます。

 hadoop balancer [-threshold <threshold>]

ここで、しきい値はディスク容量の割合です

詳細については、次のリンクを参照してください。

于 2013-10-29T08:41:16.607 に答える
1

これはデフォルトの配置ポリシーです。これは、各 HDFS ノードが計算ノードでもあり、書き込みマシンが均一に分散されている典型的な M/R パターンでうまく機能します。

気に入らない場合は、HDFS-385 Design a pluggable interface to place the replicas of blocks in HDFS があります。インターフェイスを実装するクラスを作成し、このクラスをinBlockPlacementPolicyとして設定する必要があります。dfs.block.replicator.classnamehdfs-site.xml

于 2013-10-29T07:17:46.613 に答える