Длительные задачи карт в небольшом файле HDFS - PullRequest
0 голосов
/ 02 февраля 2012

Представьте себе сценарий, у вас есть текстовый файл с, скажем, 10000 строк в нем, и поэтому он будет очень маленьким, когда вы сохраните его в HDFS.Теперь ваша цель состоит в том, чтобы запустить работу map / lower для этого небольшого файла, ожидая, что каждая строка текстового файла будет передана в маппер.Однако время обработки каждой карты k, v велико, и вы хотите запустить столько кластеров в кластере, чтобы получить максимально возможный параллелизм для скорейшего завершения задания отображения.

Поскольку файл небольшого размера, его можно сохранить только в одном или двух блоках hdfs, и я предполагаю, что количество предоставленных карт по hasoop для работы будет равно числу блоков hdfs, которые произошли сбыть один или два.Но это нежелательно, так как вы хотите запустить как можно больше картографов.Вот мои вопросы?

  1. Какие у меня есть варианты контроля правильного количества картографов для моего сценария обработки небольшого файла?
  2. Каковы плюсы и минусы каждого из доступныхварианты?

1 Ответ

1 голос
/ 02 февраля 2012

Наилучшим подходом является использование NLineInputFormat .Согласно документации NLineInputFormat which splits N lines of input as one split.Недостатком этого подхода является то, что локальность данных теряется, поскольку данные невелики, это не должно иметь значения.

...