Hadoop — как повысить производительность в моем случае?

В настоящее время я использую AWS-EMR в качестве кластера. Для библиотеки я использую каскадирование.

Входные данные хранятся в aws S3 в каталоге. Каталог содержит много файлов, каждый размером около 100 МБ (не сжатый, обычный текст), и количество файлов может легко достигать 100 в день. Имя каждого файла содержит дату. В конце дня я обрабатываю все файлы, созданные в этот день.

В настоящее время мой процесс подачи заявки на Hadoop происходит следующим образом:

  • Используйте папку S3 в качестве входного сигнала, используя GlobHfs
  • GlobHFS имеет собственный фильтр, в котором он фильтрует имя файла и принимает только сегодняшний файл.
  • обрабатывать только отфильтрованные файлы и установить выходной кран на S3.

Мой вопрос:

  • Должен ли я использовать сжатие? Если да, то какой тип сжатия мне следует использовать? Я читал, что сжатие .gz делает работу только одним картографом, в моем случае, когда в папке много файлов, это актуально? Должен ли я использовать LZO с каждым файлом?
  • Должен ли я хранить файлы большего размера или текущий формат (много файлов меньшего размера) достаточно хорош?

person dieend    schedule 16.10.2014    source источник
comment
Что вы хотите улучшить? Ваша работа занимает слишком много времени или вы хотите сэкономить место на диске?   -  person Mehraban    schedule 16.10.2014
comment
@SAM Если я могу, и то, и другое, или вы можете предложить компромисс   -  person dieend    schedule 16.10.2014
comment
Я не думаю, что это возможно. Сжатие занимает много времени. Сколько у вас узлов и каков размер блока fs?   -  person Mehraban    schedule 16.10.2014


Ответы (2)


Сжатие поможет уменьшить сетевой поток данных. Сжатие LZO больше подходит для заданий MR. Но поскольку ваши файлы хранятся в S3, а не в HDFS, каждый файл будет обрабатываться картографом независимо от используемого сжатия. Насколько мне известно, размер блока не применяется в случае S3.

Здесь предлагается создать ключи под своим ведром, где каждый ключ соответствует дате. Это ускорит входную фильтрацию. например //

Тип узла, используемого для кластера EMR, может быть одним из решающих факторов для размера файла. Если узлы являются высокоэффективными узлами, такими как r3.8xlarge, размер входного файла может быть больше. С другой стороны, если это файл m1.medium, размер файла должен быть небольшим, чтобы правильно использовать ваш кластер.

person Swaroop Kumar Patra    schedule 16.10.2014
comment
Значит, сжатие не поможет мапперу, потому что каждый файл может обрабатываться другим маппером? - person dieend; 16.10.2014
comment
Да. Сжатие поможет минимизировать время передачи данных и размер передаваемых данных. Также это уменьшит ваши затраты на S3. - person Swaroop Kumar Patra; 17.10.2014

Обратите внимание, что перечисление файлов в S3 в случае глоба может занять много времени с s3n:// .

Вы должны поэкспериментировать с s3distcp, который может копировать, объединять, сжимать и т. д. данные и делает листинг намного быстрее.

person SNeumann    schedule 19.10.2014