logo

Kaj je Apache ZooKeeper?

Oskrbnik živalskega vrta je porazdeljena, odprtokodna koordinacijska storitev za porazdeljene aplikacije. Izpostavlja preprost nabor primitivov za implementacijo storitev višje ravni za sinhronizacijo, vzdrževanje konfiguracije ter skupino in poimenovanje.

V porazdeljenem sistemu obstaja več vozlišč ali strojev, ki morajo med seboj komunicirati in usklajevati svoja dejanja. ZooKeeper ponuja način za zagotovitev, da se ta vozlišča med seboj zavedajo in lahko uskladijo svoja dejanja. To naredi tako, da vzdržuje hierarhično drevo podatkovnih vozlišč, imenovanih Znodes , ki se lahko uporablja za shranjevanje in pridobivanje podatkov ter vzdrževanje informacij o stanju. ZooKeeper ponuja nabor primitivov, kot so ključavnice, pregrade in čakalne vrste, ki jih je mogoče uporabiti za usklajevanje dejanj vozlišč v porazdeljenem sistemu. Zagotavlja tudi funkcije, kot so izbira vodilnega, samodejni preklop in obnovitev, ki lahko pomagajo zagotoviti, da je sistem odporen na napake. ZooKeeper se pogosto uporablja v porazdeljenih sistemih, kot so Hadoop, Kafka in HBase, in je postal bistvena komponenta številnih porazdeljenih aplikacij.



Zakaj ga potrebujemo?

  • Koordinacijske storitve : Integracija/komunikacija storitev v porazdeljenem okolju.
  • Koordinacijske storitve so zapletene, da bi jih dobili prav. Še posebej so nagnjeni k napakam, kot so pogoji tekmovanja in zastoji.
  • Stanje dirke - Dva ali več sistemov poskuša opraviti neko nalogo.
  • Zastoji – Dve ali več operacij čakajo druga na drugo.
  • Da bi olajšali koordinacijo med porazdeljenimi okolji, so se razvijalci domislili ideje, imenovane zookeeper, tako da jim porazdeljenih aplikacij ni treba razbremeniti odgovornosti izvajanja koordinacijskih storitev iz nič.

Kaj je porazdeljeni sistem?

  • Več računalniških sistemov, ki delajo na enem problemu.
  • Gre za omrežje, ki je sestavljeno iz avtonomnih računalnikov, ki so povezani s porazdeljeno vmesno programsko opremo.
  • Ključne funkcije : Sočasno, deljenje virov, neodvisno, globalno, večja toleranca napak in razmerje med ceno in zmogljivostjo je veliko boljše.
  • Ključni cilj s: preglednost, zanesljivost, zmogljivost, razširljivost.
  • Izzivi : varnost, napake, koordinacija in skupna raba virov.

Usklajevalni izziv

  • Zakaj je koordinacija v porazdeljenem sistemu težka težava?
  • Koordinacija ali upravljanje konfiguracije za porazdeljeno aplikacijo, ki ima veliko sistemov.
  • Glavno vozlišče, kjer so shranjeni podatki gruče.
  • Delovna vozlišča ali podrejena vozlišča dobijo podatke iz tega glavnega vozlišča.
  • ena točka odpovedi.
  • sinhronizacija ni enostavna.
  • Potrebna sta skrbno načrtovanje in izvedba.

Apache Zookeeper

Apache Zookeeper je porazdeljena odprtokodna koordinacijska storitev za porazdeljene sisteme. Zagotavlja osrednje mesto za porazdeljene aplikacije za shranjevanje podatkov, medsebojno komunikacijo in usklajevanje dejavnosti. Zookeeper se uporablja v porazdeljenih sistemih za usklajevanje porazdeljenih procesov in storitev. Zagotavlja preprost, drevesno strukturiran podatkovni model, preprost API in porazdeljen protokol za zagotavljanje doslednosti in razpoložljivosti podatkov. Zookeeper je zasnovan tako, da je zelo zanesljiv in odporen na napake ter zmore visoke stopnje prepustnosti branja in pisanja.

Zookeeper je implementiran v Javi in ​​se pogosto uporablja v porazdeljenih sistemih, zlasti v ekosistemu Hadoop. Je projekt Apache Software Foundation in je izdan pod licenco Apache 2.0.

Arhitektura Zookeeperja

Storitve oskrbnika živalskega vrta

Storitve oskrbnika živalskega vrta



Arhitektura ZooKeeper je sestavljena iz hierarhije vozlišč, imenovanih znodes, organiziranih v drevesni strukturi. Vsako znode lahko shranjuje podatke in ima niz dovoljenj, ki nadzorujejo dostop do znode. Zode so organizirane v hierarhičnem imenskem prostoru, podobnem datotečnemu sistemu. V korenu hierarhije je korensko vozlišče, vsa druga vozlišča pa so otroci korenskega vozlišča. Hierarhija je podobna hierarhiji datotečnega sistema, kjer ima lahko vsako znode otroke in vnuke itd.

Pomembne komponente v Zookeeperju

Storitve ZooKeeper

Storitve ZooKeeper

  • Vodja in sledilec
  • Procesor zahtev – Aktiven v Leader Node in je odgovoren za obdelavo zahtev za pisanje. Po obdelavi pošlje spremembe sledilnim vozliščem
  • Atomska oddaja – Prisoten v vodilnem vozlišču in sledilnem vozlišču. Odgovoren je za pošiljanje sprememb drugim vozliščem.
  • Baze podatkov v pomnilniku (Podvojene baze podatkov) - odgovoren je za shranjevanje podatkov v oskrbniku živalskega vrta. Vsako vozlišče vsebuje svoje baze podatkov. Podatki se prav tako zapišejo v datotečni sistem, kar omogoča obnovitev v primeru težav z gručo.

Druge komponente

  • Stranka – Eno od vozlišč v naši porazdeljeni gruči aplikacij. Dostopajte do informacij s strežnika. Vsak odjemalec pošlje strežniku sporočilo, da strežnik ve, da je odjemalec živ.
  • Strežnik – Zagotavlja vse storitve za stranko. Stranki daje priznanje.
  • Ansambel – Skupina strežnikov Zookeeper. Najmanjše število vozlišč, potrebnih za oblikovanje niza, je 3.

Podatkovni model Zookeeper

Podatkovni model ZooKeeper

Podatkovni model ZooKeeper



V Zookeeperju so podatki shranjeni v hierarhičnem imenskem prostoru, podobnem datotečnemu sistemu. Vsako vozlišče v imenskem prostoru se imenuje Znode in lahko shranjuje podatke in ima otroke. Znode so podobne datotekam in imenikom v datotečnem sistemu. Zookeeper ponuja preprost API za ustvarjanje, branje, pisanje in brisanje Znodes. Zagotavlja tudi mehanizme za zaznavanje sprememb podatkov, shranjenih v Znodes, kot so ure in sprožilci. Znodes vzdržuje strukturo statistike, ki vključuje: številko različice, ACL, časovni žig, dolžino podatkov

Vrste Znodes :

  • Vztrajnost : živi, ​​dokler niso izrecno izbrisani.
  • Efemerno : Aktivno, dokler povezava odjemalca ni živa.
  • Zaporedna : Vztrajno ali kratkotrajno.

Zakaj potrebujemo ZooKeeper v Hadoopu?

Zookeeper se uporablja za upravljanje in usklajevanje vozlišč v gruči Hadoop, vključno z NameNode, DataNode in ResourceManager. V gruči Hadoop Zookeeper pomaga pri:

  • Vzdrževanje konfiguracijskih informacij: Zookeeper shrani konfiguracijske informacije za gručo Hadoop, vključno z lokacijo NameNode, DataNode in ResourceManager.
  • Upravljajte stanje gruče: Zookeeper sledi stanju vozlišč v gruči Hadoop in se lahko uporablja za odkrivanje, kdaj je vozlišče odpovedalo ali postalo nedosegljivo.
  • Usklajevanje porazdeljenih procesov: Zookeeper se lahko uporablja za usklajevanje porazdeljenih procesov, kot sta razporejanje opravil in dodeljevanje virov, po vozliščih v gruči Hadoop.

Zookeeper pomaga zagotoviti razpoložljivost in zanesljivost gruče Hadoop z zagotavljanjem centralne koordinacijske storitve za vozlišča v gruči.

Kako deluje ZooKeeper v Hadoopu?

ZooKeeper deluje kot porazdeljen datotečni sistem in izpostavlja preprost nabor API-jev, ki strankam omogočajo branje in pisanje podatkov v datotečni sistem. Svoje podatke hrani v drevesni strukturi, imenovani znode, ki si jo lahko predstavljamo kot datoteko ali imenik v tradicionalnem datotečnem sistemu. ZooKeeper uporablja algoritem soglasja, da zagotovi, da imajo vsi njegovi strežniki dosleden pogled na podatke, shranjene v Znodes. To pomeni, da če odjemalec zapiše podatke v znode, bodo ti podatki podvojeni na vse druge strežnike v skupini ZooKeeper.

Ena od pomembnih lastnosti ZooKeeperja je njegova zmožnost podpiranja pojma ure. Ura omogoča odjemalcu, da se registrira za obvestila, ko se spremenijo podatki, shranjeni v znode. To je lahko uporabno za spremljanje sprememb podatkov, shranjenih v ZooKeeperju, in odziv na te spremembe v porazdeljenem sistemu.

V Hadoopu se ZooKeeper uporablja za različne namene, vključno z:

  • Shranjevanje konfiguracijskih informacij: ZooKeeper se uporablja za shranjevanje konfiguracijskih informacij, ki si jih deli več komponent Hadoop. Lahko se na primer uporabi za shranjevanje lokacij NameNodes v gruči Hadoop ali naslovov vozlišč JobTracker.
  • Zagotavljanje porazdeljene sinhronizacije: ZooKeeper se uporablja za usklajevanje dejavnosti različnih komponent Hadoop in zagotavljanje, da delujejo skupaj na dosleden način. Na primer, lahko se uporabi za zagotovitev, da je v gruči Hadoop hkrati aktivno samo eno NameNode.
  • Ohranjanje poimenovanja: ZooKeeper se uporablja za vzdrževanje centralizirane storitve poimenovanja komponent Hadoop. To je lahko koristno za prepoznavanje in lociranje virov v porazdeljenem sistemu.

ZooKeeper je bistvena komponenta Hadoopa in igra ključno vlogo pri usklajevanju dejavnosti njegovih različnih podkomponent.

Branje in pisanje v Apache Zookeeper

ZooKeeper ponuja preprost in zanesljiv vmesnik za branje in pisanje podatkov. Podatki so shranjeni v hierarhičnem imenskem prostoru, podobnem datotečnemu sistemu, z vozlišči, imenovanimi znodes. Vsako znode lahko shranjuje podatke in ima podrejene znode. Odjemalci ZooKeeper lahko berejo in pišejo podatke v te znode z uporabo metod getData() oziroma setData(). Tukaj je primer branja in pisanja podatkov z uporabo ZooKeeper Java API:

Java




// Connect to the ZooKeeper ensemble> ZooKeeper zk =>new> ZooKeeper(>'localhost:2181'>,>3000>,>null>);> // Write data to the znode '/myZnode'> String path =>'/myZnode'>;> String data =>'hello world'>;> zk.create(path, data.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);> // Read data from the znode '/myZnode'> byte>[] bytes = zk.getData(path,>false>,>null>);> String readData =>new> String(bytes);> // Prints 'hello world'> System.out.println(readData);> // Closing the connection> // to the ZooKeeper ensemble> zk.close();>

>

>

Python3




from> kazoo.client>import> KazooClient> # Connect to ZooKeeper> zk>=> KazooClient(hosts>=>'localhost:2181'>)> zk.start()> # Create a node with some data> zk.ensure_path(>'/gfg_node'>)> zk.>set>(>'/gfg_node'>, b>'some_data'>)> # Read the data from the node> data, stat>=> zk.get(>'/gfg_node'>)> print>(data)> # Stop the connection to ZooKeeper> zk.stop()>

>

notranje delovanje hashmapa

>

Seja in ure

Seja

  • Zahteve v seji se izvajajo v vrstnem redu FIFO.
  • Ko je seja vzpostavljena, je ID seje je dodeljen stranki.
  • Stranka pošlje srčni utripi da bo seja veljavna
  • časovna omejitev seje je običajno predstavljena v milisekundah

Ure

  • Ure so mehanizmi, s katerimi stranke prejemajo obvestila o spremembah v Zookeeperju
  • Odjemalec lahko gleda med branjem določene znode.
  • Spremembe znode so spremembe podatkov, povezanih z znode ali spremembe v podrejenih znode.
  • Ure se sprožijo samo enkrat.
  • Če je seja potekla, se odstranijo tudi ure.