ローカルシステムからHDFSにデータをコピーする場合、データがノード全体に均等に分散されていることを確認できますか?
PS HDFSは、各ブロックが3つの異なるノードに格納されることを保証します。しかし、これは私のファイルのすべてのブロックが同じ3つのノードでソートされることを意味しますか?または、HDFSは新しいブロックごとにランダムにそれらを選択しますか?
レプリケーションが 3 に設定されている場合、3 つの別々のノードに配置されます。配置されるノードの数は、レプリケーション ファクターによって制御されます。より大きな分散が必要な場合は、値を編集し$HADOOP_HOME/conf/hadoop-site.xml
て変更することにより、複製数を増やすことができdfs.replication
ます。
新しいブロックはほぼランダムに配置されると思います。異なるラック間での分散については、いくつかの考慮事項があります (hadoop がラックを認識している場合)。3 ラックと 2 ラックでレプリケーションを行う場合、2 つのブロックが 1 つのラックに配置され、3 番目のブロックが別のラックに配置される例 (リンクが見つかりません) があります。どのノードがラック内のブロックを取得するかについての設定は表示されていないと思います。
同じファイルのブロックを同じノードに保存する設定を示したり述べたりするものは見たことがありません。
ノード間で強制的にデータのバランスをとる方法を探している場合 (任意の値でレプリケーションを使用) $HADOOP_HOME/bin/start-balancer.sh
、クラスター内でブロックを自動的に移動するバランス プロセスを実行する簡単なオプションがあります。これと他のいくつかのバランス調整オプションは、 Hadoop の FAQで見つけることができます
それが役立つことを願っています。
Namenode のポート 50070 で HDFS Web UI を開くことができます。データノードに関する情報が表示されます。そこに表示されるのは、ノードごとの使用済みスペースです。
UI がない場合は、データ ノードの HDFS ディレクトリで使用されているスペースを確認できます。
データの偏りがある場合は、徐々に解決するリバランサーを実行できます。
はい、Hadoop はブロックごとにデータを分散するため、各ブロックは個別に分散されます。