2016-10-30 7 views
0

У меня есть общий вопрос о разделении файлов Hadoop и нескольких картографах. Я новичок в Hadoop и пытаюсь понять, как настроить оптимальную производительность. В настоящее время мой проект обрабатывает файлы WARC, которые являются GZIPed.Hadoop process WARC файлы

Используя текущий файл InputFileFormat, файл отправляется одному картографу и не расщепляется. Я понимаю, что это правильное поведение для зашифрованного файла. Будет ли преимущество в производительности для дешифрования файла в качестве промежуточного шага перед запуском задания, чтобы разрешить разделение задания и, следовательно, использовать больше карт? Это возможно? Имеет ли большее количество мапперов увеличение накладных расходов в латентности или лучше иметь один картограф? Спасибо за вашу помощь.

+0

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

+0

Благодарим за отзыв. Я использую Amazon Elastic Map Reduce для обработки. Используя текущую конфигурацию, я использую только один картограф, который означает, что другие узлы сидят без дела, что кажется мне пустой тратой. В идеале я хотел бы, чтобы файл был разбит на несколько картографов, чтобы воспользоваться всеми узлами, которые я подготовил. Я думаю, вы ответили на мой вопрос о том, следует ли сначала дешифровать файл в локальном хранилище, чтобы его можно было разделить на несколько картографов через систему hadoop. – user1738628

ответ

0

Хотя файлы WARC являются gzipped, они разделяются (см. Best splittable compression for Hadoop input = bz2?), поскольку каждая запись имеет свой собственный блок дефляции. Но рекордные смещения должны быть известны заранее.

Но это действительно необходимо? Файлы Common Crawl WARC имеют размер около 1 ГБ, его следует обрабатывать обычно в пределах макс. 15 минут. Учитывая накладные расходы, чтобы запустить задачу карты, что является разумным временем для запуска картографа. Ev., Mapper также может обрабатывать несколько файлов WARC, но важно, чтобы у вас было достаточно разделов из списка входных файлов WARC, чтобы все узлы выполняли задачи. Обработка одного файла WARC на Hadoop означает много ненужных накладных расходов.

+0

Спасибо Себастьян за ответ. Мой картограф выполняет тяжелые задачи синтаксического анализа на каждой записи, содержащейся в файле GZipped WARC. Мои начальные тесты заняли около 30 минут для создания карты и уменьшения 1 файла GZipped. Я тестировал подход производителя/потребителя локально, чтобы один поток перебирал все записи в потоке и помещал в очередь для потребительских потоков для анализа содержимого. Если бы я мог расколоться, чтобы иметь больше параллельных копий, я мог бы потенциально сократить время для каждого файла архива WARC до нескольких минут. Это звучит разумно или неправильно? – user1738628

 Смежные вопросы

  • Нет связанных вопросов^_^