Kako postaviti Hadoop klaster s HDFS velikom dostupnošću



Ovaj blog pruža pregled HDFS arhitekture visoke dostupnosti i kako u jednostavnim koracima postaviti i konfigurirati klaster HDFS visoke dostupnosti.

HDFS 2.x Arhitektura klastera visoke dostupnosti

Na ovom blogu govorit ću o arhitekturi klastera visoke dostupnosti HDFS 2.x i postupku postavljanja klastera visoke dostupnosti HDFS.Ovo je važan dio . Redoslijed kojim su teme obrađivane na ovom blogu su sljedeći:

  • HDFS HA ​​arhitektura
    • Uvod
    • Dostupnost NameNode
    • Arhitektura HA
    • Implementacija HA (JournalNode i dijeljena pohrana)
  • Kako postaviti HA (Quorum Journal Nodes) u Hadoop klasteru?

Uvod:

Koncept klastera visoke dostupnosti predstavljen je u Hadoop 2.x za rješavanje problema s pojedinačnom točkom kvara u Hadoop 1.x. Kao što znate iz mog prethodnog bloga da slijedi glavna / podređena topologija gdje NameNode djeluje kao glavni demon i odgovoran je za upravljanje ostalim podređenim čvorovima koji se nazivaju DataNodes. Ovaj jedini Master Daemon ili NameNode postaje usko grlo. Iako nas je uvođenje Sekundarnog NameNode spriječilo da izgubimo podatke i rasteretimo dio tereta NameNode, ali to nije riješilo problem dostupnosti NameNode.





Dostupnost NameNode:

Ako uzmete u obzir standardnu ​​konfiguraciju HDFS klastera, NameNode postaje jedna točka neuspjeha . To se događa jer onog trenutka kad NameNode postane nedostupan, cijeli klaster postaje nedostupan dok netko ponovno ne pokrene NameNode ili donese novi.

Razlozi nedostupnosti NameNode mogu biti:



  • Planirani događaj poput poslova održavanja, kao što je nadogradnja softvera ili hardvera.
  • Uzrok tome može biti i neplanirani događaj kada se NameNode sruši iz nekih razloga.

U bilo kojem od gore navedenih slučajeva imamo zastoje u kojima nismo u mogućnosti koristiti HDFS klaster što postaje izazov.

HDFS HA ​​arhitektura:

Shvatimo da je kako je HDFS HA ​​Arhitektura riješila ovaj kritični problem dostupnosti NameNode:

HA arhitektura riješila je ovaj problem dostupnosti NameNode dopuštajući nam da imamo dva NameNode u aktivnoj / pasivnoj konfiguraciji. Dakle, istovremeno imamo dva izvršena NameNodes u klasteru visoke dostupnosti:



  • Active NameNode
  • U stanju čekanja / pasivni NameNode.

HDFS HA ​​arhitektura - klaster velike dostupnosti - Edureka

Ako jedan NameNode padne, drugi NameNode može preuzeti odgovornost i prema tome smanjiti vrijeme pada klastera. Rezervni NameNode služi u svrhu rezervnog NameNode (za razliku od Sekundarnog NameNode) koji uključuje mogućnosti prebacivanja u klaster Hadoop. Stoga, s StandbyNodeom, možemo automatski preusmjeriti preusmjeravanje kad god se NameNode sruši (neplanirani događaj) ili možemo imati graciozno (ručno pokretanje) preusmjeravanje tijekom perioda održavanja.

Dva su problema u održavanju dosljednosti u HDFS klasteru visoke dostupnosti:

  • Aktivni i rezervni imenski čvor uvijek bi trebali biti međusobno sinkronizirani, tj. Trebali bi imati iste metapodatke. To će nam omogućiti da vratimo klaster Hadoop u isto stanje imenskog prostora u kojem se srušio i stoga će nam omogućiti brzo prebacivanje s jedne na drugu.
  • Istodobno bi trebao postojati samo jedan aktivni NameNode, jer će dva aktivna NameNode dovesti do oštećenja podataka. Ova vrsta scenarija naziva se scenarijem podijeljenog mozga gdje se klaster dijeli na manje klastere, a svaki vjeruje da je jedini aktivni klaster. Da bi se izbjegli takvi scenariji, vrši se ograđivanje. Ograđivanje je postupak kojim se osigurava da samo jedan NameNode ostane aktivan u određeno vrijeme.

Provedba HA arhitekture:

Sada znate da u HDFS HA ​​arhitekturi istodobno rade dva NameNodes. Dakle, možemo implementirati Active i Standby NameNode konfiguraciju na sljedeća dva načina:

što trim radi u javi
  1. Korištenje čvorova Quorum Journal
  2. Dijeljena pohrana pomoću NFS-a

Razumijemo ova dva načina implementacije, uzimajući jedan po jedan:

1. Korištenje čvorova kvorumskih dnevnika:

  • Rezervni NameNode i aktivni NameNode međusobno se sinkroniziraju kroz zasebnu skupinu čvorova ili demona koji se nazivaju JournalNodes .JournalNodes slijedi topologiju prstena gdje su čvorovi međusobno povezani kako bi stvorili prsten.JournalNode služi zahtjevu koji mu dolazi i kopira podatke u druge čvorove u prstenu.To osigurava toleranciju kvara u slučaju kvara JournalNode.
  • Aktivni NameNode odgovoran je za ažuriranje EditLogs (podataka o metapodacima) prisutnih u JournalNodes.
  • StandbyNode čita promjene izvršene u EditLogs u JournalNode i konstantno ih primjenjuje na svoj vlastiti prostor imena.
  • Tijekom preusmjeravanja, StandbyNode osigurava da je ažurirao svoje podatke meta podataka iz JournalNodes-a prije nego što je postao novi Active NameNode. To čini trenutačno stanje prostora imena sinkroniziranim sa stanjem prije preusmjeravanja.
  • IP adrese oba NameNodes-a dostupne su svim DataNodes-ovima i šalju otkucaje srca i blokiraju informacije o lokaciji oba NameNode-a. To omogućuje brzo prebacivanje (manje vremena zastoja) jer StandbyNode ima ažurirane informacije o mjestu bloka u klasteru.

Ograđivanje NameNode:

Sada, kao što je ranije spomenuto, vrlo je važno osigurati da istovremeno postoji samo jedan aktivni čvor imena. Dakle, ograda je postupak kojim se osigurava upravo to svojstvo u klasteru.

  • JournalNodes izvodi ovo ograđivanje dopuštajući da samo jedan NameNode bude odjednom pisac.
  • Rezervni NameNode preuzima odgovornost pisanja na JournalNodes i zabranjuje bilo kojem drugom NameNodeu da ostane aktivan.
  • Napokon, novi Active NameNode može sigurno obavljati svoje aktivnosti.

2. Korištenje zajedničke pohrane:

  • StandbyNode i aktivni NameNode međusobno se sinkroniziraju pomoću a zajednički uređaj za pohranu .Aktivni NameNode bilježi zapis svih izmjena izvršenih u svom prostoru imena u EditLog koji je prisutan u ovoj zajedničkoj pohrani.StandbyNode čita promjene napravljene u EditLogovima u ovoj zajedničkoj pohrani i primjenjuje ih na vlastiti prostor imena.
  • Sada, u slučaju otkaza, StandbyNode isprva ažurira svoje podatke o metapodacima koristeći EditLogs u zajedničkoj pohrani. Tada preuzima odgovornost Active NameNode. To čini trenutačno stanje prostora imena sinkroniziranim sa stanjem prije preusmjeravanja.
  • Administrator mora konfigurirati barem jednu metodu ograde kako bi se izbjegao scenarij podijeljenog mozga.
  • Sustav može koristiti niz mehanizama ograde. To može uključivati ​​ubijanje procesa NameNode i ukidanje njegovog pristupa direktoriju zajedničke pohrane.
  • Kao krajnje sredstvo, možemo ograditi prethodno aktivni NameNode tehnikom poznatom kao STONITH ili 'pucati drugom čvoru u glavu'. STONITH koristi specijaliziranu jedinicu za distribuciju električne energije za prisilno isključivanje NameNode stroja.

Automatsko preusmjeravanje:

Failover je postupak kojim sustav automatski prenosi kontrolu na sekundarni sustav kada otkrije kvar ili kvar. Postoje dvije vrste preusmjeravanja:

Graceful Failover: U ovom slučaju ručno pokrećemo preusmjeravanje za rutinsko održavanje.

Automatsko preusmjeravanje: U tom se slučaju preusmjeravanje automatski pokreće u slučaju kvara NameNode (neplanirani događaj).

Apache Zookeeper usluga je koja pruža mogućnost automatskog otkazivanja u klasteru HDFS High Availabilty. Održava male količine podataka o koordinaciji, obavještava klijente o promjenama u tim podacima i nadgleda klijente zbog pogrešaka. Zookeeper održava sesiju s NameNodes. U slučaju neuspjeha, sesija će isteći, a Zookeeper će obavijestiti druge NameNodes da pokrenu postupak preusmjeravanja. U slučaju kvara NameNode, drugi pasivni NameNode može zaključati Zookeeper izjavom da želi postati sljedeći Aktivni NameNode.

ZookeerFailoverController (ZKFC) je Zookeeper klijent koji također nadgleda i upravlja statusom NameNode. Svaki od NameNode također pokreće ZKFC. ZKFC je odgovoran za povremeno praćenje zdravlja NameNodes-a.

Sad kad ste shvatili što je velika dostupnost u Hadoop klasteru, vrijeme je da ga postavite. Da biste postavili visoku dostupnost u Hadoop klasteru, morate koristiti Zookeeper u svim čvorovima.

Demoni u Active NameNode su:

  • Čuvar zoo vrta
  • Kontroler neuspjeha čuvara zoološkog vrta
  • JournalNode
  • NameNode

Demoni u Standby NameNode su:

  • Čuvar zoo vrta
  • Kontroler neuspjeha čuvara zoološkog vrta
  • JournalNode
  • NameNode

Demoni u DataNodeu su:

  • Čuvar zoo vrta
  • JournalNode
  • DataNode

Ako želite svladati HDFS i Hadoop, pogledajte posebno kurirani tečaj Big Data i Hadoop od Edureke. Kliknite gumb u nastavku da biste započeli.

Postavljanje i konfiguriranje klastera visoke dostupnosti u Hadoopu:

Prvo morate postaviti Java i imena hosta svakog čvora.

Virtualni stroj IP adresa Ime domaćina
Active NameNode192.168.1.81nn1.cluster.com ili nn1
Ime u stanju čekanja192.168.1.58nn2.cluster.com ili nn2
DataNode192.168.1.82dn1.cluster.com ili dn1

Preuzmite binarnu tar datoteku Hadoop i Zookeeper, izdvojite datoteke za uređivanje konfiguracijskih datoteka.

Naredba: wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

Širite čuvara zoološkog vrta-3.4.6.tar.gz

Naredba : tar –xvf čuvar zoološkog vrta-3.4.6.tar.gz

Preuzmite stabilni binarni katran Hadoop sa stranice Apache Hadoop.

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

Izvadite kuglu katrana Hadoop.

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

Širite hadoop binarni.

Dodajte datoteku Hadoop, Zookeeper i staze .bashrc.

Otvorite datoteku .bashrc.

Naredba : sudo gedit ~ / .bashrc

Dodajte donje staze:

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

Uredi .bashrc datoteku.

Omogućite SSH u svim čvorovima.

Generirajte SSH ključ u svim čvorovima.

Naredba : ssh-keygen –t rsa (ovaj korak u svim čvorovima)

Postavite SSH ključ u svim čvorovima.

Ne dajte put do datoteke Enter da biste spremili ključ i nemojte davati lozinku. Pritisnite tipku enter.

Generirajte postupak ključa ssh u svim čvorovima.

Jednom kada se generira ssh ključ, dobit ćete javni i privatni ključ.

Direktorij .ssh ključeva trebao bi sadržavati dozvolu 700, a svi ključevi unutar .ssh direktorija trebali bi sadržavati dozvole 600.

Promijenite dopuštenje SSH direktorija.

Promijenite direktorij u .ssh, a dopuštenje datoteka promijenite u 600

Promijenite dozvolu za javni i privatni ključ.

Morate kopirati javni ključ imena čvorova ssh na sve čvorove.

U Active Namenode kopirajte id_rsa.pub pomoću naredbe cat.

Naredba : mačka ~ / .ssh / id_rsa.pub >> ~ / .ssh / odobreni_ključevi

Kopirajte Namenode ssh ključ u ovlaštene ključeve.

Kopirajte javni ključ NameNode na sve čvorove koji koriste ssh-copy-id naredba.

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

Kopirajte namjenski ključ u Standby NameNode.

Kopirajte javni ključ NameNode u čvor podataka.

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

Kopirajte javni ključ Namenode u čvor podataka.

Ponovo pokrenite sshd uslugu u svim čvorovima.

Naredba : sudo service sshd restart (učiniti u svim čvorovima)

Ponovo pokrenite SSH uslugu.

Sada se možete prijaviti na bilo koji čvor iz Namenode bez ikakve provjere autentičnosti.

Otvorite datoteku core-site.xml iz čvora Active Name i dodajte donja svojstva.

Uredite core-site.xml iz Active namenode

Otvorite datoteku hdfs-site.xml u Active Namenode. Dodajte dolje Svojstva.

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-address.ha-cluster.nn2 nn2.cluster.com:9000 dfs.namenode.http-address.ha-cluster.nn1 nn1.cluster. com: 50070 dfs.namenode.http-adresa.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

Promijenite direktorij u zookeeper's conf direktorij.

Naredba : cd čuvar zoološkog vrta-3.4.6 / conf

Imenik Zookeeper Conf.

U direktoriju conf imate datoteku zoo_sample.cfg, stvorite zoo.cfg pomoću datoteke zoo_sample.cfg.

Naredba : cp zoo_sample.cfg zoo.cfg

Stvorite datoteku zoo.cfg.

Stvorite direktorij na bilo kojem mjestu i koristite ovaj direktorij za pohranu podataka čuvara zooloških vrtova.

Naredba : mkdir

Stvorite direktorij za pohranu podataka čuvara zooloških vrtova.

Otvorite datoteku zoo.cfg.

Naredba : gedit zoo.cfg

Dodajte svojstvo direktorija stvorenog u gornjem koraku u svojstvo dataDir i dodajte dolje detalje o preostalom čvoru u datoteku zoo.cfg.

Poslužitelj.1 = nn1.cluster.com: 2888: 3888

Poslužitelj.2 = nn2.cluster.com: 2888: 3888

Poslužitelj.3 = dn1.cluster.com: 2888: 3888

Uredi datoteku zoo.cfg.

Sada kopirajte direktorije Java i Hadoop-2.6.0, zookeeper-3.4.6 i .bashrc datoteku na sve čvorove (čvor imena u stanju pripravnosti, čvor podataka) pomoću naredbe scp.

Naredba : scp –r edureka @:

Kopirajte datoteku Hadoop, Zookeeper i .bashrc na sve čvorove.

Slično tome, kopirajte datoteku .bashrc i direktorij zookeeper na sve čvorove i promijenite varijable okruženja u svakom prema odgovarajućem čvoru.

U podatkovnom čvoru stvorite bilo koji direktorij u koji trebate pohraniti HDFS blokove.

U podatkovni čvor morate dodati svojstva dfs.datanode.data.dir.

U mom slučaju sam stvorio podatkovni čvor direktorij za pohranu blokova.

Stvorite direktorij Datanode.

Promijenite dozvolu za direktorij čvora podataka.

Promijenite dozvolu direktorija Datanode.

Otvorite datoteku HDFS-site.xml, dodajte ovu stazu direktorija Datanode u svojstvo dfs.datanode.data.dir.

Napomena: Neka sva svojstva koja su kopirana iz aktivne namenode dodaju dfs.datanode.data.dir jedno svojstvo izdvajanja u namenode.

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

U Active namenode promijenite direktorij u koji želite pohraniti konfiguracijsku datoteku zookeeper (staza svojstva dataDir).

Stvorite myid datoteku unutar direktorija i dodajte numerički 1 u datoteku i spremite datoteku.

Naredba : vi myid

Stvori myid datoteku.

U stanju pripravnosti namenode promijenite direktorij u koji želite pohraniti zookeeper konfiguracijsku datoteku (put svojstva dataDir).

Stvorite myid datoteku unutar direktorija i dodajte numerički 2 u datoteku te spremite datoteku.

U podatkovnom čvoru promijenite direktorij u koji želite pohraniti konfiguracijsku datoteku zookeeper (put svojstva dataDir).

Stvorite datoteku myid unutar direktorija i dodajte broj 3 u datoteku i spremite datoteku.

Pokrenite Journalnode u sva tri čvora.

Naredba : hadoop-daemon.sh start journalnode

Pokrenite Journalnode.

Kada unesete jps naredbu, vidjet ćete demon JournalNode u svim čvorovima.

FormatirajteAktivna svrha.

Naredba : HDFS namijenjen -formatu

Active NameNode format.

Pokrenite Namenode demon i Active Namedode.

Naredba : hadoop-daemon.sh početna svrha

Pokrenite Namenode.

Kopirajte meta podatke HDFS iz aktivnog čvora imena u pripravni namenode.

Naredba : HDFS namijenjen -bootstrapStandby

Kopirajte HDFS meta podatke iz čvora Active name u stanje čekanja Namenode.

Jednom kada pokrenete ovu naredbu, dobit ćete informaciju s kojeg čvora i mjesta meta podaci kopiraju te kopiraju li ih uspješno ili ne.

Informacije o detaljima aktivne namjene.

Jednom kada se meta podaci kopiraju iz Active namenode u pripravnu namenode, dobit ćete poruku prikazanu ispod na snimci zaslona.

Informacije o HDFS-u u stanju čekanja Namenode.

Pokrenite namenode daemon u Standby namenode stroju.

Naredba : hadoop-daemon.sh početna svrha

Sada pokrenite uslugu Zookeeper u sva tri čvora.

Naredba : zkServer.sh start (pokrenite ovu naredbu u svim čvorovima)

U aktivnu svrhu:

Pokrenite čuvara zoološkog vrta u Active NameNode.

U stanju čekanja Namenode:

Pokreni čuvara zoološkog vrta u stanju pripravnosti NameNode.

U čvoru podataka:

Pokrenite čuvara zoološkog vrta u DataNodeu.

Nakon pokretanja poslužitelja Zookeeper, unesite JPS naredbu. U svim čvorovima vidjet ćete uslugu QuorumPeerMain.

Pokrenite demon čvora podataka u stroju Čvor podataka.

Naredba : hadoop-daemon.sh start datanode

Pokrenite Zookeeper neuspješno preko kontrolera u aktivnom čvoru imena i čvornom imenu čvora.

Formatirajte neuspjeh zookeeper-a preko kontrolera u Active namenode.

Naredba: HDFS zkfc –formatZK

Formatirajte ZKFC.

Pokrenite ZKFC u Active namenode.

Naredba : hadoop-daemon.sh start zkfc

Unesite jps naredbu za provjeru demona DFSZkFailoverController.

Pokrenite ZKFC.

Formatirajte zookeeper u slučaju prekida preko kontrolera u stanju čekanja.

Naredba : hdfs zkfc –formatZK

Pokrenite ZKFC u stanju pripravnosti za namjenu.

Naredba : hadoop-daemon.sh start zkfc

Unesite jps naredbu za provjeru demona DFSZkFailoverController.

Sada provjerite status svakog Namenode, koji je čvor aktivan ili koji je čvor u stanju čekanja pomoću naredbe u nastavku.

Naredba : hdfs haadmin –getServiceState nn1

Provjerite status svakog NameNode.

Sada provjerite status svake Namenode pomoću web preglednika.

Otvorite web preglednik i unesite URL u nastavku.

: 50070

Pokazat će je li čvor imena aktivan ili u stanju čekanja.

Active NameNode.

Pomoću web preglednika otvorite pojedinosti o čvoru drugog imena.

Ime u stanju čekanja.

U Aktivnoj namenode ubijte demonode namenode da biste promijenili čvor imena u stanju pripravnosti u aktivnu namenode.

Unesite jps u Active namenode i ubijte demon.

Naredba: sudo ubiti -9

ID obrade demona.

ID procesa Namenode je 7606, ubijte namenode.

Naredba : Sudo kill -9 7606

Ubijte postupak čvora imena

Otvorite dva čvora putem web preglednika i provjerite status.

Pojedinosti o namenodama.

Status NameNode.

Čestitamo, uspješno ste postavili HDFS klaster visoke dostupnosti u Hadoopu.

Sad kad ste razumjeli arhitekturu klastera visoke dostupnosti Hadoop, pogledajte Edureka, pouzdane tvrtke za internetsko učenje s mrežom od više od 250 000 zadovoljnih učenika raširenih širom svijeta. Edureka tečaj obuke za certificiranje velikih podataka Hadoop pomaže učenicima da postanu stručnjaci za HDFS, pređu, MapReduce, svinju, košnicu, HBase, Oozie, Flume i Sqoop koristeći slučajeve upotrebe u stvarnom vremenu na maloprodaji, društvenim mrežama, zrakoplovstvu, turizmu i financijama.

Imate pitanje za nas? Molimo spomenite to u odjeljku za komentare i javit ćemo vam se.

prozor._LQ_ = prozor._LQ_ || {}

lqQuizModal (prozor, dokument, {quizId: ’XAIVp8 ′, baseUrl:’ https: //quiz.leadquizzes.com/’,trigger: ’exit’}, _LQ_)