「hadoopjob-statusxxx」を実行すると、次のリストが出力されます。
Rack-local map tasks=124
Data-local map tasks=6
ラックローカルマップタスクとデータローカルマップタスクの違いは何ですか?
「hadoopjob-statusxxx」を実行すると、次のリストが出力されます。
Rack-local map tasks=124
Data-local map tasks=6
ラックローカルマップタスクとデータローカルマップタスクの違いは何ですか?
In a data-local task, nothing needs to be copied. That's because the block is physically on the same server like the computation.
The next tier is the rack-local task, here the data must be copied, because there is no local copy of the desired block available. Note that rack-local does only copy within the rack-local switching of the network.
There is also the worst case, where the data isn't available local, nor on the same rack. So this must be copied over two switches to the hosts where the computation runs. I don't know if there is a counter for that, but basically this must be #all tasks - #data-local tasks - #rack-local tasks
.
同じラック内のコンピューター間でギガビット (または高速) ネットワークを提供することは、より多くのコンピューターの場合よりもはるかに安価であることを指摘しておきます。
根本的な原因は、イーサネット スイッチはスケーラブルではなく、何百ものポートに対してそのようなスイッチを手頃な価格で提供できないという事実です。
そのため、データが保存されているノードで実行できない場合、hadoop は少なくとも同じラックでタスクを実行しようとします。