2017-02-05 7 views
1

У меня есть файл csv объемом 10 ГБ, и я хочу обработать его в Hadoop MapReduce. У меня есть кластер из 15 узлов (Datanode), и я хочу максимизировать пропускную способность.Сжатый файл VS несжатый файл в mapreduce. который дает лучшую производительность?

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

Я использовал несжатый файл, и это дало мне лучшие результаты по Snappy. Почему это так?

+0

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

ответ

0

Проблема с компрессией Snappy заключается в том, что она не является разрывающейся, поэтому Hadoop не может разделить входной файл на куски и запустить несколько карт для ввода. Поэтому, скорее всего, ваш 10Gb-файл обрабатывается одним картографом (проверьте его в пользовательском интерфейсе истории приложений). Поскольку hadoop хранит большие файлы в отдельных блоках на разных машинах, некоторые части этого файла даже не размещаются на машине-маркете и должны передаваться по сети. Это, по-видимому, основная причина того, что сжатый файл Snappy работает медленнее обычного текста.

Чтобы избежать проблемы, вы можете использовать сжатие bzip2 или разделить файл на куски вручную и мгновенно сжать каждую часть.

+0

Спасибо за ваше объяснение. да, вы правы, это всего лишь один картограф, работающий с мгновенным сжатием. Таким образом, мгновенное сжатие не разрушается только с текстовым файлом или может быть разделено, если avro/orc/sequence/паркет используются с мгновенным? и как насчет других кодеков сжатия, таких как (LZO, gzip и т. д.) с текстовыми файлами и форматами файлов контейнеров (например, Seq/avro/паркет/орк). ? –

+0

@AdityaAgarwal Я не работал с avro или паркет, поэтому не могу сказать об этом. Я знаю, что есть трюки для прессования LZO, и gzip недоступен – AdamSkywalker

+0

Хорошо Спасибо за помощь в любом случае. –