кластер hadoop: задача сопоставления выполняется только на одной машине, а не на всех

У меня есть hadoop cluster of three machines, где одна машина действует и как ведущая, и как ведомая.

Когда я запускаю wordcount-example , он запускает задачи карты на двух машинах — worker1 и worker2. Но когда я запускаю свой собственный код, он выполняется только на одном компьютере - worker1, как мне заставить задачи карты выполняться на всех компьютерах?

Input Split Locations

/default-rack/master
/default-rack/worker1
/default-rack/worker2  

ИСПРАВЛЕНО!!!

Я добавил следующее в свою конфигурацию mapred-site.xml, и это исправлено

<property>
  <name>mapred.map.tasks</name>
  <value>100</value>
</property>

person daydreamer    schedule 25.10.2011    source источник
comment
Алгоритм планирования одинаков для потоковой передачи и обычных заданий Java MR. Не должно быть никакой разницы, где запланированы задачи, если только слоты MR не помечены как свободные в JobTracker.   -  person Praveen Sripati    schedule 26.10.2011
comment
В обоих случаях опишите, как выглядит ваш ввод. Такие вещи, как: количество входных файлов, размер файлов и использованное сжатие.   -  person Niels Basjes    schedule 26.10.2011
comment
@Niels - места разделения ввода были указаны в исходном запросе. Похоже, что места разделения одинаковы с/без потоковой передачи. Логика планирования FIFO (по умолчанию) одинакова как с потоковой передачей, так и без нее.   -  person Praveen Sripati    schedule 26.10.2011
comment
@Praveen - я не понимаю, что ты только что сказал. Я указал, что мечтатель должен указать, как выглядит его ввод. Я подозреваю, что он выполняет два разных задания с разными входными файлами, и что его собственное задание выполняется либо с небольшими файлами, либо с неразделяемыми файлами.   -  person Niels Basjes    schedule 27.10.2011
comment
@daydreamer - почему добавление mapred.map.tasks решило проблему?   -  person Praveen Sripati    schedule 17.11.2011
comment
@Praveen, потому что по умолчанию на машине выполняются только две задачи карты (я думаю), и мы можем увеличить это число, добавив mapred.map.tasks   -  person daydreamer    schedule 17.11.2011
comment
@daydreamer - до сих пор не ясно - как увеличение mapred.map.tasks со значения по умолчанию 2 до 100 заставит вашу работу выполняться на двух узлах вместо одного - я что-то чувствую :)   -  person Praveen Sripati    schedule 17.11.2011
comment
@PraveenSripati, я только что сделал это, и это сработало, никаких других изменений я не делал   -  person daydreamer    schedule 17.11.2011


Ответы (1)


Насколько велик ваш вклад? Hadoop разбивает задания на входные разбиения, и если ваш файл слишком мал, в нем будет только одно разбиение.

Попробуйте файл большего размера, скажем, размером около 1 ГБ, и посмотрите, какие мапперы у вас получатся.


Вы также можете убедиться, что каждый TaskTracker правильно отчитывается перед JobTracker. Если есть TaskTracker, который не подключен должным образом, он не будет получать задачи:

   $ hadoop job -list-active-trackers

Эта команда должна вывести все 3 ваших хоста.

person Donald Miner    schedule 26.10.2011