Що таке MapReduce у Hadoop? ArchiТекстура та діаграма

⚡ Розумний підсумок

MapReduce — це модель програмування Hadoop, яка перетворює великий набір даних на малий результат, запускаючи функцію map над кожним вхідним розбиттям, а потім функцію reduce над згрупованими проміжними значеннями.

  • 🔘 Чотири фази: Кожне завдання виконується як розділення, картаping, перетасування та скорочення, з парами ключ-значення, що переміщуються між кожним етапом.
  • ☑️ Приклад роботи: Три рядки тексту перетворюються на сім слів, що точно показує, який внесок має кожна фаза.
  • Розділення розмірів: Одне завдання мапування виконується на один вхідний поділ, а розмір поділу зазвичай відповідає розміру блоку HDFS.
  • 🧪 Проміжні дані: Вивід карти записується на локальний диск, а не на HDFS, оскільки реплікація одноразових даних є марнотратною.
  • 🛠️ координація: РоботаTracКер складає графіки роботи та завданьTracКери повідомляють про прогрес за допомогою періодичних сигналів серцебиття.
  • ⚠️ Примітка до версії: YARN замінив цю пару на ResourceManager, NodeManagers та ApplicationMaster для кожного завдання з Hadoop 2.x.

Архітектура MapReduce в Hadoop пояснена на прикладі

Що таке 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 tracтри вхідні рядки шляхом розщеплення, мапаping, перетасування та зменшення

Остаточним результатом завдання 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 поділяє роботу на завдання. Існує два типи завдань:

  1. Завдання на карті (Розділи та Картаping)
  2. Зменшення кількості завдань (Переміщення, Скорочення)

Весь процес виконання, тобто виконання завдань Map та Reduce, контролюється двома типами сутностей, які називаються:

  1. роботаTracker: діє як майстер і відповідає за повне виконання поданого завдання.
  2. Кілька завданьTracкери: поводяться як раби, кожен з них виконує частину роботи.

Для кожного завдання, поданого на виконання в систему, існує одне завданняTracker, що знаходиться на NameNode, і існує кілька завданьTrackers, що знаходяться на вузлах даних (DataNodes).

Примітка: РоботаTracкер і ТаскTracПара ker належить до MapReduce версії 1 (Hadoop 1.x). Починаючи з Hadoop 2.x, YARN розподіляє ці обов'язки між ResourceManager кластера, NodeManager на кожному вузлі та одним ApplicationMaster на завдання, хоча самі фази map, shuffle та reduce залишаються незмінними.

На діаграмі нижче показано, як надіслане завдання розбивається на завдання та tracпоширюються по всьому кластеру.

Діаграма, що показує поділ завдання на завдання типу «карта» та «скорочення» tracпід керівництвом ЙоваTracкер і ТаскTracвишня

  • Завдання поділяється на кілька завдань, які потім виконуються на кількох вузлах даних у кластері.
  • Це відповідальність роботи tracker для координації діяльності шляхом планування завдань для виконання на різних вузлах даних.
  • Виконання окремого завдання потім контролюється командою task tracker, який знаходиться на кожному вузлі даних, що виконує частину завдання.
  • Задача tracОбов'язок Кера полягає в тому, щоб надіслати звіт про хід виконання завдання. tracкер.
  • Крім того, завдання tracКер періодично надсилає Йову сигнал «серцебиття».Tracker, щоб повідомити його про поточний стан системи.
  • Таким чином, робота tracКер тримає track загального прогресу кожного завдання. У разі невдачі завдання, tracКер може перенести це на інше завдання tracкер.

Поширені запитання

YARN це робив, починаючи з Hadoop 2.x і далі. Загальноклустерний ResourceManager обробляє планування, NodeManager працює на кожному вузлі, а ApplicationMaster працює на кожному завданні. tracвиконує свої завдання. Фази map та reduce залишаються незмінними.

Моделі, навчені на основі історії попередніх завдань, прогнозують час виконання, рекомендують розміри розділень та кількість скорочень, а також виявляють перекіс на ранній стадії. Вони також відстежують значення лічильників, позначаючи надзвичайно повільні або невдалі завдання до завершення виконання.

Copilot добре справляється зі скамболінгом: сигнатури мапперів та редукторів, генерики, імпорт та виклики конфігурації драйверів. Рішення щодо схеми, такі як поле, яке є групою.ping ключ, все ще потрібен розробник, який знає дані.

Зазвичай відправною точкою є трохи менша кількість доступних слотів для редукції, тому кожен редуктор виконується однією хвилею. Занадто мало створює довгі хвости; занадто багато створює багато крихітних вихідних файлів.

Об'єднувач — це додатковий міні-редуктор, який працює з виводом карти перед тим, як той перетне мережу. Він різко скорочує трафік випадкового перемішування, але його можна використовувати лише тоді, коли операція редукції є одночасно асоціативною та комутативною.

Spark зберігає проміжні результати в пам'яті та представляє завдання як одноорієнтований граф етапів, тоді як MapReduce записує проміжний вивід на диск між фазами. Spark тому набагато швидший для ітеративної роботи.

Розділювач вирішує, який редуктор отримає кожен проміжний ключ, за замовчуванням хешуючи ключ за модулем кількості редукторів. Спеціальний хеш записується, коли цей хеш залишає один редуктор перевантаженим.

Hadoop створює одне завдання картографії на кожне розділення вхідних даних, а розділення — це діапазон байтів, а не цілий файл. Один великий файл породжує багато розділень; багато маленьких файлів призводять до крихітних, неефективних завдань картографії.

Підсумуйте цей пост за допомогою: