HDFS が使用されていない場合のデータの局所性に似ていますが、HDFS に固有です。
2 つの Hadoop クラスターがあり、クラスター B から大きなデータセット (100GB) を読み取り、それをクラスター A から小さなデータセット (10 行) に結合するクラスター A JobTracker に pig ジョブを送信しています。
b_data = load 'hdfs://b-cluster/big.txt' as ( customer_id: chararray);
a_data = load 'hdfs://a-cluster/small.txt' as ( customer_id: chararray);
j_data = join a_data by acct_id left, b_data by customer_id;
dump j_data;
驚くべきことに、それは機能します + クラスター A でローカル データセットのみを操作する場合とほぼ同じ時間 (約 10 分) かかります
技術的に何が起こっているのですか?タスクトラッカーは A ノードのみで実行されていますか? B データノードからデータセットをどのように読み取っていますか? データの局所性を享受できない可能性があるのに、なぜそんなに速いのでしょうか?
ありがとう!