Вы можете управлять сжатием выходного сигнала редуктора с помощью mapred.output.compress
и сжатием выходного сигнала преобразователя с помощью mapred.compress.map.output
. Эти ключи конфигурации можно установить (true
или false
) в файле конфигурации всего сайта, в настройке задания или в качестве параметров -D
, передаваемых Hadoop при запуске задания.
Сжатие вывода карты, как правило, хорошая идея. Я также сжимаю уменьшенный вывод, когда этот вывод не является конечным результатом, например, когда я запускаю другое задание поверх вывода предыдущего задания.
Сжатие часто помогает быстрее завершить работу (даже если для сжатия / распаковки требуется дополнительная обработка), поскольку это может значительно уменьшить количество операций ввода-вывода.
Вы также можете выбрать кодеки сжатия. Мы используем LZO, который не поставляется с Hadoop, но можно найти здесь:
https://github.com/kevinweil/hadoop-lzo
LZO сжимается довольно хорошо с минимальной нагрузкой на процессор. Bzip2 сжимается очень хорошо, но с более значительными накладными расходами. Gzip сжимается хуже при умеренных накладных расходах. (Это обобщения.) Я думаю, что LZO имеет лучший баланс характеристик.