HDFS 2.x magas rendelkezésre állású fürt architektúra
Ebben a blogban a HDFS 2.x magas rendelkezésre állású fürt architektúráról és a HDFS magas rendelkezésre állású fürt létrehozásának eljárásáról fogok beszélni.Ez fontos része a . A blog témáinak sorrendje a következő:
- HDFS HA építészet
- Bevezetés
- NameNode Elérhetőség
- A HA építészete
- HA (JournalNode és megosztott tárhely) megvalósítása
- Hogyan állítható be a HA (Quorum Journal Nodes) egy Hadoop-fürtben?
Bevezetés:
A magas rendelkezésre állású klaszter koncepcióját a Hadoop 2-ben vezették be.x a Hadoop 1.x hibapontjának egyetlen pontjának megoldásához. Mint az előző blogomból tudod, hogy a a Master / Slave topológiát követi, ahol a NameNode mester démonként működik, és felelős más DataNodes nevű szolga csomópontok kezeléséért. Ez az egyetlen Master Daemon vagy a NameNode szűk keresztmetszet lesz. Bár a másodlagos NameNode bevezetése megakadályozta az adatvesztést és a NameNode bizonyos terheinek leterhelését, de nem oldotta meg a NameNode elérhetőségét.
NameNode Elérhetőség:
Ha figyelembe vesszük a HDFS-fürt szokásos konfigurációját, akkor a NameNode a-val lesz egyetlen meghibásodási pont . Azért történik, mert abban a pillanatban, amikor a NameNode elérhetővé válik, az egész fürt elérhetetlenné válik, amíg valaki újra nem indítja a NameNode-ot, vagy nem hoz újat.
A NameNode elérhetetlenségének okai a következők lehetnek:
- Egy olyan tervezett esemény, mint például a karbantartási munka, a szoftver vagy a hardver frissítésével jár.
- Ennek oka lehet egy nem tervezett esemény is, amikor a NameNode bizonyos okok miatt összeomlik.
A fenti esetek bármelyikében leállási időnk van, amikor nem tudjuk használni a HDFS-fürtöt, ami kihívássá válik.
HDFS HA architektúra:
Tisztázzuk, hogy a HDFS HA Architecture hogyan oldotta meg a NameNode elérhetőségének ezt a kritikus problémáját:
A HA architektúra megoldotta a NameNode elérhetőségének ezt a problémáját, lehetővé téve számunkra, hogy két NameNode legyen aktív / passzív konfigurációban. Tehát egy magas rendelkezésre állású fürtben egyszerre két futó NameNode van:
- Aktív NameNode
- Készenléti / passzív név csomópont.
Ha az egyik Névcsomópont lemegy, akkor a másik Névcsomópont átvállalhatja a felelősséget, ezért lerövidítheti a fürt leállási idejét. A készenléti NameNode egy biztonsági másolat NameNode célját szolgálja (ellentétben a Secondary NameNode), amelyek a Hadoop-fürt feladatátvételi képességeit tartalmazzák. Ezért a StandbyNode segítségével automatikus feladatátvételt tehetünk, amikor egy NameNode összeomlik (nem tervezett esemény), vagy kecses (manuálisan elindított) feladatátvételt tehetünk a karbantartási időszak alatt.
A HDFS magas rendelkezésre állású fürt konzisztenciájának fenntartása két kérdéssel jár:
- Az aktív és a készenléti névnévnek mindig szinkronban kell lenniük egymással, vagyis ugyanazokkal a metaadatokkal kell rendelkezniük. Ez lehetővé teszi számunkra, hogy visszaállítsuk a Hadoop-fürtöt ugyanabba a névtér-állapotba, ahol összeomlott, és ezért gyors feladatátvételt biztosít.
- Egyszerre csak egy aktív NameNode lehet, mert két aktív NameNode az adatok sérüléséhez vezet. Ezt a fajta forgatókönyvet split-brain forgatókönyvnek nevezik, ahol a klaszter kisebb klaszterekre oszlik, és mindegyikük úgy gondolja, hogy ez az egyetlen aktív klaszter. Az ilyen esetek elkerülése érdekében a kerítés megtörténik. A vívás annak biztosítása, hogy csak egy NameNode maradjon aktív egy adott időpontban.
HA építészet megvalósítása:
Most már tudja, hogy a HDFS HA Architecture alkalmazásban két NameNode fut egyszerre. Tehát az Active és a Standby NameNode konfigurációt a következő két módon valósíthatjuk meg:
- A Kvórum Napló csomópontok használata
- Megosztott tárhely az NFS használatával
Értsük meg a megvalósításnak ezt a két módját, külön-külön:
1. A Kvórum Napló csomópontok használata:
- A készenléti NameNode és az aktív NameNode szinkronban marad egymással egy külön csomópont- vagy démoncsoporton keresztül JournalNodes .A JournalNodes a gyűrű topológiáját követi, ahol a csomópontok összekapcsolódnak egymással, és gyűrűt alkotnak.A JournalNode kiszolgálja a hozzá érkező kérést, és az információt a gyűrű más csomópontjaiba másolja.Ez biztosítja a hibatűrést a JournalNode meghibásodása esetén.
- Az aktív NameNode felelős a JournalNodes-ben található EditLogs (metaadat-információk) frissítéséért.
- A StandbyNode elolvassa az EditLogs módosításait a JournalNode-ban, és állandóan alkalmazza a saját névterére.
- A feladatátvétel során a StandbyNode meggyőződik arról, hogy frissítette-e a metaadatokat a JournalNodes-ről, mielőtt új Active NameNode-vá vált. Ez szinkronizálja az aktuális névtér állapotot a feladatátvétel előtti állapottal.
- Mindkét NameNode IP-címe elérhető az összes DataNode számára, és elküldik a szívdobbanásukat, és blokkolják a helyinformációkat mindkét NameNode-hoz. Ez gyors feladatátvételt (kevesebb leállási időt) biztosít, mivel a StandbyNode frissített információkkal rendelkezik a blokk blokkhelyéről a fürtben.
A NameNode kerítése:
Most, ahogy korábban említettük, nagyon fontos annak biztosítása, hogy egyszerre csak egy Active NameNode legyen. Tehát a kerítés olyan folyamat, amely biztosítja ezt a tulajdonságot egy klaszterben.
- A JournalNodes ezt a kerítést úgy hajtja végre, hogy egyszerre csak egy NameNode lehet az író.
- A Készenléti Névcsomó átveszi a JournalNodes írásának felelősségét, és megtiltja, hogy bármely más Névcsomópont aktív maradjon.
- Végül az új Active NameNode biztonságosan elvégezheti tevékenységét.
2. Megosztott tárhely használata:
- A StandbyNode és az aktív NameNode szinkronban marad egymással az a használatával megosztott tárolóeszköz .Az aktív NameNode naplózza a névtérben végrehajtott bármilyen módosítás rekordját a megosztott tárolóban található EditLog-ba.A Készenléti Csomópont elolvassa az ezen megosztott tárhelyen található EditLogs módosításait, és alkalmazza a saját névterére.
- Most feladatátvétel esetén a StandbyNode először a megosztott tároló EditLogs segítségével frissíti metaadatait. Ezután az Active NameNode felelősségét vállalja. Ez szinkronizálja az aktuális névtér állapotot a feladatátvétel előtti állapottal.
- A rendszergazdának konfigurálnia kell legalább egy kerítési módszert az osztott agyú forgatókönyv elkerülése érdekében.
- A rendszer számos kerítésmechanizmust alkalmazhat. Ez magában foglalhatja a NameNode folyamatának megölését és a megosztott tárolási könyvtárhoz való hozzáférés visszavonását.
- Végső megoldásként a korábban aktív NameNode-ot a STONITH néven ismert technikával keríthetjük el, vagy „fejbe lőhetjük a másik csomópontot”. A STONITH egy speciális áramelosztó egységet használ a NameNode gép erőszakos kikapcsolására.
Automatikus feladatátvétel:
A feladatátvétel olyan eljárás, amelynek során a rendszer automatikusan átadja a vezérlést a másodlagos rendszernek, ha hibát vagy hibát észlel. A feladatátvitelnek két típusa van:
Kecses feladatátvétel: Ebben az esetben manuálisan kezdeményezzük a feladatátvételt a rutin karbantartáshoz.
Automatikus feladatátvétel: Ebben az esetben a feladatátvételt automatikusan elindítja NameNode hiba (nem tervezett esemény) esetén.
Az Apache Zookeeper olyan szolgáltatás, amely biztosítja az automatikus feladatátvételi képességet a HDFS magas rendelkezésre állású fürtjében. Kis mennyiségű koordinációs adatot tart fenn, tájékoztatja az ügyfeleket az adatok változásairól, és figyeli az ügyfeleket a hibák szempontjából. A Zookeeper fenntart egy munkamenetet a NameNodes szolgáltatással. Meghibásodás esetén a munkamenet lejár, és a Zookeeper tájékoztatja a többi NameNode-ot a feladatátvételi folyamat elindításáról. A NameNode meghibásodása esetén egy másik passzív NameNode lezárhatja a Zookeeper programot, kijelentve, hogy a következő Active NameNode-ként akar lenni.
A ZookeerFailoverController (ZKFC) egy Zookeeper kliens, amely figyeli és kezeli a NameNode állapotot is. A NameNode mindegyikén fut egy ZKFC is. A ZKFC felelős a NameNodes állapotának időszakos ellenőrzéséért.
Most, hogy megértette, mi a magas rendelkezésre állás egy Hadoop-fürtben, ideje beállítani. A Hadoop-fürt magas rendelkezésre állásának beállításához a Zookeepert kell használnia az összes csomópontban.
Az Active NameNode démonjai a következők:
- Állatgondozó
- Zookeeper Fail Over vezérlő
- JournalNode
- NameNode
A Standby NameNode démonjai a következők:
- Állatgondozó
- Zookeeper Fail Over vezérlő
- JournalNode
- NameNode
A DataNode démonjai a következők:
- Állatgondozó
- JournalNode
- DataNode
Ha el akarod sajátítani a HDFS-t és a Hadoop-ot, nézd meg az Edureka által speciálisan kurált Big Data and Hadoop tanfolyamot. A kezdéshez kattintson az alábbi gombra.
Magas rendelkezésre állású fürt beállítása és konfigurálása a Hadoopban:
Először be kell állítania az egyes csomópontok Java és host nevét.
Virtuális gép | IP-cím | Gazdanév |
Aktív NameNode | 192.168.1.81 | nn1.cluster.com vagy nn1 |
Készenléti Név | 192.168.1.58 | nn2.cluster.com vagy nn2 |
DataNode | 192.168.1.82 | dn1.cluster.com vagy dn1 |
Töltse le a Hadoop és a Zookeeper bináris kátrányfájlt, és bontsa ki a fájlokat a konfigurációs fájlok szerkesztéséhez.
Parancs: wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
Terjessze az állattartót-3.4.6.tar.gz
Parancs : tar –xvf állattartó-3.4.6.tar.gz
Töltse le a stabil Hadoop bináris kátrányt az Apache Hadoop webhelyről.
Parancs : wget https://archive.apache.org/dist/hadoop/core/hadoop-2.6.0/hadoop-2.6.0.tar.gz
Kivonjuk a Hadoop kátránygömböt.
Parancs : tar –xvf hadoop-2.6.0.tar.gz
Spread hadoop bináris.
Adja hozzá a Hadoop, a Zookeeper és az elérési utakat a .bashrc fájlhoz.
Nyissa meg a .bashrc fájlt.
Parancs : sudo gedit ~ / .bashrc
Adja hozzá az alábbi utakat:
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 / Hadoop export JAVA_HOME = export ZOOKEEPER_HOME = export PATH = $ PATH: $ JAVA_HOME / bin: $ HADOOP_HOME / bin: $ HADOOP_HOME / sbin: $ ZOOKEEPER_HOME / bin
Szerkessze a .bashrc fájlt.
Engedélyezze az SSH-t az összes csomópontban.
Generálja az SSH kulcsot az összes csomópontban.
Parancs : ssh-keygen –t rsa (Ez a lépés az összes csomópontban)
Állítsa be az SSH kulcsot az összes csomópontban.
Ne adjon meg semmilyen elérési utat az Enter fájlnak a kulcs mentéséhez, és ne adjon meg jelszót. Nyomja meg az Enter gombot.
hogyan készítsünk tömb objektumot a java-ban
Generálja az ssh kulcsfolyamatot az összes csomópontban.
Az ssh kulcs előállítása után megkapja a nyilvános és a privát kulcsot.
A .ssh kulcskönyvtárnak tartalmaznia kell a 700 engedélyt, a .ssh könyvtár összes kulcsának pedig a 600 engedélyt.
Módosítsa az SSH könyvtár engedélyét.
Változtassa a könyvtárat .ssh-re, és változtassa meg a fájlok engedélyét 600-ra
A nyilvános és a privát kulcs engedélyének módosítása.
Az összes csomópontra át kell másolnia a Név csomópontok ssh nyilvános kulcsát.
Az Active Namenode fájlban másolja az id_rsa.pub macska paranccsal.
Parancs : macska ~ / .ssh / id_rsa.pub >> ~ / .ssh / jogosult_kulcsok
Másolja a Namenode ssh kulcsot az engedélyezett kulcsokba.
Másolja a NameNode nyilvános kulcsot az összes csomópontra a használatával ssh-copy-id parancs.
Parancs : ssh-copy-id –i .ssh / id_rsa.pub edureka@nn2.cluster.com
ms sql oktatóanyagok kezdőknek
Másolja a célkulcsot a Készenléti Név Csomópontba.
Másolja a NameNode nyilvános kulcsot az adatcsomópontba.
Parancs : ssh-copy-id –i .ssh / id_rsa.pub edureka@dn1.cluster.com
Másolja a Namenode nyilvános kulcsot az adatcsomópontba.
Indítsa újra az sshd szolgáltatást az összes csomópontban.
Parancs : sudo service sshd restart (Csináld az összes csomópontban)
Indítsa újra az SSH szolgáltatást.
Most hitelesítés nélkül bejelentkezhet a Namenode bármely csomópontjába.
Nyissa meg az aktív név csomópontból a core-site.xml fájlt, és adja hozzá az alábbi tulajdonságokat.
Szerkessze a core-site.xml fájlt az Active namenode fájlból
Nyissa meg a hdfs-site.xml fájlt az Active Namenode fájlban. Adja hozzá az alábbi tulajdonságokat.
dfs.namenode.name.dir / home / edureka / HA / data / namenode dfs.replication 1 dfs.permissions hamis dfs.nameservices ha-fürt dfs.ha.namenodes.ha-fürt nn1, nn2 dfs.namenode.rpc-cím .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.fürt. 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
Módosítsa a könyvtárat a zookeeper conf könyvtárára.
Parancs : cd állattartó-3.4.6 / konf
Zookeeper Conf könyvtár.
A conf könyvtárban van zoo_sample.cfg fájl, hozza létre a zoo.cfg fájlt a zoo_sample.cfg fájl segítségével.
Parancs : cp zoo_sample.cfg zoo.cfg
Hozzon létre zoo.cfg fájlt.
Hozza létre a könyvtárat bárhol, és használja ezt a könyvtárat az állattartó adatainak tárolásához.
Parancs : mkdir
Hozzon létre egy könyvtárat a zookeeper adatok tárolásához.
Nyissa meg a zoo.cfg fájlt.
Parancs : gedit zoo.cfg
Adja hozzá a fenti lépésben létrehozott könyvtár elérési utat a dataDir tulajdonsághoz, és adja hozzá az alábbi részleteket a fennmaradó csomópontra vonatkozóan a zoo.cfg fájlban.
Szerver.1 = nn1.cluster.com: 2888: 3888
Szerver.2 = nn2.cluster.com: 2888: 3888
Szerver.3 = dn1.cluster.com: 2888: 3888
Szerkessze a zoo.cfg fájlt.
Most másolja a Java és a Hadoop-2.6.0, a zookeeper-3.4.6 könyvtárakat és a .bashrc fájlt az összes csomópontra (Készenléti név csomópont, Adat csomópont) az scp parancs segítségével.
Parancs : scp –r edureka @:
Másolja a Hadoop, a Zookeeper és a .bashrc fájlt az összes csomópontba.
Hasonlóképpen másolja a .bashrc fájlt és a zookeeper könyvtárat az összes csomópontra, és mindegyikben változtassa meg a környezeti változókat az adott csomópontnak megfelelően.
Adatcsomópontban hozzon létre minden olyan könyvtárat, ahol tárolni kell a HDFS-blokkokat.
Egy adatcsomópontban hozzá kell adnia a dfs.datanode.data.dir tulajdonságokat.
Az én esetemben én alkottam datanode könyvtár a blokkok tárolásához.
Hozzon létre Datanode könyvtárat.
Módosítsa az adatcsomópont-könyvtár engedélyét.
Módosítsa a Datanode könyvtár engedélyét.
Nyissa meg a HDFS-site.xml fájlt, vegye fel a Datanode könyvtár elérési útját a dfs.datanode.data.dir tulajdonságba.
Megjegyzés: Az Active namenode-ból másolt összes tulajdonság megtartja a dfs.datanode.data.dir egyik kivonat tulajdonságát a namenode-ban.
dfs.datanode.data.dir / home / edureka / HA / data / datanode
Az Aktív névcsomópontban változtassa meg azt a könyvtárat, ahová a zookeeper konfigurációs fájlt szeretné tárolni (dataDir tulajdonság elérési útja).
Hozza létre a myid fájlt a könyvtárban, és adjon hozzá 1-es számot a fájlhoz, és mentse a fájlt.
Parancs : vi myid
Hozzon létre myid fájlt.
Készenléti névnódban változtassa meg azt a könyvtárat, ahová tárolni szeretné a zookeeper konfigurációs fájlt (dataDir tulajdonság elérési útja).
Hozza létre a myid fájlt a könyvtárban, és adja hozzá a 2-es számot a fájlhoz, és mentse a fájlt.
Adatcsomópontban változtassa meg azt a könyvtárat, ahová a zookeeper konfigurációs fájlt szeretné tárolni (dataDir tulajdonság elérési útja).
Hozza létre a myid fájlt a könyvtárban, és adjon hozzá 3-as számot a fájlhoz, és mentse a fájlt.
Indítsa el a Journalnode-ot mindhárom csomópontban.
Parancs : hadoop-daemon.sh start journalnode
Indítsa el a Journalnode alkalmazást.
A jps parancs megadásakor az összes csomópontban megjelenik a JournalNode démon.
Formázza aAktív cél.
Parancs : HDFS-formátum
Aktív NameNode formátum.
Indítsa el a Namenode és az Active Namedode démonokat.
Parancs : hadoop-daemon.sh kezdési cél
Indítsa el a Namenode alkalmazást.
Másolja a HDFS metaadatokat az aktív névcsomópontról a készenléti névcsomópontra.
Parancs : HDFS szánt -bootstrapStandby
Másolja a HDFS Meta adatokat az Aktív név csomópontról a Készenléti Namenode-ra.
Miután futtatta ezt a parancsot, megkapja az információt, hogy a metaadatokat mely csomópontból és helyről másolja, és hogy sikeresen másol-e vagy sem.
Az aktív célra vonatkozó információk.
Miután a metaadatokat átmásolta az Active namenode-ról a standby namenode-ra, megkapja az alábbi üzenetet a képernyőképen.
Információ a HDFS-ről a készenléti Namenode-ban.
Indítsa el a namenode démont a Készenléti namenode gépben.
Parancs : hadoop-daemon.sh kezdési cél
Most indítsa el a Zookeeper szolgáltatást mindhárom csomópontban.
Parancs : zkServer.sh start (Futtassa ezt a parancsot az összes csomópontban)
Aktív célra:
Indítsa el a zookeepert az Active NameNode-ban.
Készenléti Namenode-ban:
Indítsa el a zookeepert készenléti NameNode-ban.
Az Adat csomópontban:
Indítsa el a zookeepert a DataNode-ban.
A Zookeeper szerver futtatása után írja be a JPS parancsot. Az összes csomópontban látni fogja a QuorumPeerMain szolgáltatást.
Indítsa el a Data node démonot az Data node gépben.
Parancs : hadoop-daemon.sh start datanode
Indítsa el a Zookeeper fail over vezérlőt az Aktív név csomópontban és a készenléti név csomópontban.
Formázza a zookeeper fail over vezérlőjét az Active namenode-ban.
Parancs: HDFS zkfc –formZZK
Formázza a ZKFC-t.
Indítsa el a ZKFC-t az Active namenode-ban.
Parancs : hadoop-daemon.sh start zkfc
Írja be a jps parancsot a DFSZkFailoverController démonok ellenőrzéséhez.
Indítsa el a ZKFC-t.
Formázza a zookeeper fail over vezérlőjét a Készenléti névnévben.
Parancs : hdfs zkfc –formatZK
Indítsa el a ZKFC-t készenléti néven.
Parancs : hadoop-daemon.sh start zkfc
Írja be a jps parancsot a DFSZkFailoverController démonok ellenőrzéséhez.
Most ellenőrizze az egyes Namenode állapotát, melyik csomópont aktív vagy melyik készenléti állapotban van az alábbi paranccsal.
Parancs : hdfs haadmin –getServiceState nn1
Ellenőrizze az egyes NameNode állapotokat.
Most ellenőrizze az egyes Namenode állapotokat a webböngészővel.
Nyissa meg a webböngészőt, és írja be az alábbi URL-t.
: 50070
Megmutatja, hogy a névcsomópont aktív vagy készenléti állapotban van-e.
Aktív NameNode.
Nyisson meg egy másik névcsomópont adatait a webböngészővel.
Készenléti Név.
c ++ -ba egyesül
Az Aktív névcsomópontban ölje meg a névcsomópont démont, hogy a Készenléti név csomópont aktív névre változzon.
Írja be az jps-t az Active namenode-ba, és ölje meg a démont.
Parancs: sudo kill -9
Démonok folyamatazonosítója.
A Namenode folyamatazonosító 7606, ölje meg a namenode-ot.
Parancs : Sudo kill -9 7606
Öld meg a Node Node folyamatot
Nyissa meg a két csomópontot a webböngészőn keresztül, és ellenőrizze az állapotot.
Namenode részletek.
NameNode állapot.
Gratulálunk, sikeresen beállította a HDFS magas rendelkezésre állású fürtöt a Hadoopban.
Most, hogy megértette a Hadoop magas rendelkezésre állású fürt architektúráját, nézze meg a az Edureka, egy megbízható online tanulási vállalat, amelynek több mint 250 000 elégedett tanulóval rendelkező hálózata elterjedt az egész világon. Az Edureka Big Data Hadoop tanúsító tanfolyam segít a tanulóknak a HDFS, a fonal, a MapReduce, a Pig, a Hive, a HBase, az Oozie, a Flume és a Sqoop szakértőivé válni, valós idejű felhasználási esetek felhasználásával a kiskereskedelem, a szociális média, a repülés, az idegenforgalom és a pénzügy területén.
Van egy kérdésünk? Kérjük, említse meg a megjegyzések részben, és mi kapcsolatba lépünk Önnel.
ablak._LQ_ = ablak._LQ_ || {}
lqQuizModal (ablak, dokumentum, {quizId: ’XAIVp8 ′, baseUrl:’ https: //quiz.leadquizzes.com/’,trigger: ’exit’}, _LQ_)