Въведение в MapReduce
MapReduce е изчислителен компонент на Hadoop Framework за лесно писане на приложения, които обработват паралелно големи количества данни и се съхраняват в големи клъстери от евтини стокови машини по надежден и несъвместим начин. В тази тема ще научим как работи MapReduce?
MapReduce може да извършва разпределени и паралелни изчисления, използвайки големи набори от данни в голям брой възли. Заданието MapReduce обикновено разделя наборите от входни данни и след това обработва всеки от тях независимо от задачите Map напълно паралелно. След това изходът се сортира и въвежда за намаляване на задачите. И входът, и изходът на заданието се съхраняват във файлови системи. Задачите се планират и следят от рамката.
Как работи MapReduce?
MapReduce архитектурата съдържа два основни компонента като услуги на Daemon, отговорни за изпълнението на задачи за картографиране и редуктор, наблюдение и повторно изпълнение на задачите при отказ. В Hadoop 2 нататък Resource Manager и Node Manager са услугите на демон. Когато клиентът за работа изпрати задача на MapReduce, тези демони влизат в действие. Те са също така отговорни за паралелната обработка и функциите за устойчивост на откази в заданията MapReduce.
В Hadoop 2 нататък управлението на ресурсите и функциите за планиране на работа или мониторинг функционалностите са разделени от YARN (още един преговарящ ресурс) като различни демон. В сравнение с Hadoop 1 с Job Tracker и Task Tracker, Hadoop 2 съдържа глобален мениджър на ресурси (RM) и Masters за приложения (AM) за всяко приложение.
- Клиентът за работа изпраща заданието на диспечера на ресурси.
- Планировникът на YARN Resource Manager е отговорен за координацията на разпределението на ресурсите на клъстера между работещите приложения.
- YARN Node Manager работи на всеки възел и извършва управление на ресурсите на ниво възел, като се координира с диспечера на ресурси. Той стартира и следи изчислителните контейнери на машината в клъстера.
- Application Master помага на ресурсите от Resource Manager и използва Node Manager за изпълнение и координиране на задачи MapReduce.
- HDFS обикновено се използва за споделяне на файлове със задачи между други обекти.
Фази на модела MapReduce
Модел MapReduce има три основни и една незадължителна фаза:
1. Картограф
- Това е първата фаза на програмирането на MapReduce и съдържа кодиращата логика на функцията за картографиране.
- Условната логика се прилага за 'n' брой блокове от данни, разпределени в различни възли за данни.
- Функцията Mapper приема двойки ключ-стойност като вход като (k, v), където ключът представлява адреса на изместване на всеки запис и стойността представлява цялото съдържание на записа.
- Изходът от фазата на Mapper също ще бъде във формат ключ-стойност като (k ', v').
2. Разбъркайте и сортирайте
- Резултатът от различни картографи (k ', v'), след това преминава във фаза на разбъркване и сортиране.
- Всички дублиращи се стойности се премахват и различните стойности се групират на базата на подобни ключове.
- Изходът от фазата на разбъркване и сортиране отново ще бъде двойки ключ-стойност като ключ и масив от стойности (k, v ()).
3. Редуктор
- Изходът от фазата на разбъркване и сортиране (k, v ()) ще бъде входът на фазата на редуктора.
- В тази фаза се изпълнява логиката на функцията на редуктора и всички стойности се агрегират спрямо съответните им ключове.
- Редукторът консолидира изходите на различни картографи и изчислява крайния резултат на заданието.
- След това крайният изход се записва в един файл в изходната директория на HDFS.
4. Комбинатор
- Това е незадължителна фаза в модела MapReduce.
- Фазата на комбиниране се използва за оптимизиране на производителността на заданията MapReduce.
- В тази фаза различните изходи на картографите са локално намалени на ниво възел.
- Например, ако различни изходи на картографи (k, v), идващи от един възел, съдържат дубликати, те се комбинират, т.е. локално намалени като единичен (k, v ()) изход.
- Тази фаза прави работата на разбъркване и сортиране още по-бърза, като по този начин дава възможност за допълнителна производителност в заданията на MapReduce.
Всички тези фази в заданието MapReduce могат да бъдат изобразени по-долу:
Например логиката MapReduce за намиране на броя на думите в масив от думи може да бъде показана по-долу:
плодове_array = (ябълка, портокал, ябълка, гуава, грозде, портокал, ябълка)
- Фазата на Mapper токенизира входния масив от думи в 'n' брой думи, за да даде резултата като (k, v). Например, помислете за „ябълка“. Изходът на Mapper ще бъде (apple, 1), (apple, 1), (apple, 1).
- Разбъркване и сортиране приемат изходът на картограф (k, v) и групират всички стойности според клавишите им като (k, v ()). т.е. (ябълка, (1, 1, 1)).
- Фазата на редуктора приема Shuffle и сортиране на изхода и дава съвкупността от стойности (apple, (1 + 1 + 1)), съответстващи на техните ключове. т.е. (ябълка, 3).
Спекулативно изпълнение на работа на MapReduce
Скоростта на MapReduce е доминирана от най-бавната задача. Така, за да увеличите скоростта, нов картограф ще работи върху същия набор данни едновременно. Който изпълни задачата, първо се счита за краен изход, а другият - убит. Това е техника за оптимизация.
Предимства на MapReduce
Тук ползите от MapReduce споменават по-долу
1. Отклонение
- По време на работа по намаляване на картата, ако машина, носеща няколко блока данни, се провали, архитектурата се справя с неуспеха.
- Той разглежда копирани копия на блоковете в алтернативни машини за по-нататъшна обработка.
2. Устойчивост
- Всеки възел периодично актуализира състоянието си на главния възел.
- Ако подчиненият възел не изпрати уведомлението си, главният възел пренасочва текущата изпълняваща се задача на този подчинен възел на други налични възли в клъстера.
3. Бързо
- Обработката на данни е бърза, тъй като MapReduce използва HDFS като система за съхранение.
- MapReduce отнема минути за обработка на терабайти от неструктурирани големи обеми от данни.
4. Паралелна обработка
- Задачите MapReduce обработват паралелно множество парчета от едни и същи набори от данни, като разделят задачите.
- Това дава предимството на изпълнението на задачата за по-малко време.
5. Наличност
- Множество реплики на едни и същи данни се изпращат до множество възли в мрежата.
- По този начин, в случай на неуспех, други копия са лесно достъпни за обработка без загуба.
6. Мащабируемост
- Hadoop е силно мащабируема платформа.
- Традиционните RDBMS системи не са мащабируеми според увеличаването на обема на данни.
- MapReduce ви позволява да стартирате приложения от огромен брой възли, използвайки терабайти и петабайти от данни.
7. Ефективна цена
- Функцията за мащабиране на Hadoop, заедно с програмирането на MapReduce, ви позволява да съхранявате и обработвате данни по много ефективен и достъпен начин.
- Спестяването на разходите може да бъде огромно като цифри от стотици за терабайти данни.
Заключение - Как работи MapReduce
Съвременните данни се придвижват повече към неструктурирания тип и огромната, конвенционална опция за обработка на данни като RDBMS е още по-трудна, отнема време и скъпо. Програмирането на MapReduce от Hadoop е много по-ефективно, по-безопасно и по-бързо при обработката на големи набори от данни дори от терабайти или петабайти.
Препоръчителни статии
Това е ръководство за това как работи MapReduce. Тук обсъждаме фазите на модела MapReduce с предимства и как работи. Може да разгледате и следните статии, за да научите повече -
- Компоненти на екодосистемата Hadoop
- Алгоритми MapReduce
- Какво представлява MapReduce в Hadoop?
- Въпроси за интервю с MapReduce