В чем разница между задачами карт, локальными для стойки, и задачами карт, локальными для данных?

Когда я запускаю «hadoop job -status xxx», выведите следующий список.

Rack-local map tasks=124
Data-local map tasks=6

В чем разница между задачами карт, локальными для стойки, и задачами карт, локальными для данных?


person Sam    schedule 07.10.2012    source источник
comment
Ответ Тома правильный, но меня бы беспокоило количество задач, стоящих локально, по сравнению с локальными задачами. Вам нужно гораздо больше задач, связанных с локальными данными, чем это. В более крупных кластерах я обычно вижу, что ~ 95% из них являются локальными данными. С вами все наоборот.   -  person Donald Miner    schedule 08.10.2012
comment
@DonaldMiner да, это нехорошо. Однако это во многом зависит от того, сколько заданий выполняется в этом кластере. Иногда вам нужно пожертвовать производительностью одной работы, чтобы другая могла быть быстрее.   -  person Thomas Jungblut    schedule 08.10.2012
comment
@ThomasJungblut это число все еще звучит неправильно. В более крупных кластерах с 3-кратной репликацией, даже с полной емкостью слота, я видел, что это число намного выше.   -  person Donald Miner    schedule 08.10.2012
comment
@DonaldMiner Это не происходит в больших кластерах таким чрезмерным образом;) Я предполагаю, что он использует 3-4 сервера, и задание заблокировало слоты на машинах (просто коэффициент репликации два?), На которых лежат данные. Но поскольку это всего лишь предположение, давайте не будем слишком много спорить об этом.   -  person Thomas Jungblut    schedule 08.10.2012


Ответы (2)


В задаче с локальными данными ничего копировать не нужно. Это потому, что блок физически находится на том же сервере, что и вычисление.

Следующий уровень — локальная задача стойки, здесь данные должны быть скопированы, потому что нет доступной локальной копии нужного блока. Обратите внимание, что локальная стойка копирует только внутри локальной коммутации в сети.

Существует также наихудший случай, когда данные недоступны ни локально, ни в той же стойке. Таким образом, это должно быть скопировано через два коммутатора на хосты, на которых выполняется вычисление. Я не знаю, есть ли для этого счетчик, но в основном это должно быть #all tasks - #data-local tasks - #rack-local tasks.

person Thomas Jungblut    schedule 07.10.2012

Отмечу, что обеспечение гигабитной (или более быстрой) сети между компьютерами в одной стойке намного дешевле, чем для большего количества компьютеров.
Основная причина заключается в том, что Ethernet-коммутаторы не масштабируются, и мы не можем иметь такой коммутатор на сотни портов по разумной цене.
Из-за этого hadoop пытается запускать задачи хотя бы в той же стойке, если не может сделать это на узле, где хранятся данные.

person David Gruzman    schedule 07.10.2012