Hadoop: высокая загрузка процессора на стороне клиента после фиксации заданий - PullRequest
1 голос
/ 25 сентября 2011

Я не смог найти ответ на свой вопрос, просматривая некоторые руководства Hadoop: я выполняю различные задания Hadoop (до 200) за один раз с помощью сценария оболочки на клиентском компьютере. Каждая работа запускается с помощью JAR (который довольно большой; около 150 МБ). Сразу после отправки заданий клиентская машина имеет очень высокую нагрузку на процессор (каждое ядро ​​на 100%), и оперативная память заполняется довольно быстро. Таким образом, клиент больше не может использоваться. Я подумал, что вычисление каждого задания полностью выполняется в рамках Hadoop, и только кластер и клиент обмениваются только некоторой информацией о состоянии во время выполнения задания.

Итак, почему клиент полностью растянут? Я делаю работу Hadoop неправильно? Каждый JAR слишком большой?

Заранее спасибо.

1 Ответ

2 голосов
/ 25 сентября 2011

Дело не в банке. Клиентская сторона рассчитывает InputSplits. Таким образом, вполне возможно, что при большом количестве входных файлов для каждого задания клиентская машина получает большую нагрузку. Но я предполагаю, что при отправке 200 заданий у обработчика RPC на устройстве отслеживания заданий возникают некоторые проблемы. Сколько обработчиков RPC активны в JobTracker?

В любом случае, я бы отправлял до 10 или 20 заданий за раз и ждал их завершения. Я полагаю, у вас есть планировщик FIFO по умолчанию? Таким образом, вы не выиграете от подачи всех 200 работ одновременно.

...