Kako nastaviti Hadoop Cluster z HDFS High Availability



Ta spletni dnevnik ponuja pregled arhitekture HDFS High Availability in kako v preprostih korakih nastaviti in konfigurirati gručo HDFS High Availability.

HDFS 2.x Arhitektura grozdov visoke razpoložljivosti

V tem blogu bom govoril o arhitekturi grozda HDFS 2.x High Availability Cluster in postopku za nastavitev grozda HDFS High Availability.To je pomemben del . Vrstni red, v katerem so bile teme obravnavane v tem blogu, je naslednji:

  • Arhitektura HDFS HA
    • Uvod
    • NameNode Availability
    • Arhitektura HA
    • Implementacija HA (JournalNode in Shared storage)
  • Kako nastaviti HA (Quorum Journal Nodes) v gruči Hadoop?

Uvod:

Koncept grozda visoke razpoložljivosti je bil predstavljen v Hadoop 2.x za reševanje težave z eno samo točko okvare v Hadoop 1.x. Kot veste iz mojega prejšnjega spletnega dnevnika, da sledi glavna / podrejena topologija, kjer NameNode deluje kot glavni demon in je odgovoren za upravljanje drugih podrejenih vozlišč, imenovanih DataNodes. Ta sam Master Daemon ali NameNode postane ozko grlo. Uvedba Secondary NameNode nam sicer ni preprečila izgube podatkov in razbremenitve dela bremena NameNode, vendar ni rešila težave z razpoložljivostjo NameNode.





NameNode Availability:

Če upoštevate standardno konfiguracijo gruče HDFS, NameNode postane ena točka okvare . To se zgodi, ker v trenutku, ko NameNode postane nedostopno, celotna grozd postane nedostopna, dokler nekdo znova ne zažene NameNode ali pripelje novega.

Razlogi za nedostopnost NameNode so lahko:



  • Načrtovani dogodek, kot so vzdrževalna dela, vključuje nadgradnjo programske ali strojne opreme.
  • To je lahko tudi posledica nenačrtovanega dogodka, ko se NameNode iz nekaterih razlogov zruši.

V obeh zgoraj navedenih primerih imamo izpad, ko ne moremo uporabiti grozda HDFS, kar postane izziv.

Arhitektura HDFS HA:

Dovolite nam, da razumemo, kako je HDFS HA ​​Architecture rešil ta kritični problem razpoložljivosti NameNode:

Arhitektura HA je rešila ta problem razpoložljivosti NameNode, tako da nam je omogočila dve NameNode v aktivni / pasivni konfiguraciji. Torej imamo v grozdu visoke razpoložljivosti hkrati dva nameščena vozlišča NameNodes:



  • Active NameNode
  • Standby/Passive NameNode.

Arhitektura HDFS HA ​​- Grozd visoke razpoložljivosti - Edureka

Če eno NameNode pade, lahko drugo NameNode prevzame odgovornost in s tem skrajša čas izpada grozda. NameNode v stanju pripravljenosti služi namenu varnostne kopije NameNode (za razliko od Secondary NameNode), ki v gručo Hadoop vključuje zmožnosti preusmeritve. Zato lahko z StandbyNode omogočimo samodejno preusmeritev, kadar se NameNode zruši (nenačrtovani dogodek), ali pa imamo v času vzdrževanja elegantno (ročno sproženo) odpoved.

Pri ohranjanju doslednosti v gruči HDFS High Availability obstajata dve težavi:

  • Aktivno in pripravljeno imensko vozlišče bi moralo biti vedno medsebojno sinhronizirano, tj. Imeti bi moralo enake metapodatke. To nam bo omogočilo, da obnovimo gručo Hadoop v isto stanje imenskega prostora, v katerem se je zrušila, in nam bo zato omogočilo hitro preusmeritev.
  • Hkrati mora biti samo eno aktivno NameNode, ker bosta dve aktivni NameNode povzročili poškodbe podatkov. Tovrstni scenarij se imenuje scenarij z razdeljenimi možgani, kjer se grozd razdeli na manjši grozd, pri čemer vsak verjame, da je edini aktivni grozd. Da bi se izognili takim scenarijem, se izvaja ograja. Ograjevanje je postopek, ki zagotavlja, da v določenem času ostane aktivno samo eno NameNode.

Izvajanje arhitekture HA:

Zdaj veste, da imamo v HDFS HA ​​Architecture hkrati dve nameNode, ki se izvajata. Konfiguracijo Active in Standby NameNode lahko izvedemo na dva načina:

  1. Uporaba vozlišč Quorum Journal
  2. Shranjevanje v skupni rabi z uporabo NFS

Dovolite nam, da razumemo ta dva načina izvedbe, ki se ločujemo enega po enega:

1. Uporaba vozlišč Quorum Journal:

  • NameNode v stanju pripravljenosti in aktivno NameNode se sinhronizirata med seboj prek ločene skupine vozlišč ali demonov, ki se imenujejo JournalNodes .JournalNodes sledi topologiji obroča, kjer so vozlišča med seboj povezana, da tvorijo obroč.JournalNode vloži zahtevo, ki ji prispe, in podatke kopira v druga vozlišča v obroču.To zagotavlja toleranco napak v primeru okvare JournalNode.
  • Aktivno NameNode je odgovorno za posodabljanje dnevnikov Edit (Dnevniki), ki so prisotni v JournalNodes.
  • StandbyNode prebere spremembe v dnevnikih EditLogs v JournalNode in jih stalno uporablja v svojem imenskem prostoru.
  • Med preklopom prek sistema StandbyNode poskrbi, da je posodobil podatke o metapodatkih iz JournalNodes, preden postane novo Active NameNode. Tako je trenutno stanje imenskega prostora sinhronizirano s stanjem pred preklopom.
  • Naslovi IP obeh vozlišč imen so na voljo vsem podatkovnim vozliščem in jim pošljejo srčni utrip ter blokirajo informacije o lokaciji. To omogoča hiter odziv (manj časa nedelovanja), saj ima StandbyNode posodobljene informacije o lokaciji bloka v gruči.

Ograje NameNode:

Kot smo že omenili, je zelo pomembno zagotoviti, da je naenkrat samo eno aktivno imensko vozlišče. Torej je ograja postopek, ki zagotavlja prav to lastnost v grozdu.

  • JournalNodes izvede to ograjo tako, da dovoli, da je zapisovalnik hkrati samo en NameNode.
  • V pripravljenosti NameNode prevzame odgovornost za pisanje v JournalNodes in prepove, da katero koli drugo NameNode ostane aktivno.
  • Končno lahko novo ime ActiveNode varno izvaja svoje dejavnosti.

2. Uporaba skupne shrambe:

  • V pripravljenosti in aktivnem NameNode se sinhronizirata z uporabo skupna naprava za shranjevanje .Aktivno NameNode zabeleži zapis vseh sprememb, izvedenih v njegovem imenskem prostoru, v EditLog, ki je prisoten v tem skupnem pomnilniku.StandbyNode prebere spremembe v dnevnikih EditLogs v tem skupnem pomnilniku in jih uporabi v svojem imenskem prostoru.
  • Zdaj, v primeru odpovedi, StandbyNode najprej posodobi svoje podatke o metapodatkih z uporabo dnevnikov EditLogs v skupni shrambi. Nato prevzame odgovornost Active NameNode. Tako je trenutno stanje imenskega prostora sinhronizirano s stanjem pred preklopom.
  • Skrbnik mora konfigurirati vsaj en način ograjevanja, da se izogne ​​scenariju z ločenimi možgani.
  • Sistem lahko uporablja vrsto ograjnih mehanizmov. Vključuje lahko ubijanje procesa NameNode in preklic njegovega dostopa do imenika za shranjevanje v skupni rabi.
  • V skrajnem primeru lahko predhodno aktivno NameNode ograjimo s tehniko, znano kot STONITH, ali 'ustrelimo drugo vozlišče v glavo'. STONITH uporablja specializirano razdelilno enoto za prisilno izklop naprave NameNode.

Samodejni preklop:

Failover je postopek, s katerim sistem samodejno prenese nadzor na sekundarni sistem, ko zazna napako ali okvaro. Obstajata dve vrsti odpovedi:

Graceful Failover: V tem primeru ročno sprožimo odpoved za redno vzdrževanje.

Samodejni preklop: V tem primeru se failover samodejno zažene v primeru okvare NameNode (nenačrtovani dogodek).

Apache Zookeeper je storitev, ki omogoča samodejno preusmeritev v gruči HDFS High Availabilty. Vzdržuje majhne količine koordinacijskih podatkov, stranke obvešča o spremembah teh podatkov in spremlja stranke zaradi napak. Zookeeper vzdržuje sejo z NameNodes. V primeru okvare seja poteče in skrbnik živalskega vrta obvesti druge NameNodes, da sproži postopek preusmeritve. V primeru okvare NameNode lahko drugo pasivno NameNode zaklene Zookeeper in izjavi, da želi postati naslednje aktivno NameNode.

ZookeerFailoverController (ZKFC) je odjemalec Zookeeper, ki prav tako spremlja in upravlja stanje NameNode. Vsako od NameNode poganja tudi ZKFC. ZKFC je odgovoren za redno spremljanje zdravja NameNodes.

Zdaj, ko ste razumeli, kaj je visoka razpoložljivost v gruči Hadoop, je čas, da jo nastavite. Če želite nastaviti visoko razpoložljivost v gruči Hadoop, morate v vseh vozliščih uporabiti Zookeeper.

Demoni v Active NameNode so:

  • Oskrbnik živalskega vrta
  • Krmilnik odpovedi zookeeperja
  • JournalNode
  • NameNode

Demoni v stanju pripravljenosti NameNode so:

  • Oskrbnik živalskega vrta
  • Krmilnik odpovedi zookeeperja
  • JournalNode
  • NameNode

Demoni v DataNode so:

  • Oskrbnik živalskega vrta
  • JournalNode
  • DataNode

Če želite obvladati HDFS in Hadoop, si oglejte posebej urejen tečaj Big Data in Hadoop Edureka. Za začetek kliknite spodnji gumb.

Nastavitev in konfiguracija grozda visoke razpoložljivosti v Hadoopu:

Najprej morate nastaviti imena Java in gostitelja vsakega vozlišča.

android studio vaje za začetnike
Navidezni stroj IP naslov Ime gostitelja
Active NameNode192.168.1.81nn1.cluster.com ali nn1
Standby NameNode192.168.1.58nn2.cluster.com ali nn2
DataNode192.168.1.82dn1.cluster.com ali dn1

Prenesite binarno datoteko tar Hadoop in Zookeeper, izvlecite datoteke za urejanje konfiguracijskih datotek.

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

Spread the zookeeper-3.4.6.tar.gz

Ukaz : tar –xvf skrbnik živalskega vrta-3.4.6.tar.gz

Prenesite stabilni binarni katran Hadoop s spletnega mesta Apache Hadoop.

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

Izvlecite katrano Hadoop.

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

Širite hadoop binarno.

V datoteko .bashrc dodajte Hadoop, Zookeeper in poti.

Odprite datoteko .bashrc.

Ukaz : sudo gedit ~ / .bashrc

Dodajte spodnje poti:

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 = export PATH = $ PATH: $ JAVA_HOME / bin: $ HADOOP_HOME / bin: $ HADOOP_HOME / sbin: $ ZOOKEEPER_HOME / bin

Uredi datoteko .bashrc.

Omogoči SSH v vsem vozlišču.

Ustvari ključ SSH v vseh vozliščih.

Ukaz : ssh-keygen –t rsa (ta korak v vseh vozliščih)

Nastavite ključ SSH v vseh vozliščih.

Ne shranjujte ključa do datoteke Enter, da shranite ključ, in ne dajte nobenega gesla. Pritisnite gumb za vnos.

Ustvari postopek ključa ssh v vseh vozliščih.

Ko je ssh ključ ustvarjen, boste dobili javni in zasebni ključ.

Imenik ključev .ssh mora vsebovati dovoljenje 700, vsi ključi v imeniku .ssh pa dovoljenja 600.

Spremenite dovoljenje za imenik SSH.

Spremenite imenik v .ssh in spremenite dovoljenje datotek na 600

Spremenite dovoljenje za javni in zasebni ključ.

Kopirati morate javni ključ ssh vozlišča ssh na vsa vozlišča.

V Active Namenode preko ukaza mačka kopirajte id_rsa.pub.

Ukaz : mačka ~ / .ssh / id_rsa.pub >> ~ / .ssh / pooblaščene_ključke

Kopirajte ključ Namenode ssh v pooblaščene ključe.

Kopirajte javni ključ NameNode v vsa vozlišča, ki uporabljajo ssh-copy-id ukaz.

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

Copy namenode key to Standby NameNode.

Copy NameNode public key to data node.

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

Copy Namenode public key to data node.

Znova zaženite storitev sshd v vseh vozliščih.

Ukaz : sudo service sshd restart (Ali v vseh vozliščih)

Znova zaženite storitev SSH.

Zdaj se lahko prijavite v katero koli vozlišče iz Namenode brez kakršne koli overitve.

Odprite datoteko core-site.xml iz vozlišča Active Name in dodajte spodnje lastnosti.

Uredite core-site.xml iz Active namenode

Odprite datoteko hdfs-site.xml v Active Namenode. Dodajte spodnje lastnosti.

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-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

Spremenite imenik v imenik conf zookeeperja.

Ukaz : cd čuvar zoo-3.4.6 / conf

Imenik Zookeeper Conf.

V imeniku conf imate datoteko zoo_sample.cfg, z datoteko zoo_sample.cfg ustvarite zoo.cfg.

Ukaz : cp zoo_sample.cfg zoo.cfg

Ustvari datoteko zoo.cfg.

Ustvarite imenik na katerem koli mestu in uporabite ta imenik za shranjevanje podatkov o hranitelju zoo.

Ukaz : mkdir

Ustvarite imenik za shranjevanje podatkov o hrambe živalskih vrtov.

Odprite datoteko zoo.cfg.

Ukaz : gedit zoo.cfg

V imenik dataDir dodajte pot do imenika, ki je bila ustvarjena v zgornjem koraku, in v datoteko zoo.cfg dodajte spodnje podrobnosti o preostalem vozlišču.

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

Strežnik.2 = nn2.cluster.com: 2888: 3888

Strežnik.3 = dn1.cluster.com: 2888: 3888

Uredi datoteko zoo.cfg.

Zdaj kopirajte imenika Java in Hadoop-2.6.0, zookeeper-3.4.6 in datoteko .bashrc na vsa vozlišča (vozlišče imena v stanju pripravljenosti, vozlišče Data) z ukazom scp.

Ukaz : scp –r edureka @:

Kopirajte datoteke Hadoop, Zookeeper in .bashrc na vsa vozlišča.

Podobno kopirajte datoteko .bashrc in imenik zookeeper v vsa vozlišča in spremenite spremenljivke okolja v vsakem od njih v skladu z ustreznim vozliščem.

V podatkovnem vozlišču ustvarite kateri koli imenik, kamor morate shraniti bloke HDFS.

V podatkovno vozlišče morate dodati lastnosti dfs.datanode.data.dir.

V mojem primeru sem ustvaril podatkovno vozlišče imenik za shranjevanje blokov.

Ustvari imenik Datanode.

Spremenite dovoljenje v imenik podatkovnih vozlišč.

Spremenite dovoljenje za imenik Datanode.

Odprite datoteko HDFS-site.xml, dodajte to pot do imenika Datanode v lastnosti dfs.datanode.data.dir.

Opomba: Vse lastnosti, ki so kopirane iz aktivne namenode, dodajte dfs.datanode.data.dir eno lastnost izvlečka v namenode.

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

V Active namenode spremenite imenik, kamor želite shraniti konfiguracijsko datoteko zookeeper (pot lastnosti dataDir).

Ustvarite datoteko myid znotraj imenika in ji dodajte številko 1 in datoteko shranite.

Ukaz : vi myid

Ustvari datoteko myid.

V pripravljenosti namenode spremenite imenik, kamor želite shraniti konfiguracijsko datoteko zookeeper (pot lastnosti dataDir).

Ustvarite datoteko myid v imeniku, dodajte ji številko 2 in datoteko shranite.

V podatkovnem vozlišču spremenite imenik, kamor želite shraniti konfiguracijsko datoteko zookeeper (pot lastnosti dataDir).

Ustvarite datoteko myid v imeniku in ji dodajte številko 3 in shranite datoteko.

Zaženite Journalnode v vseh treh vozliščih.

Ukaz : hadoop-daemon.sh začetek dnevnika

Zaženite Journalnode.

Ko vnesete ukaz jps, boste v vseh vozliščih videli demon JournalNode.

OblikujteActive namenode.

Ukaz : HDFS namenode -format

Format Active NameNode.

Start the Namenode daemon in Active namenode.

Ukaz : hadoop-daemon.sh start namenode

Start Namenode.

Kopirajte podatke HDFS Meta iz aktivnega vozlišča imena v pripravljeno namenode.

Ukaz : HDFS namenode -bootstrapStandby

Kopirajte metapodatke HDFS iz vozlišča Active name v stanje pripravljenosti Namenode.

Ko zaženete ta ukaz, boste dobili informacije, iz katerega vozlišča in lokacije metapodatki kopirajo ter ali se kopira uspešno ali ne.

Information of Active namenode details.

Ko se metapodatki kopirajo iz Active namenode v stanje pripravljenosti namenode, se prikaže sporočilo, prikazano spodaj na posnetku zaslona.

Informacije o HDFS v stanju pripravljenosti Namenode.

Zaženite demon namenode v stanju pripravljenosti namenode machine.

Ukaz : hadoop-daemon.sh start namenode

Zdaj zaženite storitev Zookeeper v vseh treh vozliščih.

Ukaz : zkServer.sh start (zaženite ta ukaz v vseh vozliščih)

In Active Namenode:

Zaženite skrbnika živalskega vrta v Active NameNode.

In Standby Namenode:

Zaženite skrbnika živalskega vrta v pripravljenosti NameNode.

V podatkovnem vozlišču:

Zaženite skrbnika živalskega vrta v DataNode.

Po zagonu strežnika Zookeeper vnesite ukaz JPS. V vseh vozliščih boste videli storitev QuorumPeerMain.

Zaženite demon podatkovnega vozlišča v napravi Data vozlišče.

Ukaz : hadoop-daemon.sh start datanode

V vozlišču Active name in v stanju pripravljenosti ime vozlišče zaženite napako Zookeeperja.

Formatirajte okvaro nadzornika zoo nad krmilnikom v Active namenode.

Ukaz: HDFS zkfc –formatZK

Oblikujte ZKFC.

Zaženite ZKFC v Active namenode.

Ukaz : hadoop-daemon.sh start zkfc

Vnesite ukaz jps, da preverite demone DFSZkFailoverController.

Zaženite ZKFC.

Formatirajte napako nadzornika živalskega vrta v pripravljenosti namenode.

Ukaz : hdfs zkfc –formatZK

Zaženite ZKFC v stanju pripravljenosti namenode.

Ukaz : hadoop-daemon.sh start zkfc

Vnesite ukaz jps, da preverite demone DFSZkFailoverController.

Zdaj s pomočjo spodnjega ukaza preverite stanje vsakega Namenode, katero vozlišče je aktivno ali katero vozlišče je v stanju pripravljenosti.

Ukaz : hdfs haadmin –getServiceState nn1

kako pretvoriti dvojno v int

Preverite stanje vsakega NameNode.

Zdaj s pomočjo spletnega brskalnika preverite stanje vsake Namenode.

Odprite spletni brskalnik in vnesite spodnji URL.

: 50070

Prikazal bo, ali je vozlišče imena aktivno ali v stanju pripravljenosti.

Active NameNode.

S spletnim brskalnikom odprite podrobnosti o vozlišču drugega imena.

Standby NameNode.

V aktivni namenode ubijete demon namenode, da spremenite vozlišče imena v stanju pripravljenosti v aktivno namenode.

V Active namenode vnesite jps in ubijte demon.

Ukaz: sudo kill -9

ID procesa demona.

ID procesa Namenode je 7606, ubijte namenode.

Ukaz : Sudo kill -9 7606

Ubijte postopek Name Node

V spletnem brskalniku odprite dve vozlišči in preverite stanje.

Namenode details.

NameNode status.

Čestitamo, v Hadoopu ste uspešno nastavili grozd visoke razpoložljivosti HDFS.

Zdaj, ko ste razumeli arhitekturo grozdov Hadoop High Availability, si oglejte Edureka, zaupanja vredno podjetje za spletno učenje z mrežo več kot 250.000 zadovoljnih učencev, ki se širijo po vsem svetu. Tečaj Edureka Big Data Hadoop Certification Training pomaga učencem, da postanejo strokovnjaki za HDFS, prejo, MapReduce, Pig, Hive, HBase, Oozie, Flume in Sqoop z uporabo primerov uporabe v realnem času na področju maloprodaje, družbenih medijev, letalstva, turizma in financ.

Imate vprašanje za nas? Prosimo, omenite to v oddelku za komentarje in se vam bomo javili.

window._LQ_ = window._LQ_ || {}

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