Chcete vědět, jak Hadoop ve skutečnosti ukládá a zpracovává obrovské množství dat?
V tomto článku budeme studovat, jak Hadoop interně funguje. Uvidíme, jak Hadoop ukládá a zpracovává velké datové sady. Článek podrobně vysvětluje fungování Hadoopu. Článek nejprve poskytuje krátký úvod do Hadoop.
Poté uvidíme součásti jádra Hadoop a démony běžící v clusteru Hadoop. Článek pak vysvětluje fungování Hadoopu pokrývající všechny jeho základní komponenty, jako je HDFS, MapReduce a YARN.
Podívejme se nyní nejprve na krátký úvod do Hadoop.
Úvod do Hadoop
S rostoucím objemem velkých dat vyvinula Apache Software Foundation v roce 2008 open-source framework známý jako Apache Hadoop, který je řešením všech problémů s velkými daty.
Apache Hadoop je framework, který dokáže ukládat a zpracovávat obrovské množství nestrukturovaných dat o velikosti od terabajtů po petabajty. Je to vysoce odolný a vysoce dostupný systém.
Hadoop ukládá obrovské množství dat distribuovaným způsobem v HDFS. Hadoop MapReduce je procesorová jednotka v Hadoop, která zpracovává data paralelně.
Hadoop YARN je další základní komponentou v rámci Hadoop, která je zodpovědná za správu zdrojů mezi aplikacemi běžícími v clusteru a plánování úlohy.
Než budeme studovat, jak Hadoop interně funguje, podívejme se nejprve na hlavní komponenty a démony Hadoopu.
Součásti a démoni Hadoop
Hadoop se skládá ze tří hlavních komponent, kterými jsou HDFS, MapReduce a YARN.
1. Hadoop HDFS
Je to úložná vrstva pro Hadoop. Hadoop Distributed File System ukládá data napříč různými uzly v clusteru. Rozděluje data do bloků a ukládá je na různé uzly. Velikost bloku je ve výchozím nastavení 128 MB . Můžeme nakonfigurovat velikost bloku podle našich požadavků.
2. Hadoop MapReduce
Je to vrstva zpracování v Hadoopu. Hadoop MapReduce zpracovává data uložená v Hadoop HDFS paralelně napříč různými uzly v clusteru. Rozdělí úkol zadaný uživatelem do samostatného úkolu a zpracovává je jako dílčí úkoly napříč komoditním hardwarem.
3. Hadoop PŘÍZE
Je to vrstva správy zdrojů a procesů Hadoop. YARN je zodpovědný za sdílení zdrojů mezi aplikacemi běžícími v clusteru a plánování úlohy v clusteru.
Toto jsou tři základní komponenty v Hadoop.
Démoni běžící v clusteru Hadoop
Existuje několik démonů, kteří běží na clusteru Hadoop. Démoni jsou nenáročný proces, který běží na pozadí.
Někteří démoni běží na uzlu Master a někteří na uzlu Slave. Pojďme nyní studovat Hadoop démony.
Hlavní démoni Hadoop jsou:
1. Master Daemons
- NameNode: Je to hlavní démon v Hadoop HDFS. Udržuje jmenný prostor souborového systému. Ukládá metadata o každém bloku souborů.
- ResourceManager: Je to hlavní démon YARN. Rozhoduje o prostředcích mezi všemi aplikacemi spuštěnými v clusteru.
2. Démoni otroků
- Datový uzel: DataNode je slave démon Hadoop HDFS. Běží na podřízených strojích. Ukládá aktuální data nebo bloky.
- NodeManager: Je to otrocký démon YARN. Stará se o všechny jednotlivé výpočetní uzly v clusteru.
Jak Hadoop funguje?
Hadoop ukládá a zpracovává data distribuovaným způsobem napříč clusterem komoditního hardwaru. K uložení a zpracování jakýchkoli dat klient odešle data a program do clusteru Hadoop.
Hadoop HDFS ukládá data, MapReduce zpracovává data uložená v HDFS a YARN rozděluje úkoly a přiděluje zdroje.
Podívejme se nyní na tyto komponenty podrobně.
1. HDFS
Data v Hadoop jsou uložena v Hadoop Distributed File System. V Hadoop HDFS běží dva démoni, kterými jsou NameNode a DataNode.
a. NameNode
NameNode je hlavní démon v HDFS. Běží na hlavních uzlech. Udržuje jmenný prostor souborového systému. NameNode neukládá aktuální data. Ukládá metadata, jako jsou informace o blocích souborů, oprávnění k souborům, umístění bloků atd.
NameNode spravuje DataNode a poskytuje jim pokyny. NameNode přijímá srdeční tlukot z DataNodes každé 3 sekundy, což udává, že DataNode je naživu.
b. DataNode
DataNode je slave démon v HDFS. DataNodes jsou podřízené uzly, které ukládají skutečná obchodní data. Jsou zodpovědní za obsluhu požadavků klienta na čtení/zápis na základě pokynů z NameNode. DataNodes posílají do NameNode zprávy s tlukotem srdce, aby zajistily, že jsou naživu.
c. Sekundární NameNode
Je to další démon v Hadoop HDFS. Je to pomocný uzel pro primární NameNode. Sekundární NameNode stáhne protokoly úprav a soubor Fsimage z primárního NameNode a pravidelně použije protokoly úprav pro Fsimage .
Poté odešle zpět aktualizovaný soubor Fsimage do NameNode. Pokud tedy primární NameNode selže, použije se poslední uložený Fsimage na sekundárním NameNode k obnovení metadat systému souborů.
Kdykoli chce klient číst nebo zapisovat data do Hadoop HDFS, nejprve interaguje s NameNode. NameNode nejprve zkontroluje oprávnění klienta, a pokud má klient dostatečná oprávnění, pak NameNode poskytne adresu DataNode, odkud může klient číst nebo zapisovat data.
Soubor klienta v HDFS je rozdělen do bloků. Velikost bloku je standardně 128 MB. DataNode ukládá bloky souborů. Pro zajištění odolnosti proti chybám vytváří HDFS repliky bloků v závislosti na faktoru replikace.
Ve výchozím nastavení je faktor replikace 3, což znamená, že v HDFS jsou uloženy 3 kopie bloku. HDFS ukládá repliky bloku na různých DataNode podle algoritmu Rack Awareness.
Pokud během čtení souboru dojde k výpadku některého DataNode, NameNode poskytne adresu jiného DataNode obsahujícího repliku bloku, odkud může klient číst svá data bez jakéhokoli výpadku.
2. MapReduce
MapReduce je vrstva zpracování v Hadoop. Data zpracovává paralelně na více strojích v clusteru. Funguje tak, že rozděluje úlohu do nezávislých dílčích úloh a provádí je paralelně napříč různými datovými uzly.
MapReduce zpracovává data do dvou fází, tedy do fáze mapy a Fáze snížení . Vstup a výstup obou fází jsou páry klíč, hodnota. Typ párů klíč, hodnota určuje programátor prostřednictvím třídy InputFormat . Ve výchozím nastavení je použit formát vstupu textu.
Programátor specifikuje dvě funkce, tedy mapovací funkci a funkce snížení . Ve funkci map zapisuje programátor obchodní logiku pro zpracování dat.
Ve funkci Reduce zapíše programátor logiku pro sumarizaci a agregaci mezivýstupu mapové funkce a generuje výstup.
Fungování Hadoop MapReduce
Kdykoli chce klient provést jakékoli zpracování svých dat v clusteru Hadoop, nejprve data uloží do Hadoop HDFS a poté zapíše program MapReduce pro zpracování dat. Hadoop MapReduce funguje následovně:
1. Hadoop rozděluje práci na úkoly dvou typů, to znamená mapovat úkoly a redukovat úkoly. YARN naplánoval tyto úkoly (které uvidíme později v tomto článku). Tyto úlohy běží na různých DataNode.
2. Vstup do úlohy MapReduce je rozdělen na části s pevnou velikostí nazývané vstupní rozdělení.
3. Pro každé vstupní rozdělení je vytvořena jedna mapová úloha, která spouští uživatelem definovanou mapovací funkci pro každý záznam ve vstupním rozdělení. Tyto mapovací úlohy běží na DataNodes, kde jsou umístěna vstupní data.
4. Výstup mapovací úlohy je mezivýstup a je zapsán na místní disk.
5. Mezivýstupy mapových úloh se zamíchají a seřadí a poté se předají reduktorovi.
6. Pro jednu úlohu redukce je setříděný mezivýstup mapovače předán do uzlu, kde běží úloha redukce. Tyto výstupy jsou poté sloučeny a poté předány uživatelem definované funkci snížení.
7. Funkce snížení shrnuje výstup mapovače a generuje výstup. Výstup redukce je uložen na HDFS.
8. U funkcí vícenásobného snížení uživatel zadá počet reduktorů. Pokud existuje více úloh snížení, mapovací úlohy rozdělí svůj výstup a vytvoří jeden oddíl pro každou úlohu snížení.
PŘÍZE
YARN je vrstva správy zdrojů v Hadoopu. Naplánuje úlohu v clusteru Hadoop a přiřadí prostředky aplikacím spuštěným v clusteru. Je zodpovědný za poskytování výpočetních zdrojů potřebných pro spouštění aplikací.
V clusteru Hadoop běží dva démoni YARN pro obsluhu základních služeb YARN. Jsou to:
a. ResourceManager
Je to hlavní démon YARN. Spouští se na hlavním uzlu na cluster, aby spravoval prostředky napříč clusterem. ResourceManager má dvě hlavní součásti, kterými jsou Plánovač a ApplicationManager.
Plánovač přiděluje prostředky různým aplikacím běžícím v clusteru.
ApplicationManager převezme úlohu odeslanou klientem a vyjedná kontejner pro spuštění ApplicationMaster specifického pro aplikaci a při selhání restartuje kontejner ApplicationMaster.
b. NodeManager
NodeManager je slave démoni YARN. Běží na všech podřízených uzlech v clusteru. Je zodpovědný za spouštění a správu kontejnerů na uzlech. Kontejnery spouštějí procesy specifické pro aplikaci s omezenou sadou zdrojů, jako je paměť, CPU a tak dále.
Když se NodeManager spustí, oznámí se ResourceManager. Pravidelně posílá prezenční signál do ResourceManager. Nabízí prostředky klastru.
c. ApplicationMaster
ApplicationMaster pro jednotlivé aplikace vyjednává plánovače formulářů kontejnerů a sleduje stav kontejneru a monitoruje průběh kontejneru.
Klient odešle aplikaci do ResourceManager. ResourceManager kontaktuje NodeManager, který spouští a monitoruje výpočetní kontejnery na uzlech v clusteru. Kontejner spustí ApplicationMaster.
Úloha MapReduce a ApplicationMaster běží v kontejnerech, které jsou naplánovány ResourceManager a spravovány NodeManager.
Pojďme si nyní shrnout, jak Hadoop interně funguje:
1. HDFS rozděluje vstupní data klienta do bloků o velikosti 128 MB. V závislosti na faktoru replikace se vytvářejí repliky bloků. Bloky a jejich repliky jsou uloženy v různých DataNode.
2. Jakmile jsou všechny bloky uloženy na HDFS DataNodes, uživatel může data zpracovat.
3. Ke zpracování dat klient odešle program MapReduce společnosti Hadoop.
4. ResourceManager poté naplánoval program odeslaný uživatelem na jednotlivých uzlech v clusteru.
5. Jakmile všechny uzly dokončí zpracování, výstup se zapíše zpět do HDFS.
Shrnutí
V tomto článku jsme studovali celé fungování Hadoopu. Doufám, že po přečtení tohoto článku pochopíte, jak Hadoop ukládá a zpracovává obrovské množství dat.
Článek také vysvětluje, jak jsou prostředky naplánovány mezi aplikacemi ve zdrojích. Článek popisuje hlavní démony běžící v clusteru Hadoop a základní součásti Hadoop.
Doufám, že chápete, jak Hadoop interně funguje.
Pokračujte v učení!!