Когда я запускаю «hadoop job -status xxx», выведите следующий список.
Rack-local map tasks=124
Data-local map tasks=6
В чем разница между задачами карт, локальными для стойки, и задачами карт, локальными для данных?
Когда я запускаю «hadoop job -status xxx», выведите следующий список.
Rack-local map tasks=124
Data-local map tasks=6
В чем разница между задачами карт, локальными для стойки, и задачами карт, локальными для данных?
В задаче с локальными данными ничего копировать не нужно. Это потому, что блок физически находится на том же сервере, что и вычисление.
Следующий уровень — локальная задача стойки, здесь данные должны быть скопированы, потому что нет доступной локальной копии нужного блока. Обратите внимание, что локальная стойка копирует только внутри локальной коммутации в сети.
Существует также наихудший случай, когда данные недоступны ни локально, ни в той же стойке. Таким образом, это должно быть скопировано через два коммутатора на хосты, на которых выполняется вычисление. Я не знаю, есть ли для этого счетчик, но в основном это должно быть #all tasks - #data-local tasks - #rack-local tasks
.
Отмечу, что обеспечение гигабитной (или более быстрой) сети между компьютерами в одной стойке намного дешевле, чем для большего количества компьютеров.
Основная причина заключается в том, что Ethernet-коммутаторы не масштабируются, и мы не можем иметь такой коммутатор на сотни портов по разумной цене.
Из-за этого hadoop пытается запускать задачи хотя бы в той же стойке, если не может сделать это на узле, где хранятся данные.