Параллельный запуск MapReduce на Hadoop

Я пытаюсь понять, как параллельная обработка работает с Hadoop & MapReduce.

Я понимаю, как карта может работать параллельно, но я не понимаю, как можно уменьшить. Например, если я хочу найти среднее из следующего списка:

COMPUTER  |    YEAR    |  RUNS
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾  
compA     |    1989    |  20
compA     |    1990    |  10
compB     |    1991    |  300

Где compA& compB— два узла данных
Если средняя функция в Reduce выполняется наcompA&compB, а затем результат двух данных Noe усредняется, это будет неправильно.

1 ответ

  1. Несколько задач редуктора не будут порождены для всех типов логики. Для агрегации логика усреднения данных будет выполняться на одном редукторе.
    Класс Mapper получает данные в виде пары ключ-значение. Оно посылает выход к типу редуктора. Перед достижением редуктора, ключи будут сортированы и значения соответствуя такому же ключу достигнут такой же редуктор. Таким образом, результаты будут правильными. Если ваше требование включает усреднение всех данных, то выходные данные из всех задач карты будут отправлены в один редуктор.

    Например: я хочу найти среднее количество проданных автомобилей в месяц за год.
    У меня есть данные в 12 файлах, каждый файл содержит детали продаж, соответствующие месяцу.

    Я должен написать следующую логику.
    класс mapper
    Mapper получит каждую запись в качестве ввода.
    Проанализируйте количество продаж и детали месяца из каждой записи.
    Напишите константу как ключ и продажи как значение (например: 2000 автомобилей,проданных в январе будет что-то вроде [sales, 2000]. Аналогично для 1000 продажи в феврале будет что-то вроде [sales,1000]). Я использовал ключевые продажи так, чтобы все значения с одним и тем же ключом достигали одного и того же редуктора.

    Пример входных данных

    январь.формат txt

    car-sold,2000
    

    февраль.формат txt

    cars-sold,1000
    

    …..
    …..

    декабрь.формат txt

    cars-sold,5000
    

    Выход Mapper

    [sales, 2000]

    [продажи, 1000]

    ….
    ….

    [продажи, 5000]

    Вход Редуктора

    {sales, [1000,2000,…..,5000]}

    Ie (ключ, список значений)