С ограниченным объемом данных в этом вопросе (размер входного файла, размер блока HDFS, среднее время обработки карты, количество слотов Mapper & сокращение слотов в кластере и т. Д.), Мы не можем предложить советы.
Но есть некоторые общие рекомендации по улучшению производительности.
- Если каждая задача занимает меньше 30-40 секунд, уменьшить количество задач
- Если работа имеет более 1TB ввода, рассмотреть вопрос об увеличении размера блока входного набора данных 256M или даже 512M, чтобы количество задач было меньше.
- До тех пор, как каждая задача выполняется по крайней мере 30-40 секунд, увеличить число задач Mapper к некоторому кратному числу Mapper слотов в кластере
- Количество снижающих задач на работу должна быть равна до или немного меньше, чем количество слотов уменьшения в кластере.
еще несколько советов:
- Настройки кластер правильно с правильных диагностическими инструментов
- Использование сжатие когда вы пишете промежуточные данные на диск
- номер дудки Карты & Сократить задачи согласно приведенным выше советам
- Incorporate комбинатор везде, где это уместно
- Использование Большинство соответствующих типов данных s для вывода данных (Не используйте
LongWritable
когда диапазон выходных значений в Integer
диапазоне. IntWritable
является правильным выбором в данном случае)
- Многократного
Writables
- Есть права профилирующих инструментов
Посмотрите на этой cloudera статье еще на несколько советов.