Искате да разберете как Hadoop всъщност съхранява и обработва огромни количества данни?
В тази статия ще проучим как Hadoop работи вътрешно. Ще видим как Hadoop съхранява и обработва големи масиви от данни. Статията обяснява подробно за работата на Hadoop. Статията първо представя кратко въведение в Hadoop.
След това ще видим основните компоненти на Hadoop и демоните, работещи в клъстера Hadoop. След това статията обяснява работата на Hadoop, покривайки всички негови основни компоненти като HDFS, MapReduce и YARN.
Така че нека сега първо да видим краткото въведение в Hadoop.
Въведение в Hadoop
С нарастващите големи данни, Apache Software Foundation през 2008 г. разработи рамка с отворен код, известна като Apache Hadoop, която е решение на всички проблеми с големи данни.
Apache Hadoop е рамка, която може да съхранява и обработва огромни количества неструктурирани данни, вариращи по размер от терабайти до петабайта. Това е силно устойчива на грешки и високодостъпна система.
Hadoop съхранява огромно количество данни по разпределен начин в HDFS. Hadoop MapReduce е процесорът в Hadoop, който обработва данните паралелно.
Hadoop YARN е друг основен компонент в рамката на Hadoop, който отговаря за управлението на ресурсите между приложенията, работещи в клъстера, и за планирането на задачата.
Преди да проучим как Hadoop работи вътрешно, нека първо видим основните компоненти и демоните на Hadoop.
Компоненти и демони на Hadoop
Hadoop се състои от три основни компонента, които са HDFS, MapReduce и YARN.
1. Hadoop HDFS
Това е слоят за съхранение на Hadoop. Разпределената файлова система Hadoop съхранява данни в различни възли в клъстер. Той разделя данните на блокове и ги съхранява на различни възли. Размерът на блока е 128 MB по подразбиране . Можем да конфигурираме размера на блока според нашите изисквания.
2. Hadoop MapReduce
Това е обработващият слой в Hadoop. Hadoop MapReduce обработва данните, съхранявани в Hadoop HDFS, паралелно в различни възли в клъстера. Той разделя подадената от потребителя задача на независима задача и ги обработва като подзадачи в хардуера на стоките.
3. ПРЕЖДА Hadoop
Това е слой за управление на ресурси и процеси на Hadoop. YARN отговаря за споделянето на ресурси между приложенията, работещи в клъстера, и за планирането на задачата в клъстера.
Това са трите основни компонента в Hadoop.
Демони, работещи в клъстера Hadoop
Има някои демони, които работят в клъстера Hadoop. Демоните са леките процеси, които се изпълняват на заден план.
Някои демони работят на главния възел, а други на подчинения възел. Нека сега да проучим демоните на Hadoop.
Основният демон на Hadoop са:
1. Майстор демони
- NameNode: Това е главният демон в Hadoop HDFS. Той поддържа пространството от имена на файловата система. Той съхранява метаданни за всеки блок от файловете.
- Мениджър на ресурси: Това е главният демон на YARN. Той арбитрира ресурсите между всички приложения, работещи в клъстера.
2. Робски демони
- DataNode: DataNode е подчинения демон на Hadoop HDFS. Работи на подчинени машини. Той съхранява действителни данни или блокове.
- NodeManager: Това е робският демон на YARN. Той се грижи за всички отделни изчислителни възли в клъстера.
Как работи Hadoop?
Hadoop съхранява и обработва данните по разпределен начин в клъстера от стоков хардуер. За да съхранява и обработва всякакви данни, клиентът изпраща данните и програмата в клъстера Hadoop.
Hadoop HDFS съхранява данните, MapReduce обработва данните, съхранявани в HDFS, а YARN разделя задачите и присвоява ресурси.
Нека сега разгледаме подробно тези компоненти.
1. HDFS
Данните в Hadoop се съхраняват в разпределената файлова система на Hadoop. В Hadoop HDFS работят два демона, които са NameNode и DataNode.
a. NameNode
NameNode е главният демон в HDFS. Работи на главните възли. Той поддържа пространството от имена на файловата система. NameNode не съхранява действителните данни. Той съхранява метаданните, като информация за блокове файлове, разрешения за файлове, местоположения на блокове и т.н.
NameNode управлява DataNode и им предоставя инструкции. NameNode получава сърдечен удар от DataNodes на всеки 3 секунди, което указва, че DataNode е жив.
б. DataNode
DataNode е подчинения демон в HDFS. DataNodes са подчинените възли, които съхраняват действителните бизнес данни. Те са отговорни за обслужването на заявките за четене/запис на клиента въз основа на инструкциите от NameNode. DataNodes изпраща сърдечни съобщения до NameNode, за да гарантира, че са живи.
в. Вторичен възел на име
Това е друг демон в Hadoop HDFS. Това е помощният възел за първичния NameNode. Вторичният NameNode изтегля регистрационните файлове за редактиране и файла Fsimage от първичния NameNode и периодично прилага регистрационните файлове за редактиране към Fsimage .
След това изпраща обратно актуализирания файл Fsimage към NameNode. Така че, ако основният NameNode се провали, последното запазено Fsimage на вторичния NameNode се използва за възстановяване на метаданни на файловата система.
Всеки път, когато клиентът иска да прочете или запише данни в Hadoop HDFS, той първо взаимодейства с NameNode. NameNode първо проверява за привилегиите на клиента и ако клиентът има достатъчно привилегии, тогава NameNode предоставя адреса на DataNode, откъдето клиентът може да чете или записва данни.
Файлът на клиента в HDFS е разделен на блокове. Размерът на блока е 128 MB по подразбиране. DataNode съхранява блоковете файлове. За да осигури устойчивост на грешки, HDFS създава реплики на блокове в зависимост от фактора на репликация.
По подразбиране коефициентът на репликация е 3, което означава, че 3 копия на блок се съхраняват в HDFS. HDFS съхранява реплики на блока на различни DataNodes, като следва алгоритъма за Rack Awareness.
По време на четене на файл, ако някой DataNode се повреди, NameNode предоставя адреса на друг DataNode, съдържащ реплика на блока, откъдето клиентът може да чете своите данни без прекъсване.
2. MapReduce
MapReduce е обработващият слой в Hadoop. Той обработва данните паралелно на множество машини в клъстера. Той работи, като разделя задачата на независими подзадачи и ги изпълнява паралелно в различни DataNodes.
MapReduce обработва данните на две фази, тоест Фаза на карта и фазата на намаляване . Входът и изходът на двете фази са двойки ключ, стойност. Типът двойки ключ, стойност се посочва от програмиста чрез класа InputFormat . По подразбиране се използва форматът за въвеждане на текст.
Програмистът посочва двете функции, тоест функция на карта и функцията занамаляване . Във функцията map програмистът записва бизнес логиката за обработка на данните.
Във функцията Reduce програмистът записва логиката за обобщаване и агрегиране на междинния изход на функцията за карта и генерира изхода.
Работа с Hadoop MapReduce
Всеки път, когато клиентът иска да извърши някаква обработка на своите данни в клъстера Hadoop, той първо съхранява данните в Hadoop HDFS и след това пише програмата MapReduce за обработка на данните. Hadoop MapReduce работи по следния начин:
1. Hadoop разделя работата на задачи от два типа, тоест картографски задачи и задачи за намаляване. YARN планира тези задачи (които ще видим по-късно в тази статия). Тези задачи се изпълняват на различни DataNodes.
2. Входът към заданието MapReduce е разделен на части с фиксиран размер, наречени разделяне на входа.
3. Една задача за карта, която изпълнява дефинирана от потребителя функция за карта за всеки запис във входното разделяне, се създава за всеки входен раздел. Тези картографски задачи се изпълняват на DataNodes, където се намират входните данни.
4. Резултатът от задачата за карта е междинен изход и се записва на локалния диск.
5. Междинните изходи от задачите на картата се разбъркват и сортират и след това се предават на редуктор.
6. За единична задача за намаляване, сортираният междинен изход на mapper се предава на възела, където се изпълнява задачата на редуктор. След това тези изходи се обединяват и след това се предават на дефинираната от потребителя функция за намаляване.
7. Функцията редуцира обобщава изхода на мапера и генерира изхода. Изходът на редуктора се съхранява в HDFS.
8. За множество функции за намаляване, потребителят посочва броя на редукторите. Когато има множество задачи за намаляване, задачите на картата разделят изхода си, създавайки по един дял за всяка задача за намаляване.
ПРЕЖДА
YARN е слоят за управление на ресурсите в Hadoop. Той планира задачата в клъстера Hadoop и присвоява ресурси на приложенията, работещи в клъстера. Той е отговорен за осигуряването на изчислителните ресурси, необходими за изпълнение на приложенията.
Има два YARN демона, работещи в клъстера Hadoop за обслужване на основни услуги на YARN. Те са:
a. Resource Manager
Това е главният демон на YARN. Той работи на главния възел на клъстер, за да управлява ресурсите в клъстера. ResourceManager има два основни компонента, които са Scheduler и ApplicationManager.
Планировчикът разпределя ресурси за различни приложения, работещи в клъстера.
ApplicationManager поема заданието, подадено от клиента, и договаря контейнера за изпълнение на специфичното за приложението ApplicationMaster и рестартира контейнера ApplicationMaster при неуспех.
б. NodeManager
NodeManager е подчинените демони на YARN. Той работи на всички подчинени възли в клъстера. Той отговаря за стартирането и управлението на контейнерите на възли. Контейнерите изпълняват специфичните за приложението процеси с ограничен набор от ресурси като памет, процесор и т.н.
Когато NodeManager стартира, той се обявява на ResourceManager. Той периодично изпраща пулс до ResourceManager. Той предлага ресурси на клъстера.
в. ApplicationMaster
ApplicationMaster за всяко приложение договаря контейнери от планировчици и проследява състоянието на контейнера и следи напредъка на контейнера.
Клиентът подава заявление до ResourceManager. ResourceManager се свързва с NodeManager, който стартира и наблюдава изчислителните контейнери на възли в клъстера. Контейнерът изпълнява ApplicationMaster.
Задачата MapReduce и ApplicationMaster се изпълняват в контейнери, които са планирани от ResourceManager и се управляват от NodeManager.
Нека сега да обобщим как Hadoop работи вътрешно:
1. HDFS разделя входните данни на клиента на блокове с размер 128 MB. В зависимост от коефициента на репликация се създават реплики на блокове. Блоковете и техните реплики се съхраняват на различни DataNodes.
2. След като всички блокове се съхраняват на HDFS DataNodes, потребителят може да обработва данните.
3. За да обработи данните, клиентът изпраща програмата MapReduce на Hadoop.
4. След това ResourceManager насрочи програмата, изпратена от потребителя на отделни възли в клъстера.
5. След като всички възли завършат обработката, изходът се записва обратно в HDFS.
Резюме
В тази статия проучихме цялата работа на Hadoop. Надявам се, че след като прочетете тази статия, ще разберете как Hadoop съхранява и обработва огромни количества данни.
Статията също така обяснява как ресурсите са насрочени между приложенията в ресурсите. Статията описва основните демони, работещи в клъстера Hadoop и основните компоненти на Hadoop.
Надявам се, че разбирате как Hadoop работи вътрешно.
Продължавайте да учите!!