Пояснюємо суть mapreduce - на пальцях

Вже цілий тиждень ми поступово розжовувати NoSQL / NewSQL. але питання не зменшуються (як я очікував), але тільки наростають.

Обробивши нещодавно з основами команд memcached. Зараз я хочу спробувати максимально просто, наскільки це можливо для мене, відповісти на частий і важливе питання - що таке MapReduce.

Що таке MapReduce?

Це типовий підхід, алгоритм, ну або патерн, тут вже як хто назве, паралельної обробки великих обсягів сирих даних, наприклад - результатів роботи краулерів або логів веб-запитів.

Взагалі за статистикою, до 80% завдань можуть вільно і дуже вигідно МАПП на MapReduce, і саме MapReduce драйвит зараз в NoSQL.

Існують різні імплементації MapReduce. Досить відома і запатентована реалізація цього алгоритму і підходу - у Google. Або як приклад MySpace Qizmt - MySpace's Open Source Mapreduce Framework. також використовується в Hadoop. MongoDb і ще багато різних прикладів можна привести. Більш детально можна почитати в статті (PDF): MapReduce: Simplified Data Processing on Large Clusters.

основи основ

Отже, типова реалізація цього алгоритму отримує на вхід 3 аргументу: вихідну колекцію, Map-функцію, Reduce-функцію, - і повертає нову колекцію даних після обробки.

Алгоритм складається з декількох кроків. В якості першого кроку виконується Map-функція до кожного елементу вихідної колекції. Map поверне нуль або створить екземпляри Key / Value об'єктів.

Тобто, можна сказати, що обов'язок Map-функції конвертувати елементи вихідної колекції в нуль або декілька примірників Key / Value об'єктів. Це продемонстровано нижче на зображенні:

Пояснюємо суть mapreduce - на пальцях

Наступним кроком, алгоритм сортує всі пари Key / Value і створить нові екземпляри об'єктів, де все значення (value) будуть згруповані по ключу.

Пояснюємо суть mapreduce - на пальцях

Останнім кроком виконається функція Reduce - для кожного згрупованого примірника Key / Value об'єкта

У висновку, функція Reduce поверне новий екземпляр об'єкта, який буде включений в результуючу колекцію.

Пояснюємо суть mapreduce - на пальцях

Приклад-реалізація

Як приклад реалізуємо дуже просту і наочну імплементацію цього алгоритму на C #. Мій приклад вважає кількість голосних через підрядник в наборі рядків.

У прикладі створена узагальнена функція MapReduce. - як основна в цьому алгоритмі, - яка просто викликає спеціалізовані функції Map і Reduce. распараллелівая їх виконання. Власне самі функції Map і Reduce. реалізація яких є вже специфічної для того завдання, яке ми намагаємося вирішити (в кожному конкретному випадку), а в даному випадку, - це «порахувати кількість голосних в наборі рядків».

Чет ви тупенький. Я працюючи тестувальником, нарешті зрозумів, що таке Map / Reduce і як він приблизно працює.

А той, хто скаржиться на іноземні слова, просто мало працює в компаніях з англійською документацією і мало пише код. Імплементація, Верифікація, Баги, Фічі, Дескріпшіон, Інвестігіровать, Мітинг, драйв, хендлом, МАПП, хардкодіть і т.д. Всі ці слова тільки спрощують життя, а якщо не знаєте їх значення, то це ваші проблеми, вчіться працювати, а не нити!

Чорти не росіяни, ботать по фені ви можете в своїй вузькій компанії, а публікувати статті на нормальному, російською мовою. Для спрощення життя особливо розумним взагалі можна просто мукати)

Більш-менш зрозуміло як працює, але не зашкодить ще розповісти, чим цей підхід такий хороший, і яку користь (в порівнянні з альтернативами) він приносить.

"Я прийшов до вас з майбутнього з проханням припинити вашу діяльність"

10 команд Netsh, які зобов'язаний знати кожен адмін

  • vad »не розумію навіщо це все робити з командного рядка коли з gui це робиться все в два кліка і все наочно видно. Але за статтю спасибі це буває необхідно при відновленні.

Захід Рунета вручну

  • Кхарн »Все зрозуміло, цікаво. Одне питання, які нахрен "більшовички" у вас? Вас уже забанили в гуглі і ви не розумієте, в чому різниця між більшовиками з радянською владою і нинішніми олігархами у.

Пояснюємо суть MapReduce "на пальцях"

  • Kostia »Більш менш зрозуміло як працює, але не зашкодить ще розповісти, чим цей підхід такий хороший, і яку користь (в порівнянні з альтернативами) він приносить.

Рунет приречений. Частина 2

  • Антон С. »Я, звичайно, перепрошую за нав'язливість, але я думав тут відповідають на питання.