Кілька років тому MapReduce був визнаний революцією розподіленого програмування. Також були критики, але, за великим рахунком, був захоплений галас. Це навіть запатентоване! [1]
Назва нагадує map
і reduce
функціональне програмування, але коли я читаю (Вікіпедія)
Крок карти: Головний вузол приймає вхід, ділить його на менші підпроблеми та розподіляє їх на робочі вузли. Робочий вузол може зробити це ще раз по черзі, що призводить до багаторівневої структури дерева. Робочий вузол обробляє меншу проблему і передає відповідь на свій головний вузол.
Крок зменшення: головний вузол потім збирає відповіді на всі підпроблеми та певним чином поєднує їх, щоб сформувати вихід - відповідь на проблему, яку спочатку намагалися вирішити.
або [2]
Внутрішня карта MAP: [...] MAP розбиває вхідне значення на слова. [...] MAP призначений для асоціації кожної заданої пари клавіш / значень вхідних даних з потенційно багатьма парами проміжних клавіш / значень.
Внутрішнє зменшення: [...] [ЗНИЖЕННЯ] виконує імперативну агрегацію (скажімо, зменшення): прийняти багато значень і зменшити їх до одного значення.
Я не можу не подумати: це розділення та підкорення (у сенсі Мергесорта), просто і просто! Отже, чи є десь (концептуальна) новинка у MapReduce чи це лише нова реалізація старих ідей, корисних у певних сценаріях?