Kuidas seadistada Hadoopi klastrit HDFS-i kõrge kättesaadavusega



Selles ajaveebis antakse ülevaade HDFS-i kõrge kättesaadavusega arhitektuurist ning HDFS-i kõrge kättesaadavusega klastri lihtsate sammudega seadistamisest ja konfigureerimisest.

HDFS 2.x kõrge kättesaadavusega klastri arhitektuur

Selles blogis räägin HDFS 2.x kõrge kättesaadavusega klastri arhitektuurist ja HDFS kõrge kättesaadavusega klastri seadistamise protseduurist.See on programmi oluline osa . Selles blogis on teemade käsitlemise järjekord järgmine:

  • HDFS HA ​​arhitektuur
    • Sissejuhatus
    • NameNode Kättesaadavus
    • HA arhitektuur
    • HA (JournalNode ja jagatud salvestusruum) juurutamine
  • Kuidas seadistada HA (Quorum Journal Nodes) Hadoopi klastrisse?

Sissejuhatus:

Kõrge kättesaadavusega klastri mõiste võeti kasutusele Hadoop 2-s.x Hadoop 1.x ühe tõrke probleemi lahendamiseks. Nagu teate minu eelmisest ajaveebist, et järgib ülema / alama topoloogiat, kus NameNode toimib põhidemonina ja vastutab teiste orjasõlmede, nimega DataNodes, haldamise eest. Sellest ühest Master Daemonist või NameNode'ist saab kitsaskoht. Kuigi sekundaarse NameNode'i kasutuselevõtt takistas meil andmete kaotamist ja osa NameNode'i koormuse mahalaadimist, kuid see ei lahendanud NameNode'i kättesaadavuse probleemi.





NameNode Saadavus:

Kui kaaluda HDFS-klastri standardset konfiguratsiooni, saab NameNode'ist a üks ebaõnnestumispunkt . See juhtub seetõttu, et hetkel, kui NameNode muutub kättesaamatuks, muutub kogu klaster kättesaamatuks seni, kuni keegi NameNode taaskäivitab või uue toob.

NameNode'i puudumise põhjused võivad olla järgmised:



  • Kavandatud üritusel nagu hooldustööd on tarkvara või riistvara uuendamine.
  • See võib olla tingitud ka planeerimata sündmusest, kus NameNode jookseb mõnel põhjusel kokku.

Mõlemal ülaltoodud juhul on meil seisak, kus me ei saa HDFS-klastrit kasutada, mis muutub väljakutseks.

HDFS HA ​​arhitektuur:

Mõistkem, kuidas HDFS HA ​​arhitektuur lahendas selle NameNode'i kättesaadavuse kriitilise probleemi:

java keeles viitega edasi

HA arhitektuur lahendas selle NameNode'i kättesaadavuse probleemi, võimaldades meil aktiivses / passiivses konfiguratsioonis olla kaks NameNode'i. Niisiis, meil on kõrge kättesaadavusega klastris korraga kaks töötavat NameNode'i:



  • Aktiivne nimiNode
  • Ooterežiimis / passiivne nimiNode.

HDFS HA ​​arhitektuur - kõrge kättesaadavusega klaster - Edureka

Kui üks NameNode väheneb, võib teine ​​NameNode vastutuse üle võtta ja seetõttu lühendada klastri seiskamisaega. Ooterežiimil olev NameNode täidab varundatava NameNode'i eesmärki (erinevalt sekundaarsest NameNode'ist), mis sisaldab Hadoopi klastri tõrkeotsingu võimalusi. Seetõttu on meil StandbyNode'i korral automaatne tõrkeotsing alati, kui NameNode kokku kukub (planeerimata sündmus), või hooldusperioodil võib olla graatsiline (käsitsi algatatud) tõrkeotsing.

HDFS-i kõrge kättesaadavusega klastris on järjepidevuse säilitamisel kaks probleemi:

  • Aktiivne ja ooterežiimi nimiNode peaksid olema alati üksteisega sünkroonis, st neil peaksid olema samad metaandmed. See võimaldab meil taastada Hadoopi klastri samasse nimeruumi olekusse, kus see kokku kukkus, ja tagab seetõttu kiire tõrkeotsingu.
  • Korraga peaks olema ainult üks aktiivne NameNode, kuna kaks aktiivset NameNode põhjustavad andmete rikutust. Sellist stsenaariumi nimetatakse jagatud aju stsenaariumiks, kus klaster jaguneb väiksemateks klastriteks, kusjuures igaüks usub, et see on ainus aktiivne klaster. Selliste stsenaariumide vältimiseks tehakse piirded. Vehklemine on protsess, millega tagatakse, et ainult üks NameNode jääb konkreetsel ajal aktiivseks.

HA arhitektuuri rakendamine:

Nüüd teate, et HDFS HA ​​arhitektuuris töötab meil kaks NameNode'i korraga. Niisiis, saame Active ja Standby NameNode konfiguratsiooni rakendada kahel viisil:

  1. Kvoorumi ajakirja sõlmede kasutamine
  2. Jagatud salvestusruum NFS-i abil

Mõistame neid kahte rakendamise viisi ükshaaval:

1. Kvoorumipäeviku sõlmede kasutamine:

  • Ooterežiimis olev NameNode ja aktiivne NameNode hoiavad üksteisega sünkroonis eraldi sõlmede või deemonite rühma kaudu JournalNodes .JournalNodes järgib rõnga topoloogiat, kus sõlmed on rõnga moodustamiseks üksteisega ühendatud.JournalNode teenindab talle saabuvat päringut ja kopeerib teabe rõnga teistesse sõlmedesse.See tagab tõrketaluvuse JournalNode'i rikke korral.
  • Aktiivne NameNode vastutab JournalNodes olevate EditLogs (metaandmete teave) värskendamise eest.
  • StandbyNode loeb JournalNode'is EditLogsis tehtud muudatusi ja rakendab seda pidevalt oma nimeruumi.
  • Tõrkesiirde ajal veendub StandbyNode, et see oleks uueks JournalNodes metaandmete teavet enne uueks Active NameNode'iks saamist. See muudab praeguse nimeruumi oleku sünkroonitud olekuga enne tõrkeotsingut.
  • Mõlema nimesõlme IP-aadressid on kättesaadavad kõigile andmesõlmedele ning nad saadavad oma südamelöögid ja blokeerivad asukohateavet mõlemale nimesõlmele. See tagab kiire tõrkeotsingu (vähem seiskamisaega), kuna StandbyNode'il on värskendatud teave klastri ploki asukoha kohta.

NameNode'i tara:

Nagu varem arutletud, on nüüd väga oluline tagada, et korraga oleks ainult üks Active NameNode. Nii on piirded protsess, mis tagab klastris just selle omaduse.

  • JournalNodes teostab selle piirdeaia, lubades kirjutajaks korraga olla ainult üks NameNode.
  • Ooteseisunimi võtab üle vastutuse JournalNodes'ile kirjutamise eest ja keelab muudel NameNode'itel aktiivsena püsimise.
  • Lõpuks saab uus Active NameNode oma tegevusi ohutult teha.

2. Jagatud salvestusruumi kasutamine:

  • StandbyNode ja aktiivne NameNode on üksteisega sünkroonis, kasutades a jagatud salvestusseade .Aktiivne NameNode logib kõigi oma nimeruumis tehtud muudatuste kirje selles jagatud salvestusruumis olevasse EditLogi.StandbyNode loeb selles jagatud salvestusruumis EditLogsi tehtud muudatused ja rakendab selle oma nimeruumi.
  • Nüüd värskendab tõrkeotsingu korral StandbyNode oma metaandmete teavet, kasutades algul jagatud salvestusruumi EditLogs. Seejärel võtab see vastutuse Active NameNode'ilt. See muudab praeguse nimeruumi oleku sünkroonitud olekuga enne tõrkeotsingut.
  • Aju jagamise stsenaariumi vältimiseks peab administraator konfigureerima vähemalt ühe piirdemeetodi.
  • Süsteem võib kasutada mitmesuguseid piirdemehhanisme. See võib hõlmata NameNode'i protsessi tapmist ja juurdepääsu tühistamist jagatud salvestuskataloogile.
  • Viimase abinõuna võime varem aktiivse NameNode'i aiaga piirata STONITH-nimelise tehnikaga või „tulistada teine ​​sõlm pähe“. STONITH kasutab NameNode'i masina sunniviisiliseks välja lülitamiseks spetsiaalset toitejaotusseadet.

Automaatne tõrkeotsing:

Failover on protseduur, mille käigus süsteem annab rikke või rikke tuvastamisel automaatselt juhtimise üle sekundaarsüsteemile. Tõrkesiirdeid on kahte tüüpi:

Graatsiline tõrkeotsing: Sel juhul algatame rutiinse hoolduse tõrkeotsingu käsitsi.

Automaatne tõrkeotsing: Sellisel juhul käivitatakse tõrkesiire NameNode'i tõrke korral (planeerimata sündmus).

Apache Zookeeper on teenus, mis pakub HDFS-i kõrge kättesaadavuse klastris automaatset tõrkeotsingu võimalust. See hoiab vähe koordineerimisandmeid, teavitab kliente nende andmete muutustest ja jälgib klientide tõrkeid. Zookeeper peab seanssi NameNodes'iga. Ebaõnnestumise korral aegub seanss ja zookeeper teavitab teisi NameNode'e tõrkeotsingu algatamiseks. NameNode'i rikke korral võib mõni muu passiivne NameNode Zookeeperis lukustada, märkides, et soovib saada järgmiseks aktiivseks NameNode'iks.

ZookeerFailoverController (ZKFC) on Zookeeperi klient, mis jälgib ja haldab ka NameNode'i olekut. Iga NameNode töötab ka ZKFC-ga. ZKFC vastutab NameNode'i seisundi perioodilise jälgimise eest.

Nüüd, kui olete aru saanud, mis on Hadoopi klastri kõrge kättesaadavus, on aeg see seadistada. Hadoopi klastris kõrge kättesaadavuse seadistamiseks peate kõigis sõlmedes kasutama Zookeeperit.

Teenuse Active NameNode deemonid on järgmised:

  • Loomaaiatalitaja
  • Zookeeper Fail Over kontroller
  • JournalNode
  • NameNode

Deemonid ooterežiimis NameNode on:

  • Loomaaiatalitaja
  • Zookeeper Fail Over kontroller
  • JournalNode
  • NameNode

DataNode'i deemonid on järgmised:

  • Loomaaiatalitaja
  • JournalNode
  • DataNode

Kui soovite omandada HDFS-i ja Hadoopi, vaadake spetsiaalselt kureeritud Edureka Big Data ja Hadoopi kursust. Alustamiseks klõpsake allolevat nuppu.

Kõrge kättesaadavusega klastri seadistamine ja konfigureerimine Hadoopis:

Kõigepealt peate seadistama iga sõlme Java ja hostinimed.

Virtuaalne masin IP-aadress Host nimi
Aktiivne nimiNode192.168.1.81nn1.cluster.com või nn1
Ooterežiimi nimiNode192.168.1.58nn2.klaster.com või nn2
DataNode192.168.1.82dn1.cluster.com või dn1

Laadige alla kahendtõrva fail Hadoop ja Zookeeper, ekstraktige failid konfiguratsioonifailide muutmiseks.

Käsk: wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

Levitage zookeeper-3.4.6.tar.gz

Käsk : tar –xvf loomaaednik-3.4.6.tar.gz

Laadige Apache Hadoopi saidilt alla stabiilne Hadoopi kahendtõrv.

Käsk : wget https://archive.apache.org/dist/hadoop/core/hadoop-2.6.0/hadoop-2.6.0.tar.gz

Eemaldage Hadoopi tõrvapall.

Käsk : tar –xvf hadoop-2.6.0.tar.gz

Spread hadoop binaarne.

Lisage .bashrc-faili Hadoop, Zookeeper ja teed.

Avage .bashrc-fail.

Käsk : sudo gedit ~ / .bashrc

Lisage järgmised teed:

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

Redigeerige .bashrc-faili.

Luba SSH kogu sõlmes.

Looge SSH-võti kõigis sõlmedes.

Käsk : ssh-keygen –t rsa (see samm kõigis sõlmedes)

Seadistage SSH-võti kõigis sõlmedes.

Ärge andke võtme salvestamiseks failile Enter ühtegi rada ja ärge sisestage parooli. Vajutage sisestusnuppu.

Looge ssh-võtmeprotsess kõigis sõlmedes.

Kui ssh-võti on loodud, saate avaliku võtme ja privaatvõtme.

.Ssh-võtmete kataloog peaks sisaldama luba 700 ja kõik võtmed .ssh-kataloogis peaksid sisaldama õigusi 600.

Muutke SSH kataloogi luba.

Muutke kataloogiks .ssh ja muutke failide loaks 600

Muutke avaliku ja privaatse võtme luba.

Kõigile sõlmedele peate kopeerima avaliku sõlme nimesõlmed ssh.

Kopeerige jaotises Active Namenode id_rsa.pub kassi käsu abil.

Käsk : kass ~ / .ssh / id_rsa.pub >> ~ / .ssh / volitatud_klahvid

Kopeerige Namenode ssh-võti selle volitatud võtmetesse.

Kopeerige NameNode'i avalik võti kõigi sõlmede abil ssh-copy-id käsk.

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

Kopeerige eesmärgi võti ooterežiimi nimiNode.

Kopeeri NameNode avalik võti andmesõlmesse.

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

Kopeerige Namenode'i avalik võti andmesõlmesse.

Taaskäivitage sshd-teenus kõigis sõlmedes.

Käsk : sudo service sshd taaskäivitage (tehke kõigis sõlmedes)

Taaskäivitage SSH-teenus.

Nüüd saate Namenode'i mis tahes sõlme sisse logida ilma autentimiseta.

Avage sõlme Aktiivne nimi fail core-site.xml ja lisage järgmised omadused.

Redigeerige aktiivsest nimenoodist core-site.xml

Avage Active Namenode'is fail hdfs-site.xml. Lisage allpool olevad atribuudid.

dfs.namenode.name.dir / home / edureka / HA / data / namenode dfs.replication 1 dfs.permissions false dfs.nimeservices ha-klaster 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 .kvoor 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

Muutke kataloog zookeeperi conf kataloogiks.

Käsk : cd loomaaednik-3.4.6 / konf

Zookeeper Conf kataloog.

Conf-kataloogis, kus teil on fail zoo_sample.cfg, looge zoo.cfg faili zoo_sample.cfg abil.

Käsk : cp zoo_sample.cfg zoo.cfg

Looge zoo.cfg-fail.

Looge kataloog suvalisse kohta ja kasutage seda kataloogi loomaaedniku andmete salvestamiseks.

Käsk : mkdir

Zookeeperi andmete salvestamiseks looge kataloog.

Avage fail zoo.cfg.

Käsk : gediti loomaaed.cfg

Lisage atribuudile dataDir ülalolevas etapis loodud kataloogitee ja lisage failis zoo.cfg alltoodud üksikasjad ülejäänud sõlme kohta.

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

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

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

Redigeeri faili zoo.cfg.

Nüüd kopeerige Java ja Hadoop-2.6.0, zookeeper-3.4.6 ja .bashrc-fail kõikidesse sõlmedesse (ooterežiimi sõlmpunkt, andmesõlm) scp-käsu abil.

Käsk : scp –r edureka @:

Kopeerige Hadoopi, Zookeeperi ja .bashrc-fail kõikidesse sõlmedesse.

Samamoodi kopeerige .bashrc-fail ja zookeeperi kataloog kõikidesse sõlmedesse ja muutke keskkonnamuutujaid mõlemas vastavalt vastavale sõlmele.

Andmesõlmes looge ükskõik milline kataloog, kuhu peate HDFS-i plokid salvestama.

Andmesõlmes peate lisama atribuudid dfs.datanode.data.dir.

Minu puhul ma lõin datanode kataloog plokkide salvestamiseks.

Looge kataloog Datanode.

Andmesõlmede kataloogi loa muutmine.

Muutke Datanode'i kataloogi luba.

Avage fail HDFS-site.xml, lisage see Datanode'i kataloogitee atribuudis dfs.datanode.data.dir.

Märkus. Hoidke kõik atribuudid, mis on kopeeritud aktiivsest nimenoodist, lisage nimenoodis üks atribuut dfs.datanode.data.dir.

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

Muutke jaotises Active namenode kataloogi, kuhu soovite salvestada zookeeperi konfiguratsioonifaili (atribuudi dataDir).

Looge kataloogi sees myid-fail, lisage faili number 1 ja salvestage fail.

Käsk : vi myid

Looge myid-fail.

Ooterežiimis muutke nimenood kataloogi, kuhu soovite salvestada zookeeperi konfiguratsioonifaili (atribuudi dataDir).

Looge kataloogi sees myid-fail, lisage faili number 2 ja salvestage fail.

Andmesõlmes muutke kataloogi, kuhu soovite salvestada zookeeperi konfiguratsioonifaili (atribuudi dataDir).

Looge kataloogi sees myid-fail, lisage faili number 3 ja salvestage fail.

Käivitage Journalnode kõigis kolmes sõlmes.

Käsk : hadoop-daemon.sh start journalnode

Käivitage Journalnode.

Kui sisestate käsu jps, näete kõigis sõlmpunktides deemonit JournalNode.

VormindageAktiivne eesmärk.

Käsk : HDFS mõeldud -vorming

Aktiivne NameNode-vorming.

Käivitage Namenode'i deemon ja Active Namedode.

Käsk : hadoop-daemon.sh alguse eesmärk

Käivitage Namenode.

HDFS-i metaandmete kopeerimine aktiivsest nimesõlmest ooterežiimi nimenoodi.

Käsk : HDFS mõeldud -bootstrapOoterežiim

Kopeerige HDFS-i metaandmed aktiivnime sõlmest ooterežiimi Namenode.

Kui olete selle käsu käivitanud, saate teavet, millist sõlme ja asukohta metaandmed kopeerivad ja kas see kopeerib edukalt või mitte.

Teave aktiivse eesmärgi üksikasjade kohta.

Kui metaandmed on aktiivsest nimenoodist ooterežiimi nimenoodi kopeeritud, kuvatakse ekraanipildil allpool näidatud teade.

Teave HDFS-i kohta ooterežiimis Namenode.

Käivitage nimenoodide deemon ooterežiimi nimenoodimasinas.

Käsk : hadoop-daemon.sh alguse eesmärk

Nüüd käivitage teenus Zookeeper kõigis kolmes sõlmes.

Käsk : zkServer.sh start (käivitage see käsk kõigis sõlmedes)

Aktiivsel eesmärgil:

Käivitage zookeeper rakenduses Active NameNode.

Ooterežiimis Namenode:

Käivitage zookeeper ooterežiimis NameNode.

Andmesõlmes:

Käivitage zookeeper DataNode'is.

Pärast Zookeeperi serveri käivitamist sisestage JPS käsk. Kõigis sõlmedes näete teenust QuorumPeerMain.

Käivitage andmesõlmeseade deemon.

Käsk : hadoop-daemon.sh algus datanode

Käivitage Zookeeperi rikke kontrolleri kaudu aktiivse nime sõlmes ja ootenime sõlmes.

Vormindage zookeeperi tõrge üle kontrolleri aktiivses nimenoodis.

Käsk: HDFS zkfc –formZZ

Vormindage ZKFC.

Käivitage ZKFC aktiivses nimenoodis.

Käsk : hadoop-daemon.sh start zkfc

DFSZkFailoverControlleri deemonite kontrollimiseks sisestage käsk jps.

Käivitage ZKFC.

Vormindage zookeeperi tõrge üle kontrolleri ooterežiimi nimenoodis.

Käsk : hdfs zkfc –formZZK

Käivitage ZKFC ooterežiimis.

Käsk : hadoop-daemon.sh start zkfc

DFSZkFailoverControlleri deemonite kontrollimiseks sisestage käsk jps.

Nüüd kontrollige allpool oleva käsu abil iga Namenode'i olekut, milline sõlm on aktiivne või milline on ooterežiimis.

Käsk : hdfs haadmin –getServiceState nn1

Kontrollige iga NameNode'i olekut.

Nüüd kontrollige veebibrauseri abil iga Namenode'i olekut.

Avage veebibrauser ja sisestage allolev URL.

: 50070

See näitab, kas nimesõlm on aktiivne või ooterežiimis.

binaarne kuni kümnendkohaline Java-kood

Aktiivne nimiNode.

Veebibrauseri abil avage teise nimesõlme üksikasjad.

Ooterežiimi nimiNode.

Tapke aktiivses nimenoodus nimenoodi deemon, et muuta ooterežiimi nimesõlm aktiivseks nimenoodiks.

Sisestage aktiivsesse nimenoodi jps ja tapke deemon.

Käsk: sudo kill -9

Deemonite protsessi ID.

Namenode protsessi ID on 7606, tapke namenode.

Käsk : Sudo tappa -9 7606

Tapa nimesõlme protsess

Avage kaks sõlme veebibrauseri kaudu ja kontrollige olekut.

Nimenoodi üksikasjad.

NameNode olek.

Palju õnne, olete Hadoopis edukalt seadistanud HDFS-i kõrge kättesaadavusega klastri.

Nüüd, kui olete mõistnud Hadoopi kõrge kättesaadavusega klastri arhitektuuri, vaadake autor Edureka, usaldusväärne veebiõppeettevõte, mille võrgustik koosneb enam kui 250 000 rahulolevast õppijast ja mis levib üle kogu maailma. Edureka Big Data Hadoopi sertifitseerimiskoolitus aitab õppijatel saada HDFS, lõnga, MapReduce, Pig, Hive, HBase, Oozie, Flume ja Sqoop ekspertideks, kasutades reaalajas kasutatavaid juhtumeid jaekaubanduse, sotsiaalse meedia, lennunduse, turismi ja rahanduse valdkonnas.

Kas teil on meile küsimus? Palun mainige seda kommentaaride jaotises ja võtame teiega ühendust.

aken._LQ_ = aken._LQ_ || {}

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