Ako nastaviť klaster Hadoop s vysokou dostupnosťou HDFS



Tento blog poskytuje prehľad architektúry vysokej dostupnosti HDFS a toho, ako v jednoduchých krokoch nastaviť a nakonfigurovať klaster vysokej dostupnosti HDFS.

HDFS 2.x Klastrová architektúra s vysokou dostupnosťou

V tomto blogu budem hovoriť o architektúre klastra HDFS 2.x s vysokou dostupnosťou a o postupe nastavenia klastra HDFS s vysokou dostupnosťou.Toto je dôležitá súčasť . Poradie, ktoré obsahuje tento blog, je nasledovné:

  • HDFS HA ​​architektúra
    • Úvod
    • Dostupnosť názvu uzla
    • Architektúra HA
    • Implementácia HA (JournalNode a zdieľané úložisko)
  • Ako nastaviť HA (uzly kvóra) v klastri Hadoop?

Úvod:

Koncept klastra vysokej dostupnosti bol predstavený v Hadoop 2.x vyriešiť problém jediného bodu zlyhania v Hadoop 1.x. Ako viete z môjho predchádzajúceho blogu, že sleduje topológiu Master / Slave, kde NameNode funguje ako hlavný démon a je zodpovedný za správu ďalších podradených uzlov nazývaných DataNodes. Tento jediný hlavný démon alebo NameNode sa stáva prekážkou. Zavedenie sekundárneho NameNode nám síce zabránilo v strate údajov a odľahčení časti záťaže NameNode, ale nevyriešilo to problém dostupnosti NameNode.





Názov Uzol Dostupnosť:

Ak vezmete do úvahy štandardnú konfiguráciu klastra HDFS, stane sa z NameNode a jediný bod zlyhania . Stáva sa to preto, lebo v okamihu, keď je NameNode nedostupný, stane sa nedostupným celý klaster, kým niekto NameNode nereštartuje alebo neprinesie nový.

Dôvody nedostupnosti NameNode môžu byť:



  • Plánovaná udalosť, ako napríklad údržbárske práce, zahŕňa aktualizáciu softvéru alebo hardvéru.
  • Môže to byť tiež spôsobené neplánovanou udalosťou, pri ktorej dôjde k zrúteniu NameNode z niektorých dôvodov.

V obidvoch vyššie uvedených prípadoch máme prestoj, keď nemôžeme použiť klaster HDFS, ktorý sa stáva výzvou.

Architektúra HDFS HA:

Pochopme, že ako HDFS HA ​​Architecture vyriešila tento kritický problém dostupnosti NameNode:

Architektúra HA vyriešila tento problém dostupnosti NameNode tým, že nám umožnila mať dva NameNodes v aktívnej / pasívnej konfigurácii. Takže máme dva bežiace NameNodes súčasne v klastri vysokej dostupnosti:



  • Aktívny názov uzla
  • Pohotovostný / pasívny názov Uzol.

HDFS HA ​​Architecture - klaster vysokej dostupnosti - Edureka

Ak jeden NameNode zlyhá, druhý NameNode môže prevziať zodpovednosť, a preto znížiť čas výpadku klastra. Pohotovostný NameNode slúži na účel záložného NameNode (na rozdiel od sekundárneho NameNode), ktorý obsahuje možnosti prepnutia po zlyhaní do klastra Hadoop. Preto so StandbyNode môžeme mať automatické prepnutie po zlyhaní vždy, keď dôjde k zlyhaniu NameNode (neplánovaná udalosť), alebo môžeme mať počas doby údržby ladné (manuálne iniciované) prepnutie po zlyhaní.

Pri udržiavaní konzistencie v klastri HDFS High Availability sú dva problémy:

  • Aktívny a pohotovostný NameNode by mali byť vždy navzájom synchronizované, t. J. Mali by mať rovnaké metadáta. To nám umožní obnoviť klaster Hadoop do rovnakého stavu menného priestoru, v ktorom došlo k jeho zrúteniu, a preto nám poskytne rýchle zlyhanie.
  • Aktívny NameNode by mal byť iba jeden, pretože dva aktívne NameNode povedú k poškodeniu údajov. Tento druh scenára sa nazýva scenár rozdeleného mozgu, keď sa klaster rozdelí na menší klaster, pričom každý z nich verí, že je jediným aktívnym klastrom. Aby sa zabránilo takýmto scenárom, robí sa oplotenie. Oplotenie je proces zabezpečujúci, aby v konkrétnom čase zostal aktívny iba jeden NameNode.

Implementácia architektúry HA:

Teraz viete, že v architektúre HDFS HA ​​Architecture máme naraz spustené dva NameNodes. Konfiguráciu aktívneho a pohotovostného režimu NameNode teda môžeme implementovať dvoma spôsobmi:

  1. Používanie uzlov denníka kvóra
  2. Zdieľané úložisko pomocou NFS

Poďme pochopiť tieto dva spôsoby implementácie, ktoré berieme po jednom:

1. Používanie uzlov denníka kvóra:

  • Pohotovostný NameNode a aktívny NameNode sa navzájom synchronizujú prostredníctvom samostatnej skupiny uzlov alebo démonov JournalNodes .JournalNodes sleduje kruhovú topológiu, kde sú uzly navzájom spojené a vytvárajú krúžok.JournalNode slúži na prichádzajúcu žiadosť a kopíruje informácie do ďalších uzlov v kruhu.To poskytuje odolnosť proti chybám v prípade zlyhania modulu JournalNode.
  • Aktívny NameNode je zodpovedný za aktualizáciu EditLogs (informácie o metaúdajoch) prítomných v JournalNodes.
  • StandbyNode načíta zmeny vykonané v EditLogs v JournalNode a neustále ho použije na svoj vlastný priestor mien.
  • Počas záložného napájania sa StandbyNode ubezpečuje, že predtým, ako sa stane novým aktívnym uzlom názvu, aktualizoval svoje metaúdajové informácie z denníka JournalNodes. Týmto sa aktuálny stav priestoru mien synchronizuje so stavom pred zlyhaním.
  • IP adresy oboch NameNodes sú k dispozícii všetkým DataNodes a do obidvoch NameNode odosielajú informácie o ich srdcových rytmoch a informácie o polohe blokovania. Toto poskytuje rýchle zlyhanie (menej prestojov), pretože StandbyNode má aktualizované informácie o umiestnení bloku v klastri.

Oplotenie NameNode:

Teraz, ako už bolo spomenuté skôr, je veľmi dôležité zabezpečiť, aby existoval vždy iba jeden aktívny uzol NameNode. Oplotenie je teda proces na zabezpečenie tejto vlastnosti v klastri.

  • JournalNodes vykonáva toto oplotenie tak, že umožňuje zapisovať súčasne iba jednému NameNode.
  • Pohotovostný NameNode preberá zodpovednosť za zápis do JournalNodes a zakazuje ostatným NameNode zostať aktívnym.
  • Nový Active NameNode môže konečne vykonávať svoje činnosti bezpečne.

2. Používanie zdieľaného úložiska:

  • StandbyNode a aktívny NameNode sa navzájom synchronizujú pomocou a zdieľané úložné zariadenie .Aktívny NameNode zaznamenáva záznamy o všetkých úpravách vykonaných v jeho mennom priestore do EditLogu prítomného v tomto zdieľanom úložisku.StandbyNode načíta zmeny vykonané v EditLogs v tomto zdieľanom úložisku a použije ich na svoj vlastný priestor mien.
  • Teraz, v prípade zlyhania, StandbyNode najskôr aktualizuje svoje informácie o metadátach pomocou EditLogs v zdieľanom úložisku. Potom prevezme zodpovednosť za aktívny názov uzla. Týmto sa aktuálny stav priestoru mien synchronizuje so stavom pred zlyhaním.
  • Správca musí nakonfigurovať aspoň jednu metódu oplotenia, aby sa predišlo scenárom rozdeleného mozgu.
  • Systém môže využívať celý rad mechanizmov oplotenia. Môže to zahŕňať zabitie procesu NameNode a odvolanie prístupu k zdieľanému adresáru.
  • Ako posledné riešenie môžeme predtým aktívny NameNode ohradiť technikou známou ako STONITH alebo „vystreliť druhý uzol do hlavy“. STONITH používa špecializovanú jednotku na distribúciu energie na násilné vypnutie stroja NameNode.

Automatické zlyhanie:

Failover je postup, pri ktorom systém automaticky prenáša kontrolu na sekundárny systém, keď zistí poruchu alebo poruchu. Existujú dva typy zlyhania:

Elegantné zlyhanie: V takom prípade manuálne inicializujeme núdzové prepnutie pre rutinnú údržbu.

Automatické zlyhanie: V takom prípade sa záložné prepnutie inicializuje automaticky v prípade zlyhania NameNode (neplánovaná udalosť).

Apache Zookeeper je služba, ktorá poskytuje automatické zlyhanie v klastri HDFS High Dostupnébilty. Udržuje malé množstvo koordinačných údajov, informuje klientov o zmenách v týchto údajoch a monitoruje ich zlyhania. Zookeeper udržiava reláciu s NameNodes. V prípade zlyhania relácia vyprší a Zookeeper bude informovať ostatné NameNodes o začatí procesu prekonania zlyhania. V prípade zlyhania NameNode môže iný pasívny NameNode zablokovať Zookeeper s tým, že sa chce stať ďalším Aktívnym NameNode.

ZookeerFailoverController (ZKFC) je klient Zookeeper, ktorý tiež monitoruje a spravuje stav NameNode. Každý z NameNode prevádzkuje aj ZKFC. ZKFC je zodpovedná za pravidelné monitorovanie zdravia NameNodes.

Teraz, keď ste pochopili, čo je vysoká dostupnosť v klastri Hadoop, je čas ho nastaviť. Ak chcete nastaviť vysokú dostupnosť v klastri Hadoop, musíte vo všetkých uzloch použiť program Zookeeper.

Démoni v Active NameNode sú:

  • Ošetrovateľ v zoo
  • Ovládač Zookeeper zlyhal
  • JournalNode
  • NameNode

Démoni v pohotovostnom režime NameNode sú:

  • Ošetrovateľ v zoo
  • Ovládač Zookeeper zlyhal
  • JournalNode
  • NameNode

Démoni v DataNode sú:

  • Ošetrovateľ v zoo
  • JournalNode
  • DataNode

Ak si chcete osvojiť HDFS a Hadoop, pozrite sa na špeciálne upravený kurz Big Data a Hadoop od Edureka. Začnite kliknutím na tlačidlo nižšie.

Nastavenie a konfigurácia klastra vysokej dostupnosti v Hadoop:

Najprv musíte nastaviť názvy Java a hostiteľa každého uzla.

Virtuálny prístroj IP adresa Meno hosťa
Aktívny názov uzla192.168.1.81nn1.cluster.com alebo nn1
Pohotovostný názovNode192.168.1.58nn2.cluster.com alebo nn2
DataNode192.168.1.82dn1.cluster.com alebo dn1

Stiahnite si binárny tar súbor Hadoop a Zookeeper, extrahujte súbory a upravte konfiguračné súbory.

Príkaz: wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

Roztiahnite zookeeper-3.4.6.tar.gz

Velenie : tar –xvf zookeeper-3.4.6.tar.gz

Stiahnite si stabilný binárny decht Hadoop zo stránky Apache Hadoop.

Velenie : wget https://archive.apache.org/dist/hadoop/core/hadoop-2.6.0/hadoop-2.6.0.tar.gz

ako používať metódu orezania v

Extrahujte dechtovú guľu Hadoop.

Velenie : tar –xvf hadoop-2.6.0.tar.gz

Rozložte binárny súbor hadoop.

Pridajte súbory Hadoop, Zookeeper a cesty do súboru .bashrc.

Otvorte súbor .bashrc.

Velenie : sudo gedit ~ / .bashrc

Pridajte nasledujúce cesty:

export HADOOP_HOME = export HADOOP_MAPRED_HOME = $ HADOOP_HOME export HADOOP_COMMON_HOME = $ HADOOP_HOME export HADOOP_HDFS_HOME = $ HADOOP_HOME export YARN_HOME = $ HADOOP_HOME export HADOOP_CONF_DIR = $ HADOOP_HOME / etc / Hadoop export YARN_CONF_DIR = $ HADOOP_HOME / etc / export Hadoop JAVA_HOME = export ZOOKEEPER_HOME = export PATH = $ PATH: $ JAVA_HOME / bin: $ HADOOP_HOME / bin: $ HADOOP_HOME / sbin: $ ZOOKEEPER_HOME / bin

Upravte súbor .bashrc.

Povolte SSH vo všetkých uzloch.

Vytvorte kľúč SSH vo všetkých uzloch.

Velenie : ssh-keygen –t rsa (tento krok vo všetkých uzloch)

Nastavte kľúč SSH vo všetkých uzloch.

Neposkytujte žiadnu cestu k súboru Enter, aby ste uložili kľúč, a neposkytujte žiadnu prístupovú frázu. Stlačte tlačidlo Enter.

Vytvorte proces ssh kľúča vo všetkých uzloch.

Po vygenerovaní kľúča ssh získate verejný kľúč a súkromný kľúč.

Adresár kľúča .ssh by mal obsahovať povolenie 700 a všetky kľúče v adresári .ssh by mali obsahovať oprávnenie 600.

Zmeňte povolenie adresára SSH.

Zmeňte adresár na .ssh a zmeňte povolenie súborov na 600

Zmeňte povolenie verejného a súkromného kľúča.

Do všetkých uzlov musíte skopírovať verejný kľúč Name node ssh.

V Active Namenode skopírujte id_rsa.pub pomocou príkazu cat.

Velenie : cat ~ / .ssh / id_rsa.pub >> ~ / .ssh / authorized_keys

Skopírujte kľúč Namenode ssh do jeho autorizovaných kľúčov.

Skopírujte verejný kľúč NameNode na všetky uzly, ktoré používajú ssh-copy-id príkaz.

Velenie : ssh-copy-id –i .ssh / id_rsa.pub edureka@nn2.cluster.com

Skopírujte kľúč účelu do pohotovostného NameNode.

Skopírujte verejný kľúč NameNode do dátového uzla.

Velenie : ssh-copy-id –i .ssh / id_rsa.pub edureka@dn1.cluster.com

ako to urobiť s mocou v

Skopírujte verejný kľúč Namenode do dátového uzla.

Reštartujte službu sshd vo všetkých uzloch.

Velenie : sudo service sshd restart (Vykonať vo všetkých uzloch)

Reštartujte službu SSH.

Teraz sa môžete prihlásiť do ľubovoľného uzla z Namenode bez akejkoľvek autentifikácie.

Otvorte súbor core-site.xml z uzla Aktívne meno a pridajte nasledujúce vlastnosti.

Upravte core-site.xml z aktívneho pomenovaného uzla

Otvorte súbor hdfs-site.xml v aktívnom namenode. Pridajte nižšie uvedené vlastnosti.

dfs.namenode.name.dir / home / edureka / HA / data / namenode dfs.replication 1 dfs.permissions false dfs.nameservices ha-cluster dfs.ha.namenodes.ha-cluster nn1, nn2 dfs.namenode.rpc-address .ha-cluster.nn1 nn1.cluster.com: 9000 dfs.namenode.rpc-adresa.ha-cluster.nn2 nn2.cluster.com: 9000 dfs.namenode.http-adresa.ha-cluster.nn1 nn1.cluster. com: 50070 dfs.namenode.http-address.ha-cluster.nn2 nn2.cluster.com: 50070 dfs.namenode.shared.edits.dir qjournal: //nn1.cluster.com: 8485nn2.cluster.com: 8485dn1. cluster.com:8485/ha-cluster dfs.client.failover.proxy.provider.ha-cluster org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.automatic-failover.enabled true ha.zookeeper .quorum nn1.cluster.com:2181,nn2.cluster.com:2181,dn1.cluster.com:2181 dfs.ha.fencing.methods sshfence dfs.ha.fencing.ssh.private-key-files / home / edureka /.ssh/id_rsa

Zmeňte adresár na konfiguračný adresár zookeeper.

Velenie : cd zookeeper-3.4.6 / conf

Adresár konfigurácie aplikácie Zookeeper.

V adresári conf máte súbor zoo_sample.cfg, vytvorte zoo.cfg pomocou súboru zoo_sample.cfg.

Velenie : cp zoo_sample.cfg zoo.cfg

Vytvorte súbor zoo.cfg.

Vytvorte adresár na ľubovoľnom mieste a použite tento adresár na ukladanie údajov zookeeperu.

Velenie : mkdir

Vytvorte adresár na ukladanie údajov zookeeperov.

Otvorte súbor zoo.cfg.

Velenie : gedit zoo.cfg

Pridajte cestu k adresáru, ktorá je vytvorená v predchádzajúcom kroku, do vlastnosti dataDir a pridajte nasledujúce podrobnosti týkajúce sa zostávajúceho uzla do súboru zoo.cfg.

Server.1 = nn1.cluster.com: 2888: 3888

Server.2 = nn2.cluster.com: 2888: 3888

Server.3 = dn1.cluster.com: 2888: 3888

Upravte súbor zoo.cfg.

Teraz pomocou príkazu scp skopírujte adresáre Java a Hadoop-2.6.0, zookeeper-3.4.6 a súbor .bashrc do všetkých uzlov (uzol pohotovostného názvu, dátový uzol).

Velenie : scp –r edureka @:

Skopírujte súbory Hadoop, Zookeeper a .bashrc do všetkých uzlov.

Podobne skopírujte súbor .bashrc a adresár zookeeper do všetkých uzlov a zmeňte premenné prostredia v každom z nich podľa príslušného uzla.

V dátovom uzle vytvorte ľubovoľný adresár, kam potrebujete uložiť bloky HDFS.

V dátovom uzle musíte pridať vlastnosti dfs.datanode.data.dir.

V mojom prípade som tvoril datanóda adresár na uloženie blokov.

Vytvorte adresár Datanode.

Zmeňte povolenie na adresár dátových uzlov.

Zmeňte povolenie adresára Datanode.

Otvorte súbor HDFS-site.xml, pridajte túto cestu k adresáru Datanode vo vlastnosti dfs.datanode.data.dir.

Poznámka: Ponechajte všetky vlastnosti, ktoré sa kopírujú z aktívneho pomenovaného uzla, pridajte jednu extrakčnú vlastnosť dfs.datanode.data.dir do pomenovaného uzla.

dfs.datanode.data.dir / home / edureka / HA / data / datanode

V Active namenode zmeňte adresár, kam chcete uložiť konfiguračný súbor zookeeper (cesta vlastnosti dataDir).

Vytvorte súbor myid v adresári, pridajte do súboru číselnú hodnotu 1 a uložte súbor.

Velenie : vi myid

Vytvorte súbor myid.

V pohotovostnom mennom uzle zmeňte adresár, kam chcete uložiť konfiguračný súbor zookeeper (cesta vlastnosti dataDir).

Vytvorte súbor myid v adresári, do súboru pridajte číselnú hodnotu 2 a uložte súbor.

V dátovom uzle zmeňte adresár, kam chcete uložiť konfiguračný súbor zookeeper (cesta vlastnosti dataDir).

Vytvorte súbor myid v adresári a do súboru pridajte číslicu 3 a uložte súbor.

Spustite Journalnode vo všetkých troch uzloch.

Velenie : hadoop-daemon.sh start journalnode

Spustite denník.

Po zadaní príkazu jps sa démon JournalNode zobrazí vo všetkých uzloch.

NaformátujteAktívny účel.

Velenie : HDFS určený - formát

Aktívny formát NameNode.

Spustite démona Namenode a Active Namedode.

Velenie : hadoop-daemon.sh začiatočný účel

Spustite Namenode.

Skopírujte metaúdaje HDFS z aktívneho uzla názvu do pohotovostného uzla mena.

Velenie : HDFS určené - bootstrap Standby

Skopírujte údaje HDFS Meta z aktívneho uzla názvu do pohotovostného pomenovaného uzla.

Po spustení tohto príkazu získate informácie, z ktorého uzla a umiestnenia sa meta dáta kopírujú, a či sa kopírujú úspešne alebo nie.

Informácie o podrobnostiach aktívneho účelu.

Po skopírovaní metadát z aktívneho pomenovaného uzla do pohotovostného pomenovaného uzla sa zobrazí správa uvedená nižšie na snímke obrazovky.

Informácie týkajúce sa HDFS v pohotovostnom režime Namenode.

Spustite démona namenode v pohotovostnom stroji namenode.

Velenie : hadoop-daemon.sh začiatočný účel

Teraz spustite službu Zookeeper vo všetkých troch uzloch.

Velenie : zkServer.sh start (Spustite tento príkaz vo všetkých uzloch)

Aktívne:

Spustite zookeeper v Active NameNode.

V pohotovostnom režime Namenode:

Spustite zookeeper v pohotovostnom režime NameNode.

V dátovom uzle:

Spustite zookeeper v DataNode.

Po spustení servera Zookeeper zadajte príkaz JPS. Vo všetkých uzloch uvidíte službu QuorumPeerMain.

ssis tutorial krok za krokom

Spustite démona dátového uzla v prístroji dátového uzla.

Velenie : hadoop-daemon.sh začiatočný datanód

Spustite záložný ovládač Zookeeper v uzle aktívneho názvu a pohotovostného názvu.

Naformátujte zlyhanie zookeeper nad radičom v aktívnom namenode.

Príkaz: HDFS zkfc –formatZK

Formátovať ZKFC.

Spustite ZKFC v aktívnom namenode.

Velenie : hadoop-daemon.sh start zkfc

Zadaním príkazu jps skontrolujte démony DFSZkFailoverController.

Spustite ZKFC.

Naformátujte zlyhanie zookeeper nad radičom v pohotovostnom namenode.

Velenie : hdfs zkfc –formatZK

Spustite ZKFC v pohotovostnom namenode.

Velenie : hadoop-daemon.sh start zkfc

Zadaním príkazu jps skontrolujte démony DFSZkFailoverController.

Teraz pomocou nižšie uvedeného príkazu skontrolujte stav každého Namenode, ktorý uzol je aktívny alebo ktorý uzol je v pohotovostnom režime.

Velenie : hdfs haadmin –getServiceState nn1

Skontrolujte stav každého NameNode.

Teraz skontrolujte stav každého Namenode pomocou webového prehliadača.

Otvorte webový prehľadávač a zadajte nižšie uvedenú adresu URL.

: 50070

Zobrazí sa, či je uzol názvu aktívny alebo v pohotovostnom režime.

Aktívny názov uzla.

Pomocou webového prehliadača otvorte podrobnosti iného uzla názvu.

Pohotovostný názovNode.

V aktívnom namenode zabite démona namenode, aby sa uzol Standby name zmenil na aktívny namenode.

Zadajte jps do aktívneho namenode a zabite démona.

Príkaz: sudo kill -9

ID procesu démonov.

ID procesu namenode je 7606, zabite namenode.

Velenie : Sudo kill -9 7606

Zabite proces Name Node

Otvorte dva uzly pomocou webového prehliadača a skontrolujte stav.

Podrobnosti o namenode.

Stav NameNode.

Gratulujeme, úspešne ste v Hadoop nastavili HDFS High Availability Cluster.

Teraz, keď ste pochopili klastrovú architektúru vysokej dostupnosti Hadoop, pozrite sa na autor: Edureka, dôveryhodná online vzdelávacia spoločnosť so sieťou viac ako 250 000 spokojných študentov rozmiestnených po celom svete. Kurz certifikácie Edadoka Big Data Hadoop Certification Training pomáha študentom stať sa odborníkmi v oblasti HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume a Sqoop pomocou prípadov použitia v reálnom čase v oblasti maloobchodu, sociálnych médií, letectva, cestovného ruchu, financií.

Máte na nás otázku? Uveďte to prosím v sekcii komentárov a my sa vám ozveme.

window._LQ_ = window._LQ_ || {}

lqQuizModal (okno, dokument, {quizId: ‘XAIVp8 ′, baseUrl:’ https: //quiz.leadquizzes.com/’,trigger: ‘ukončenie’}, _LQ_)