logo

Čo je Apache ZooKeeper?

Ošetrovateľ v zoo je distribuovaná koordinačná služba s otvoreným zdrojom pre distribuované aplikácie. Odhaľuje jednoduchú sadu primitív na implementáciu služieb vyššej úrovne pre synchronizáciu, údržbu konfigurácie a zoskupovanie a pomenovanie.

V distribuovanom systéme existuje viacero uzlov alebo strojov, ktoré musia medzi sebou komunikovať a koordinovať svoje akcie. ZooKeeper poskytuje spôsob, ako zabezpečiť, aby si tieto uzly boli navzájom vedomé a mohli koordinovať svoje akcie. Robí to udržiavaním hierarchického stromu dátových uzlov tzv Znodes , ktorý možno použiť na ukladanie a získavanie údajov a udržiavanie informácií o stave. ZooKeeper poskytuje sadu primitív, ako sú zámky, bariéry a fronty, ktoré možno použiť na koordináciu akcií uzlov v distribuovanom systéme. Poskytuje tiež funkcie, ako je voľba lídra, núdzové prepnutie a obnova, ktoré môžu pomôcť zabezpečiť odolnosť systému voči zlyhaniam. ZooKeeper je široko používaný v distribuovaných systémoch ako Hadoop, Kafka a HBase a stal sa základnou súčasťou mnohých distribuovaných aplikácií.



Prečo to potrebujeme?

  • Koordinačné služby : Integrácia/komunikácia služieb v distribuovanom prostredí.
  • Koordinačné služby sú zložité. Sú obzvlášť náchylné na chyby, ako sú podmienky pretekov a uviaznutie.
  • Pretekárska kondícia -Dva alebo viac systémov, ktoré sa snažia vykonať nejakú úlohu.
  • Uviaznutia – Dve alebo viac operácií na seba čakajú.
  • Aby bola koordinácia medzi distribuovanými prostrediami jednoduchá, vývojári prišli s nápadom nazvaným zookeeper, aby nemuseli zbavovať distribuované aplikácie zodpovednosti za implementáciu koordinačných služieb od nuly.

Čo je distribuovaný systém?

  • Viaceré počítačové systémy pracujú na jednom probléme.
  • Ide o sieť, ktorá pozostáva z autonómnych počítačov, ktoré sú prepojené pomocou distribuovaného middleware.
  • Kľúčové vlastnosti : Súbežné, zdieľanie zdrojov, nezávislé, globálne, väčšia odolnosť voči chybám a pomer cena/výkon je oveľa lepší.
  • Kľúčový cieľ s: Transparentnosť, spoľahlivosť, výkon, škálovateľnosť.
  • Výzvy : Zabezpečenie, chyba, koordinácia a zdieľanie zdrojov.

Koordinačná výzva

  • Prečo je koordinácia v distribuovanom systéme ťažkým problémom?
  • Riadenie koordinácie alebo konfigurácie pre distribuovanú aplikáciu, ktorá má veľa systémov.
  • Hlavný uzol, kde sú uložené údaje klastra.
  • Pracovné uzly alebo podriadené uzly získavajú údaje z tohto hlavného uzla.
  • jediný bod zlyhania.
  • synchronizácia nie je jednoduchá.
  • Je potrebný starostlivý návrh a implementácia.

Apache Zookeeper

Apache Zookeeper je distribuovaná koordinačná služba s otvoreným zdrojom pre distribuované systémy. Poskytuje centrálne miesto pre distribuované aplikácie na ukladanie údajov, vzájomnú komunikáciu a koordináciu činností. Zookeeper sa používa v distribuovaných systémoch na koordináciu distribuovaných procesov a služieb. Poskytuje jednoduchý dátový model so stromovou štruktúrou, jednoduché API a distribuovaný protokol na zabezpečenie konzistencie a dostupnosti dát. Zookeeper je navrhnutý tak, aby bol vysoko spoľahlivý a odolný voči chybám a zvládol vysokú úroveň priepustnosti čítania a zápisu.

Zookeeper je implementovaný v jazyku Java a je široko používaný v distribuovaných systémoch, najmä v ekosystéme Hadoop. Je to projekt Apache Software Foundation a je vydaný pod licenciou Apache License 2.0.

Architektúra Zookeepera

Ošetrovateľské služby

Ošetrovateľské služby



Architektúra ZooKeeper pozostáva z hierarchie uzlov nazývaných znodes, usporiadaných do stromovej štruktúry. Každý uzol môže ukladať údaje a má sadu povolení, ktoré riadia prístup k uzlu. Znody sú organizované v hierarchickom mennom priestore, podobne ako systém súborov. V koreni hierarchie je koreňový uzol a všetky ostatné uzly sú potomkami koreňového uzla. Hierarchia je podobná hierarchii súborového systému, kde každý uzol môže mať deti a vnúčatá atď.

Dôležité komponenty v Zookeeper

ZooKeeper služby

služby ZooKeeper

  • Vodca a nasledovník
  • Vyžiadajte si procesor – Aktívny v Leader Node a je zodpovedný za spracovanie žiadostí o zápis. Po spracovaní odošle zmeny do nasledovných uzlov
  • Atómové vysielanie – Prítomné v uzloch vedúceho aj sledovacieho uzla. Je zodpovedný za odosielanie zmien do iných Uzlov.
  • Databázy v pamäti (Replikované databázy) – Zodpovedá za ukladanie údajov v správcovi zoologickej záhrady. Každý uzol obsahuje svoje vlastné databázy. Údaje sa tiež zapisujú do súborového systému, ktorý poskytuje možnosť obnovy v prípade akýchkoľvek problémov s klastrom.

Ostatné komponenty

  • Zákazník – Jeden z uzlov v našom klastri distribuovaných aplikácií. Prístup k informáciám zo servera. Každý klient pošle správu na server, aby server vedel, že klient žije.
  • Server – Poskytuje klientovi všetky služby. Dáva klientovi potvrdenie.
  • Súbor – Skupina serverov Zookeeper. Minimálny počet uzlov, ktoré sú potrebné na vytvorenie súboru, sú 3.

Dátový model zookeepera

Dátový model ZooKeeper

Dátový model ZooKeeper



V Zookeeper sú údaje uložené v hierarchickom mennom priestore, podobne ako v systéme súborov. Každý uzol v mennom priestore sa nazýva Znode a môže ukladať údaje a mať potomkov. Znody sú podobné súborom a adresárom v súborovom systéme. Zookeeper poskytuje jednoduché API na vytváranie, čítanie, písanie a odstraňovanie Znodes. Poskytuje tiež mechanizmy na zisťovanie zmien údajov uložených v Znodes, ako sú hodinky a spúšťače. Znody udržiavajú štruktúru štatistík, ktorá zahŕňa: číslo verzie, ACL, časovú značku, dĺžku údajov

Typy Znodov :

  • Vytrvalosť : Aktívne, kým nebudú explicitne odstránené.
  • Pominuteľné : Aktívne, kým nebude pripojenie klienta aktívne.
  • Sekvenčné : buď perzistentné alebo efemérne.

Prečo potrebujeme ZooKeeper v Hadoop?

Zookeeper sa používa na správu a koordináciu uzlov v klastri Hadoop, vrátane NameNode, DataNode a ResourceManager. V klastri Hadoop pomáha Zookeeper:

  • Udržiavanie konfiguračných informácií: Zookeeper ukladá konfiguračné informácie pre klaster Hadoop vrátane umiestnenia NameNode, DataNode a ResourceManager.
  • Spravujte stav klastra: Zookeeper sleduje stav uzlov v klastri Hadoop a dá sa použiť na zistenie, kedy uzol zlyhal alebo sa stal nedostupným.
  • Koordinujte distribuované procesy: Zookeeper možno použiť na koordináciu distribuovaných procesov, ako je plánovanie úloh a prideľovanie zdrojov, medzi uzlami v klastri Hadoop.

Zookeeper pomáha zabezpečiť dostupnosť a spoľahlivosť klastra Hadoop poskytovaním centrálnej koordinačnej služby pre uzly v klastri.

Ako ZooKeeper v Hadoop funguje?

ZooKeeper funguje ako distribuovaný súborový systém a odhaľuje jednoduchú sadu rozhraní API, ktoré umožňujú klientom čítať a zapisovať údaje do systému súborov. Svoje údaje ukladá do stromovej štruktúry nazývanej znode, ktorú si možno predstaviť ako súbor alebo adresár v tradičnom súborovom systéme. ZooKeeper používa konsenzuálny algoritmus, aby zabezpečil, že všetky jeho servery budú mať konzistentný pohľad na údaje uložené v Znodes. To znamená, že ak klient zapíše údaje do uzla, tieto údaje sa replikujú na všetky ostatné servery v súbore ZooKeeper.

Jednou z dôležitých vlastností ZooKeeper je jeho schopnosť podporovať pojem hodinky. Hodinky umožňujú klientovi zaregistrovať sa na upozornenia, keď sa zmenia údaje uložené v uzle. To môže byť užitočné pri monitorovaní zmien údajov uložených v ZooKeeper a reagovaní na tieto zmeny v distribuovanom systéme.

V Hadoop sa ZooKeeper používa na rôzne účely, vrátane:

  • Ukladanie informácií o konfigurácii: ZooKeeper sa používa na ukladanie informácií o konfigurácii, ktoré zdieľajú viaceré komponenty Hadoop. Môže sa napríklad použiť na ukladanie umiestnení NameNodes v klastri Hadoop alebo adries uzlov JobTracker.
  • Poskytovanie distribuovanej synchronizácie: ZooKeeper sa používa na koordináciu aktivít rôznych komponentov Hadoop a na zabezpečenie ich vzájomnej spolupráce konzistentným spôsobom. Môže sa napríklad použiť na zabezpečenie toho, aby bol v klastri Hadoop aktívny iba jeden NameNode.
  • Údržba názvov: ZooKeeper sa používa na udržiavanie centralizovanej služby názvov pre komponenty Hadoop. To môže byť užitočné na identifikáciu a lokalizáciu zdrojov v distribuovanom systéme.

ZooKeeper je základnou zložkou Hadoopu a zohráva kľúčovú úlohu pri koordinácii činnosti jeho rôznych podzložiek.

Čítanie a písanie v Apache Zookeeper

ZooKeeper poskytuje jednoduché a spoľahlivé rozhranie na čítanie a zápis údajov. Údaje sú uložené v hierarchickom mennom priestore, podobne ako systém súborov, s uzlami nazývanými znodes. Každý uzol môže ukladať údaje a mať podradené uzly. Klienti ZooKeeper môžu čítať a zapisovať údaje do týchto uzlov pomocou metód getData() a setData(). Tu je príklad čítania a zápisu údajov pomocou rozhrania Java API ZooKeeper:

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

>

mediálny prenos

>

Relácia a hodinky

Relácia

  • Požiadavky v relácii sa vykonávajú v poradí FIFO.
  • Akonáhle je relácia nadviazaná, potom ID relácie je pridelená klientovi.
  • Klient odošle tlkot srdca aby relácia zostala v platnosti
  • časový limit relácie je zvyčajne vyjadrený v milisekundách

Hodinky

  • Hodinky sú mechanizmy, pomocou ktorých môžu klienti dostávať upozornenia o zmenách v Zookeeper
  • Klient môže sledovať pri čítaní konkrétneho uzla.
  • Zmeny uzlov sú úpravy údajov spojených s uzlami alebo zmeny v potomkoch uzla.
  • Hodinky sa spustia iba raz.
  • Ak platnosť relácie vyprší, hodinky sa tiež odstránia.