Подтвердить что ты не робот

Hadoop, как сжать выходной сигнал картера, но не выход редуктора

У меня есть программа java с уменьшением отображения, в которой я пытаюсь только сжать вывод mapper, но не выход редуктора. Я думал, что это возможно, установив следующие свойства в экземпляре Configuration, как показано ниже. Однако, когда я запускаю свою работу, сгенерированный вывод редуктора по-прежнему сжимается, поскольку созданный файл: 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);
4b9b3361

Ответ 2

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

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

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

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

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

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

Ответ 3

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

  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"); 

Ответ 4

  • Вам нужно установить значение "mapred.compress.map.output" в значение true.
  • При желании вы можете выбрать свой кодек сжатия, установив "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 и дает лучшую производительность.

Ответ 5

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

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