Вот некоторые следующие данные, которые я получил от счетчиков Hadoop. Первый - с объединителем, идентичным редуктору (я использовал SumReducer), а второй - без объединителя.
With combiner:
FILE: number of bytes read 51034
FILE: number of bytes written 364433
HDFS: number of bytes read 58524138
HDFS: number of bytes written 21686
Without combiner:
FILE: number of bytes read 91149874
FILE: number of bytes written 137012351
HDFS: number of bytes read 58524138
HDFS: number of bytes written 21686
Поэтому, когда я использую объединитель, вывод моего задания MapReduceидентичен тому, когда я не использую комбайнер. Это потому, что мой оригинальный комбинатор уже агрегирует все значения для уникального ключа. Мой комбинатор просто снова запускает тот же редуктор и ничего не делает.
Чего я не понимаю, так это если в таком случае выходные данные счетчиков FileSystem для байтов, считываемых / записываемых, так различны? С объединителем, байты чтения / записи на самом деле меньше, хотя объединять было нечего? Я не понимаю, почему это так. Кроме того, почему значения читаемых / записываемых байтов HDFS не меняются?
Я также рассмотрел следующее с помощью сумматора:
Combine input records 3255352
Combine output records 1822
Сколько пар ключ-значение можно объединить, используяКомбинатор? Я думаю, что я просто сложил их вместе, но я не уверен, почему это так.
Заранее спасибо.