Hadoop, как сжать выходной маппер, но не выход редуктора - PullRequest
25 голосов
/ 06 апреля 2011

У меня есть Java-программа Map-Reduction, в которой я пытаюсь сжать только вывод Mapper, но не вывод редуктора. Я подумал, что это будет возможно, установив следующие свойства в экземпляре конфигурации, как указано ниже. Однако, когда я запускаю свою работу, сгенерированный вывод редуктора все еще сжимается, поскольку сгенерированный файл: part-r-00000.gz. Кто-нибудь успешно просто сжал данные картографа, но не редуктор? Это вообще возможно?

// Сжать вывод картографа

conf.setBoolean("mapred.output.compress", true);
conf.set("mapred.output.compression.type", CompressionType.BLOCK.toString());
conf.setClass("mapred.output.compression.codec", GzipCodec.class, CompressionCodec.class);

Ответы [ 5 ]

54 голосов
/ 05 июля 2012

mapred.compress.map.output : Сжатие данных между преобразователем и преобразователем.Если вы используете snappy-кодек, это, скорее всего, увеличит скорость чтения-записи и уменьшит нагрузку на сеть.Не беспокойся о плевке.Эти файлы не хранятся в формате hdf.Это временные файлы, которые существуют только для задания сокращения карты.

mapred.map.output.compression.codec : я бы использовал snappy

mapred.output.compress : этот логический флаг будет определять, будет ли целая карта / сокращение обрабатывать сжатые данные.Я бы тоже всегда устанавливал это на истину.Более быстрая скорость чтения / записи и меньше используемого дискового пространства.

mapred.output.compression.type : Я использую блок.Это сделает сжатие разделяемым даже для всех форматов сжатия (gzip, snappy и bzip2), просто убедитесь, что вы используете разделяемый формат файла, такой как sequence, RCFile или Avro.

mapred.output.compression.codec : это кодек сжатия для задания карты / сокращения.В основном я использую один из трех: Snappy (быстрое ч / б сжатие 2x-3x), gzip (обычное быстрое сжатие 5x-8x), bzip2 (медленное сжатие 8x-12x)

Такжепомните, когда сжатие выводит на карту, что из-за разделения сжатие будет отличаться в зависимости от вашего порядка сортировки.Чем ближе данные, тем лучше сжатие.

21 голосов
/ 14 марта 2014

С MR2, теперь мы должны установить

conf.set("mapreduce.map.output.compress", true)
conf.set("mapreduce.output.fileoutputformat.compress", false)

Подробнее см .: http://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

12 голосов
/ 07 апреля 2011

«сжатие вывода» сжимает ваш окончательный вывод.Чтобы сжать только выходные данные карты, используйте что-то вроде этого:

  conf.set("mapred.compress.map.output", "true")
  conf.set("mapred.output.compression.type", "BLOCK"); 
  conf.set("mapred.map.output.compression.codec", "org.apache.hadoop.io.compress.GzipCodec"); 
2 голосов
/ 05 апреля 2012
  1. Вам необходимо установить для "mapred.compress.map.output" значение true.
  2. При желании вы можете выбрать кодек сжатия, установив «mapred.map.output.compression.codec».ПРИМЕЧАНИЕ 1. Сжатие выходных данных на карте никогда не должно быть BLOCK.Подробности см. В следующем JIRA: https://issues.apache.org/jira/browse/HADOOP-1194 ПРИМЕЧАНИЕ 2. GZIP и BZ2 интенсивно используют процессор.Если у вас медленная сеть, а GZIP или BZ2 дают лучшую степень сжатия, это может оправдать затраты циклов ЦП.В противном случае рассмотрим кодек LZO или Snappy.
    ПРИМЕЧАНИЕ3: если вы хотите использовать сжатие вывода карты, рассмотрите возможность установки встроенного кодека, который вызывается через JNI и обеспечивает более высокую производительность.
1 голос
/ 28 марта 2013

Если вы используете дистрибутив MapR для Hadoop, вы можете получить преимущества сжатия без использования всяких папок с кодеками.

MapR изначально сжимается на уровне файловой системы, поэтому приложению не нужно знатьили уходСжатие может быть включено или выключено на уровне каталога, так что вы можете сжимать входы, но не выходы или что угодно.Как правило, сжатие происходит настолько быстро (по умолчанию используется алгоритм, аналогичный snappy), что большинство приложений видят повышение производительности при использовании собственного сжатия.Если ваши файлы уже сжаты, это обнаруживается очень быстро, и сжатие автоматически отключается, поэтому вы тоже не видите там штрафа.

...