Що таке MapReduce у Hadoop? ArchiТекстура та діаграма
⚡ Розумний підсумок
MapReduce — це модель програмування Hadoop, яка перетворює великий набір даних на малий результат, запускаючи функцію map над кожним вхідним розбиттям, а потім функцію reduce над згрупованими проміжними значеннями.
Що таке MapReduce у Hadoop?
MapReduce — це програмний фреймворк та модель програмування, що використовуються для обробки величезних обсягів даних. Програми MapReduce працюють у двох фазах, а саме: Map та Reduce. Завдання Map стосуються розділення та відображення...ping даних, тоді як функція «Зменшення» перемішує завдання та зменшує дані.
Hadoop здатний запускати програми MapReduce, написані різними мовами програмування: Java, Рубі, Python та C++Програми MapReduce мають паралельний характер, тому вони дуже корисні для виконання великомасштабного аналізу даних з використанням кількох машин у кластері.
Вхідними даними для кожної фази є пари ключ-значення. Крім того, кожному програмісту потрібно вказати дві функції: функцію map та функцію reduce.
MapReduce Archiтектура великих даних пояснюється на прикладі
Весь процес проходить чотири фази виконання, а саме: розділення, мапуванняping, перетасування та зменшення.
Тепер у цьому посібнику з MapReduce давайте розглянемо це на прикладі MapReduce.
Уявіть, що у вас є такі вхідні дані для вашого MapReduce у Великий даних програма:
Welcome to Hadoop Class Hadoop is good Hadoop is bad
Діаграма нижче tracпроходить цими трьома рядками через кожну фазу, від вхідних поділів ліворуч до кінцевої кількості слів праворуч.
Остаточним результатом завдання MapReduce є
| поганий | 1 |
| Клас | 1 |
| добре | 1 |
| Hadoop | 3 |
| is | 2 |
| до | 1 |
| ласкаво просимо | 1 |
Дані проходять через такі фази MapReduce у великих даних.
Розділення вхідних сигналів
Вхідні дані для завдання MapReduce у великих даних поділяються на частини фіксованого розміру, які називаються вхідними поділами. Вхідний поділ – це фрагмент вхідних даних, який споживається однією картою.
картаping
Це найперший етап виконання програми MapReduce. На цьому етапі дані з кожного розбиття передаються до карти (map).ping функція для отримання вихідних значень. У нашому прикладі завдання картиping Фаза полягає в підрахунку кількості входжень кожного слова з вхідних розбиття (більш детальна інформація про вхідні розбиття наведена нижче) та підготовці списку у вигляді .
Перемішування
Ця фаза споживає вихідні дані картиping фаза. Його завдання полягає в консолідації відповідних записів з Картиping фазовий вихід. У нашому прикладі ті самі слова об'єднані разом разом з відповідною частотою.
Зменшення
На цьому етапі вихідні значення з фази Перетасування агрегуються. Ця фаза об'єднує значення з фази Перетасування та повертає одне вихідне значення. Коротше кажучи, ця фаза підсумовує весь набір даних.
У нашому прикладі ця фаза агрегує значення з фази Перетасування, тобто обчислює загальну кількість входжень кожного слова.
MapReduce Archiдетально пояснена структура
Наведені нижче пункти пояснюють, як завдання розщеплення, відображення та скорочення фактично розміщуються та зберігаються в кластері.
- Для кожного розбиття створюється одне завдання зіставлення, яке потім виконує функцію зіставлення для кожного запису в розбитті.
- Завжди вигідно мати кілька поділів, оскільки час, необхідний для обробки одного поділу, невеликий порівняно з часом, необхідним для обробки всього вхідного сигналу. Коли поділи менші, обробка краще збалансована за навантаженням, оскільки поділи обробляються паралельно.
- Однак, також небажано мати занадто малі поділки. Коли поділки занадто малі, накладні витрати на керування ними та створення завдань карти починають домінувати в загальному часі виконання завдання.
- Для більшості завдань краще зробити розмір поділу рівним розміру HDFS блок, який за замовчуванням становить 128 МБ, починаючи з Hadoop 2.x (у Hadoop 1.x він був 64 МБ) і контролюється
dfs.blocksizeвласність - Виконання завдань зіставлення призводить до запису виводу на локальний диск відповідного вузла, а не на HDFS.
- Причина вибору локального диска замість HDFS полягає в тому, щоб уникнути реплікації, яка відбувається під час роботи сховища HDFS.
- Вихід карти є проміжним виходом, який обробляється завданнями зменшення для отримання остаточного виходу.
- Після завершення роботи вихідні дані карти можна викинути. Таким чином, зберігання його в HDFS з реплікацією стає надмірним.
- У разі збою вузла, перед тим, як вихід карти буде використано завданням зменшення, Hadoop повторно запускає завдання карти на іншому вузлі та повторно створює вихід карти.
- Завдання Reduce не працюють за концепцією локальності даних. Вихідні дані кожного завдання map передаються до завдання reduce. Вихідні дані Map передаються на машину, де виконується завдання reduce.
- На цій машині вихідні дані об’єднуються, а потім передаються до визначеної користувачем функції зменшення.
- На відміну від виводу map, вивід reduce зберігається в HDFS (перша репліка зберігається на локальному вузлі, а інші репліки — на вузлах поза стійкою). Отже, запис виводу reduce споживає пропускну здатність мережі, але лише стільки, скільки споживає звичайний конвеєр запису HDFS.
Як MapReduce організовує роботу?
Тепер у цьому посібнику з MapReduce ми дізнаємося, як працює MapReduce.
Hadoop поділяє роботу на завдання. Існує два типи завдань:
- Завдання на карті (Розділи та Картаping)
- Зменшення кількості завдань (Переміщення, Скорочення)
Весь процес виконання, тобто виконання завдань Map та Reduce, контролюється двома типами сутностей, які називаються:
- роботаTracker: діє як майстер і відповідає за повне виконання поданого завдання.
- Кілька завданьTracкери: поводяться як раби, кожен з них виконує частину роботи.
Для кожного завдання, поданого на виконання в систему, існує одне завданняTracker, що знаходиться на NameNode, і існує кілька завданьTrackers, що знаходяться на вузлах даних (DataNodes).
Примітка: РоботаTracкер і ТаскTracПара ker належить до MapReduce версії 1 (Hadoop 1.x). Починаючи з Hadoop 2.x, YARN розподіляє ці обов'язки між ResourceManager кластера, NodeManager на кожному вузлі та одним ApplicationMaster на завдання, хоча самі фази map, shuffle та reduce залишаються незмінними.
На діаграмі нижче показано, як надіслане завдання розбивається на завдання та tracпоширюються по всьому кластеру.
- Завдання поділяється на кілька завдань, які потім виконуються на кількох вузлах даних у кластері.
- Це відповідальність роботи tracker для координації діяльності шляхом планування завдань для виконання на різних вузлах даних.
- Виконання окремого завдання потім контролюється командою task tracker, який знаходиться на кожному вузлі даних, що виконує частину завдання.
- Задача tracОбов'язок Кера полягає в тому, щоб надіслати звіт про хід виконання завдання. tracкер.
- Крім того, завдання tracКер періодично надсилає Йову сигнал «серцебиття».Tracker, щоб повідомити його про поточний стан системи.
- Таким чином, робота tracКер тримає track загального прогресу кожного завдання. У разі невдачі завдання, tracКер може перенести це на інше завдання tracкер.


