Sådan oprettes Hadoop-klynge med HDFS høj tilgængelighed



Denne blog giver en oversigt over HDFS-arkitekturen med høj tilgængelighed, og hvordan man konfigurerer og konfigurerer en HDFS-klynge med høj tilgængelighed i enkle trin.

HDFS 2.x Cluster Architecture med høj tilgængelighed

I denne blog vil jeg tale om HDFS 2.x High Availability Cluster Architecture og proceduren for at oprette en HDFS High Availability-klynge.Dette er en vigtig del af . Den rækkefølge, som emnerne er blevet dækket af i denne blog, er som følger:

  • HDFS HA-arkitektur
    • Introduktion
    • NameNode tilgængelighed
    • HA's arkitektur
    • Implementering af HA (JournalNode og Shared storage)
  • Hvordan oprettes HA (Quorum Journal Nodes) i en Hadoop-klynge?

Introduktion:

Konceptet High Cluster blev introduceret i Hadoop 2.x for at løse problemet med et enkelt fejlpunkt i Hadoop 1.x. Som du ved fra min tidligere blog, at følger Master / Slave Topology, hvor NameNode fungerer som en master-dæmon og er ansvarlig for styring af andre slavernoder kaldet DataNodes. Denne enkelt Master Daemon eller NameNode bliver en flaskehals. Selvom introduktionen af ​​Secondary NameNode forhindrede os i at tabe data og fjerne nogle af byrderne ved NameNode, men det løste ikke tilgængelighedsproblemet med NameNode.





NameNode tilgængelighed:

Hvis du overvejer standardkonfigurationen af ​​HDFS-klynge, bliver NameNode en enkelt fejlpunkt . Det sker, fordi det øjeblik, NameNode bliver utilgængelig, bliver hele klyngen utilgængelig, indtil nogen genstarter NameNode eller bringer en ny.

Årsagerne til, at NameNode ikke er tilgængelige, kan være:



  • En planlagt begivenhed som vedligeholdelsesarbejde som sådan har opgradering af software eller hardware.
  • Det kan også skyldes en ikke-planlagt begivenhed, hvor NameNode går ned på grund af nogle årsager.

I begge ovenstående tilfælde har vi en nedetid, hvor vi ikke er i stand til at bruge HDFS-klyngen, som bliver en udfordring.

HDFS HA-arkitektur:

Lad os forstå, hvordan HDFS HA ​​Architecture løste dette kritiske problem med NameNode-tilgængelighed:

HA-arkitekturen løste dette problem med NameNode-tilgængelighed ved at tillade os at have to NameNodes i en aktiv / passiv konfiguration. Så vi har to kørende NameNodes på samme tid i en klynge med høj tilgængelighed:



  • Aktiv NameNode
  • Standby / Passiv navnNode.

HDFS HA-arkitektur - klynge med høj tilgængelighed - Edureka

Hvis den ene NameNode går ned, kan den anden NameNode overtage ansvaret og derfor reducere klyngens nedetid. Standby NameNode tjener formålet med en backup NameNode (i modsætning til Secondary NameNode), der indeholder failover-funktioner i Hadoop-klyngen. Derfor kan vi med StandbyNode have automatisk failover, når en NameNode går ned (ikke planlagt begivenhed), eller vi kan have en yndefuld (manuelt initieret) failover i vedligeholdelsesperioden.

Der er to problemer med at opretholde konsistens i HDFS-klyngen med høj tilgængelighed:

  • Active og Standby NameNode skal altid være synkroniseret med hinanden, dvs. de skal have de samme metadata. Dette giver os mulighed for at gendanne Hadoop-klyngen til den samme navneområde, hvor den blev styrtet, og vil derfor give os hurtig failover.
  • Der skal kun være en aktiv NameNode ad gangen, fordi to aktive NameNode vil føre til korruption af dataene. Denne form for scenarie betegnes som et split-hjernescenario, hvor en klynge opdeles i mindre klynger, hvor hver enkelt tror, ​​at den er den eneste aktive klynge. For at undgå sådanne scenarier er der indhegnet. Hegn er en proces, der sikrer, at kun en NameNode forbliver aktiv på et bestemt tidspunkt.

Implementering af HA-arkitektur:

Nu ved du, at vi i HDFS HA-arkitektur har to NameNodes, der kører på samme tid. Så vi kan implementere Active og Standby NameNode-konfigurationen på følgende to måder:

  1. Brug af Quorum Journal Nodes
  2. Delt lager ved hjælp af NFS

Lad os forstå disse to måder at implementere på en ad gangen:

1. Brug af Quorum Journal Nodes:

  • Standby NameNode og den aktive NameNode holder sig synkroniseret med hinanden gennem en separat gruppe noder eller dæmoner, der kaldes JournalNodes .JournalNodes følger ringtopologien, hvor knudepunkterne er forbundet til hinanden for at danne en ring.JournalNode serverer anmodningen, der kommer til den, og kopierer informationen til andre noder i ringen.Dette giver fejltolerance i tilfælde af JournalNode-fejl.
  • Den aktive NameNode er ansvarlig for opdatering af de EditLogs (metadataoplysninger), der findes i JournalNodes.
  • StandbyNode læser de ændringer, der er foretaget i EditLogs i JournalNode, og anvender den konstant på sit eget navneområde.
  • Under failover sørger StandbyNode for, at den har opdateret sine metadataoplysninger fra JournalNodes, før den blev den nye Active NameNode. Dette gør den aktuelle navneområde-tilstand synkroniseret med staten før failover.
  • IP-adresserne på begge NameNodes er tilgængelige for alle DataNodes, og de sender deres hjerterytme og blokerer placeringsoplysninger til begge NameNode. Dette giver en hurtig failover (mindre nedetid), da StandbyNode har opdaterede oplysninger om blokplaceringen i klyngen.

Hegn af NameNode:

Som tidligere omtalt er det meget vigtigt at sikre, at der kun er en Active NameNode ad gangen. Så hegn er en proces for at sikre netop denne ejendom i en klynge.

  • JournalNodes udfører denne hegn ved kun at tillade en NameNode at være forfatter ad gangen.
  • Standby NameNode overtager ansvaret for at skrive til JournalNodes og forbyder enhver anden NameNode at forblive aktiv.
  • Endelig kan den nye Active NameNode udføre sine aktiviteter sikkert.

2. Brug af delt lager:

  • StandbyNode og den aktive NameNode synkroniseres med hinanden ved hjælp af a delt lagerenhed .Den aktive NameNode logger registreringen af ​​enhver ændring, der er foretaget i dens navneområde til en EditLog, der er til stede i dette delte lager.StandbyNode læser de ændringer, der er foretaget i EditLogs i dette delte lager, og anvender det på sit eget navneområde.
  • I tilfælde af failover opdaterer StandbyNode nu først sine metadataoplysninger ved hjælp af EditLogs i det delte lager. Derefter tager det ansvaret for Active NameNode. Dette gør den aktuelle navneområde-tilstand synkroniseret med staten før failover.
  • Administratoren skal konfigurere mindst en hegnmetode for at undgå et split-hjernescenario.
  • Systemet kan anvende en række hegnmekanismer. Det kan omfatte aflivning af NameNode-processen og tilbagekaldelse af adgangen til den delte lagermappe.
  • Som en sidste udvej kan vi hegn den tidligere aktive NameNode med en teknik kendt som STONITH eller 'skyde den anden knude i hovedet'. STONITH bruger en specialiseret strømfordelingsenhed til at nedbryde NameNode-maskinen med magt.

Automatisk failover:

Failover er en procedure, hvorved et system automatisk overfører kontrol til sekundært system, når det registrerer en fejl eller fejl. Der er to typer failover:

Yndefuld failover: I dette tilfælde starter vi manuelt failover til rutinemæssig vedligeholdelse.

Automatisk failover: I dette tilfælde startes failover automatisk i tilfælde af NameNode-fejl (ikke planlagt begivenhed).

Apache Zookeeper er en tjeneste, der leverer den automatiske failover-funktion i HDFS-højtilgængelighedsklynge. Det vedligeholder små mængder koordinationsdata, informerer klienter om ændringer i disse data og overvåger klienter for fejl. Zookeeper opretholder en session med NameNodes. I tilfælde af fiasko udløber sessionen, og Zookeeper informerer andre NameNodes om at starte failover-processen. I tilfælde af NameNode-fejl kan anden passiv NameNode tage en lås i Zookeeper om, at den ønsker at blive den næste Active NameNode.

ZookeerFailoverController (ZKFC) er en Zookeeper-klient, der også overvåger og administrerer NameNode-status. Hver af NameNode kører også en ZKFC. ZKFC er jævnligt ansvarlig for at overvåge NameNodes sundhed.

Nu hvor du har forstået, hvad der er høj tilgængelighed i en Hadoop-klynge, er det tid til at konfigurere det. For at opsætte høj tilgængelighed i Hadoop-klynge skal du bruge Zookeeper i alle knudepunkter.

Dæmonerne i Active NameNode er:

  • Dyrepasser
  • Zookeeper Fail Over controller
  • JournalNode
  • NameNode

Dæmonerne i Standby NameNode er:

  • Dyrepasser
  • Zookeeper Fail Over controller
  • JournalNode
  • NameNode

Dæmonerne i DataNode er:

  • Dyrepasser
  • JournalNode
  • DataNode

Hvis du ønsker at mestre HDFS og Hadoop, skal du tjekke det specielt kuraterede Big Data og Hadoop-kursus af Edureka. Klik på knappen nedenfor for at komme i gang.

Opsætning og konfiguration af høj tilgængelighedsklynge i Hadoop:

Du skal først konfigurere Java- og værtsnavne på hver node.

Virtuel maskine IP-adresse Værtsnavn
Aktiv NameNode192.168.1.81nn1.cluster.com eller nn1
Standby NameNode192.168.1.58nn2.cluster.com eller nn2
DataNode192.168.1.82dn1.cluster.com eller dn1

Download den binære tar-fil Hadoop og Zookeeper, udpak filerne for at redigere konfigurationsfiler.

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

Spred zookeeper-3.4.6.tar.gz

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

Download den stabile Hadoop binære tjære til fra Apache Hadoop-webstedet.

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

Uddrag Hadoop-tjærekuglen.

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

Spread hadoop binært.

Tilføj Hadoop, Zookeeper og stier til .bashrc-filen.

Åbn .bashrc-filen.

Kommando : sudo gedit ~ / .bashrc

Tilføj nedenstående stier:

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

Rediger .bashrc-fil.

Aktivér SSH i hele noden.

Generer SSH-nøglen i alle knudepunkter.

Kommando : ssh-keygen –t rsa (Dette trin i alle knudepunkter)

Opsæt SSH-nøgle i alle knudepunkter.

Giv ikke nogen sti til Enter-filen for at gemme nøglen, og giv ikke nogen adgangssætning. Tryk på Enter-knappen.

Generer ssh-nøgleprocessen i alle knudepunkter.

Når ssh-nøglen er genereret, får du den offentlige nøgle og den private nøgle.

.Ssh-nøglekataloget skal indeholde Tilladelse 700, og alle nøglerne i .ssh-kataloget skal indeholde tilladelserne 600.

Skift SSH-katalogtilladelsen.

Skift biblioteket til .ssh, og rediger tilladelsen til filer til 600

Skift tilladelse til offentlig og privat nøgle.

Du skal kopiere Navne noder ssh offentlig nøgle til alle noder.

I Active Namenode skal du kopiere id_rsa.pub ved hjælp af cat-kommandoen.

Kommando : kat ~ / .ssh / id_rsa.pub >> ~ / .ssh / autoriserede_taster

Kopier Namenode ssh-nøgle til de autoriserede nøgler.

Kopier den offentlige NameNode-nøgle til alle knudepunkter ved hjælp af ssh-kopi-id kommando.

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

Kopier formålstasten til Standby NameNode.

Kopier den offentlige nøgle til NameNode til datanoden.

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

html-tag til linjeskift

Kopier Namenode offentlig nøgle til datanode.

Genstart sshd-tjenesten i alle knudepunkter.

Kommando : sudo service sshd genstart (Gør i alle knudepunkter)

Genstart SSH-tjenesten.

Nu kan du logge ind på en hvilken som helst node fra Namenode uden nogen godkendelse.

Åbn filen core-site.xml fra Active Name-noden, og tilføj nedenstående egenskaber.

Rediger core-site.xml fra Active namenode

Åbn hdfs-site.xml-filen i Active Namenode. Tilføj nedenstående egenskaber.

dfs.namenode.name.dir / home / edureka / HA / data / namenode dfs.replikering 1 dfs.tilladelser falske dfs.nameservices ha-klynge dfs.ha.namenodes.ha-cluster nn1, nn2 dfs.namenode.rpc-adresse .ha-cluster.nn1 nn1.cluster.com:9000 dfs.namenode.rpc-adresse.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 sand 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

Skift biblioteket til zookeepers conf-bibliotek.

Kommando : cd zookeeper-3.4.6 / conf

Zookeeper Conf-bibliotek.

I en conf-mappe har du zoo_sample.cfg-fil, opret zoo.cfg ved hjælp af zoo_sample.cfg-fil.

Kommando : cp zoo_sample.cfg zoo.cfg

Opret zoo.cfg-fil.

Opret biblioteket et vilkårligt sted, og brug dette bibliotek til at gemme zookeeper-dataene.

Kommando : mkdir

Opret en mappe til at gemme zookeeper-data.

Åbn zoo.cfg-filen.

Kommando : gedit zoo.cfg

Føj biblioteksstien, der er oprettet i ovenstående trin, til dataDir-egenskaben, og tilføj nedenstående detaljer vedrørende den resterende knude i zoo.cfg-filen.

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

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

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

Rediger zoo.cfg-filen.

Kopier nu Java- og Hadoop-2.6.0, zookeeper-3.4.6-mapper og .bashrc-filen til alle knudepunkter (Standby-navneknude, Data-knude) ved hjælp af scp-kommando.

Kommando : scp –r edureka @:

Kopier Hadoop-, Zookeeper- og .bashrc-fil til alle noder.

Kopier ligeledes .bashrc-filen og zookeeper-biblioteket til alle knudepunkterne, og skift miljøvariabler i hver i henhold til den respektive node.

I en dataknude skal du oprette et hvilket som helst bibliotek, hvor du har brug for at gemme HDFS-blokkene.

I en dataknude skal du tilføje egenskaberne dfs.datanode.data.dir.

I mit tilfælde skabte jeg datanode katalog til at gemme blokkene.

Opret Datanode-bibliotek.

Skift tilladelsen til datanodemappen.

Skift tilladelse til Datanode-katalog.

Åbn HDFS-site.xml-filen, tilføj denne Datanode-katalogsti i dfs.datanode.data.dir-ejendommen.

Bemærk: Gem alle de egenskaber, der er kopieret fra Active namenode, tilføj dfs.datanode.data.dir en ekstraktegenskab i namenode.

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

I Active namenode skal du ændre det bibliotek, hvor du vil gemme zookeeper-konfigurationsfilen (dataDir-egenskabssti).

Opret myid-filen inde i biblioteket, og tilføj numerisk 1 til filen, og gem filen.

Kommando : vi myid

Opret myid-fil.

I en standby-navnekode skal du ændre det bibliotek, hvor du vil gemme zookeeper-konfigurationsfilen (dataDir-egenskabssti).

Opret myid-filen inde i biblioteket, og tilføj numerisk 2 til filen, og gem filen.

I en dataknude skal du ændre det bibliotek, hvor du vil gemme zookeeper-konfigurationsfilen (dataDir-egenskabssti).

Opret myid-filen inde i biblioteket, og tilføj numerisk 3 til filen, og gem filen.

Start Journalnode i alle de tre knudepunkter.

Kommando : hadoop-daemon.sh start journalnode

Start Journalnode.

Når du indtaster jps-kommandoen, vil du se JournalNode-dæmonen i alle knudepunkter.

FormaterAktivt formål.

Kommando : HDFS beregnet -format

Aktivt NameNode-format.

Start Namenode-dæmonen og Active Namedode.

Kommando : hadoop-daemon.sh startformål

Start Namenode.

Kopier HDFS Meta-data fra aktivt navneknudepunkt til standby-namenode.

Kommando : HDFS beregnet -bootstrapStandby

Kopier HDFS Meta-data fra aktivt navneknudepunkt til Standby Namenode.

Når du har kørt denne kommando, får du oplysningerne fra hvilken node og placering metadataene kopieres, og om de kopieres med succes eller ej.

Oplysninger om detaljer med aktivt formål.

Når Meta-data er kopieret fra Aktiv namenode til standby namenode, får du beskeden vist nedenfor på skærmbilledet.

Oplysninger om HDFS i Standby Namenode.

Start namenode-dæmonen i Standby-namenode-maskine.

Kommando : hadoop-daemon.sh startformål

sorter i c ++

Start nu Zookeeper-tjenesten i alle de tre noder.

Kommando : zkServer.sh start (Kør denne kommando i alle knudepunkter)

I aktivt formål:

Start zookeeper i Active NameNode.

I Standby Namenode:

Start zookeeper i standby NameNode.

I dataknude:

Start zookeeper i DataNode.

Når du har kørt Zookeeper-serveren, skal du indtaste JPS-kommandoen. I alle knudepunkter vil du se QuorumPeerMain-tjenesten.

Start Data node-dæmonen i Data node-maskinen.

Kommando : hadoop-daemon.sh start datanode

Start Zookeeper fail over controller i Aktivt navneknudepunkt og standbynavnknudepunkt.

Formater zookeeper fail over controller i Active namenode.

Kommando: HDFS zkfc –formatZK

Formater ZKFC.

Start ZKFC i aktiv navnekode.

Kommando : hadoop-daemon.sh start zkfc

Indtast jps-kommandoen for at kontrollere DFSZkFailoverController-dæmoner.

Start ZKFC.

Formater zookeeper fail over controller i Standby-namenode.

Kommando : hdfs zkfc –formatZK

Start ZKFC i Standby-namenode.

Kommando : hadoop-daemon.sh start zkfc

Indtast jps-kommandoen for at kontrollere DFSZkFailoverController-dæmoner.

Kontroller nu status for hver Namenode, hvilken node der er aktiv, eller hvilken node der er i standby ved hjælp af kommandoen nedenfor.

Kommando : hdfs haadmin –getServiceState nn1

Kontroller status for hver NameNode.

Kontroller nu status for hver Namenode ved hjælp af webbrowseren.

Åbn webbrowseren, og indtast nedenstående URL.

: 50070

Det viser, om navnetoden er aktiv eller i standby.

Aktiv NameNode.

Åbn oplysninger om en anden navneknude ved hjælp af webbrowseren.

Standby NameNode.

I Active namenode skal du dræbe namenode-dæmonen for at ændre Standby-navneknudepunktet til aktiv namenode.

Indtast jps i Active namenode og dræb dæmonen.

Kommando: sudo kill -9

Daemons proces-id.

Namenode-proces-id'et er 7606, dræb namenoden.

Kommando : Sudo kill -9 7606

Dræb processen med navnetoden

Åbn de to knudepunkter gennem webbrowseren, og kontroller status.

Namenode detaljer.

NameNode status.

Tillykke, du har succesfuldt konfigureret en HDFS High Availability Cluster i Hadoop.

Nu hvor du har forstået Hadoop High Availability Cluster Architecture, skal du tjekke af Edureka, et pålideligt online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden. Edureka Big Data Hadoop-certificeringskursus hjælper elever med at blive eksperter i HDFS, Garn, MapReduce, Pig, Hive, HBase, Oozie, Flume og Sqoop ved hjælp af realtidsanvendelsessager på Retail, Social Media, Aviation, Tourism, Finance domæne.

Har du et spørgsmål til os? Nævn det i kommentarfeltet, så vender vi tilbage til dig.

vindue._LQ_ = vindue._LQ_ || {}

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