logo

Co je Apache ZooKeeper?

Ošetřovatel zoo je distribuovaná open-source koordinační služba pro distribuované aplikace. Odhaluje jednoduchou sadu primitiv pro implementaci služeb vyšší úrovně pro synchronizaci, údržbu konfigurace a seskupování a pojmenování.

V distribuovaném systému existuje více uzlů nebo strojů, které spolu potřebují komunikovat a koordinovat své akce. ZooKeeper poskytuje způsob, jak zajistit, aby si tyto uzly byly navzájem vědomy a mohly koordinovat své akce. Dělá to udržováním hierarchického stromu volaných datových uzlů Znodes , který lze použít k ukládání a načítání dat a udržování informací o stavu. ZooKeeper poskytuje sadu primitiv, jako jsou zámky, bariéry a fronty, které lze použít ke koordinaci akcí uzlů v distribuovaném systému. Poskytuje také funkce, jako je volba vůdce, převzetí služeb při selhání a obnova, které mohou pomoci zajistit odolnost systému vůči selháním. ZooKeeper je široce používán v distribuovaných systémech, jako je Hadoop, Kafka a HBase, a stal se nezbytnou součástí mnoha distribuovaných aplikací.



Proč to potřebujeme?

  • Koordinační služby : Integrace/komunikace služeb v distribuovaném prostředí.
  • Koordinační služby jsou složité. Jsou obzvláště náchylné k chybám, jako jsou závodní podmínky a uváznutí.
  • Závodní podmínky -Dva nebo více systémů se snaží provést nějaký úkol.
  • Zablokování – Dvě nebo více operací na sebe čekají.
  • Aby byla koordinace mezi distribuovanými prostředími snadná, přišli vývojáři s nápadem nazvaným zookeeper, aby nemuseli zbavovat distribuované aplikace odpovědnosti za implementaci koordinačních služeb od nuly.

Co je distribuovaný systém?

  • Více počítačových systémů pracuje na jediném problému.
  • Jedná se o síť, která se skládá z autonomních počítačů, které jsou propojeny pomocí distribuovaného middlewaru.
  • Klíčové vlastnosti : Souběžné, sdílení zdrojů, nezávislé, globální, větší odolnost proti chybám a poměr cena/výkon je mnohem lepší.
  • Klíčový cíl s: Transparentnost, spolehlivost, výkon, škálovatelnost.
  • Výzvy : Zabezpečení, chyba, koordinace a sdílení zdrojů.

Koordinační výzva

  • Proč je koordinace v distribuovaném systému těžkým problémem?
  • Správa koordinace nebo konfigurace pro distribuovanou aplikaci, která má mnoho systémů.
  • Hlavní uzel, kde jsou uložena data clusteru.
  • Pracovní uzly nebo podřízené uzly získávají data z tohoto hlavního uzlu.
  • jediný bod selhání.
  • synchronizace není jednoduchá.
  • Je zapotřebí pečlivého návrhu a implementace.

Apache Zookeeper

Apache Zookeeper je distribuovaná open-source koordinační služba pro distribuované systémy. Poskytuje centrální místo pro distribuované aplikace pro ukládání dat, vzájemnou komunikaci a koordinaci činností. Zookeeper se používá v distribuovaných systémech ke koordinaci distribuovaných procesů a služeb. Poskytuje jednoduchý, stromově strukturovaný datový model, jednoduché API a distribuovaný protokol pro zajištění konzistence a dostupnosti dat. Zookeeper je navržen tak, aby byl vysoce spolehlivý a odolný proti chybám a zvládá vysokou úroveň propustnosti čtení a zápisu.

Zookeeper je implementován v Javě a je široce používán v distribuovaných systémech, zejména v ekosystému Hadoop. Je to projekt Apache Software Foundation a je vydán pod licencí Apache 2.0.

Architektura Zookeeper

Služby chovatelů v zoo

Služby chovatelů v zoo



Architektura ZooKeeper se skládá z hierarchie uzlů zvaných znodes, organizovaných do stromové struktury. Každý uzel může ukládat data a má sadu oprávnění, která řídí přístup k uzlu. Znody jsou organizovány v hierarchickém jmenném prostoru, podobném systému souborů. V kořenu hierarchie je kořenový uzel a všechny ostatní uzly jsou potomky kořenového uzlu. Hierarchie je podobná hierarchii souborového systému, kde každý uzel může mít děti a vnoučata a tak dále.

Důležité komponenty v Zookeeper

služby ZooKeeper

Služby ZooKeeper

  • Vůdce a následovník
  • Vyžádejte si procesor – Aktivní v Leader Node a je zodpovědný za zpracování požadavků na zápis. Po zpracování odešle změny do sledovacích uzlů
  • Atomové vysílání – Přítomno v uzlu vodícího i sledovacího uzlu. Je odpovědný za odesílání změn do jiných uzlů.
  • Databáze v paměti (Replikované databáze) – Zodpovídá za ukládání dat v zookeeperu. Každý uzel obsahuje své vlastní databáze. Data se také zapisují do souborového systému, který umožňuje obnovení v případě jakýchkoli problémů s clusterem.

Ostatní komponenty

  • Klient – Jeden z uzlů v našem clusteru distribuovaných aplikací. Přístup k informacím ze serveru. Každý klient pošle na server zprávu, aby dal serveru vědět, že klient žije.
  • Server – Poskytuje klientovi veškeré služby. Dává klientovi potvrzení.
  • Soubor – Skupina serverů Zookeeper. Minimální počet uzlů, které jsou nutné k vytvoření souboru, jsou 3.

Datový model Zookeeper

Datový model ZooKeeper

Datový model ZooKeeper



V Zookeeper jsou data uložena v hierarchickém jmenném prostoru, podobném systému souborů. Každý uzel ve jmenném prostoru se nazývá Znode a může ukládat data a mít potomky. Znody jsou podobné souborům a adresářům v systému souborů. Zookeeper poskytuje jednoduché API pro vytváření, čtení, zápis a mazání Znodes. Poskytuje také mechanismy pro detekci změn dat uložených ve Znodech, jako jsou hodinky a spouštěče. Znody udržují strukturu statistik, která zahrnuje: číslo verze, ACL, časové razítko, délku dat

Typy Znodů :

  • Vytrvalost : Živé, dokud nebudou explicitně smazány.
  • Efemérní : Aktivní, dokud není připojení klienta aktivní.
  • Sekvenční : Trvalé nebo pomíjivé.

Proč potřebujeme ZooKeeper v Hadoopu?

Zookeeper se používá ke správě a koordinaci uzlů v clusteru Hadoop, včetně NameNode, DataNode a ResourceManager. V clusteru Hadoop Zookeeper pomáhá:

  • Udržovat konfigurační informace: Zookeeper ukládá konfigurační informace pro cluster Hadoop, včetně umístění NameNode, DataNode a ResourceManager.
  • Správa stavu clusteru: Zookeeper sleduje stav uzlů v clusteru Hadoop a lze jej použít ke zjištění, kdy uzel selhal nebo se stal nedostupným.
  • Koordinujte distribuované procesy: Zookeeper lze použít ke koordinaci distribuovaných procesů, jako je plánování úloh a alokace zdrojů, napříč uzly v clusteru Hadoop.

Zookeeper pomáhá zajistit dostupnost a spolehlivost clusteru Hadoop poskytováním centrální koordinační služby pro uzly v clusteru.

Jak ZooKeeper v Hadoop funguje?

ZooKeeper funguje jako distribuovaný systém souborů a odhaluje jednoduchou sadu rozhraní API, která klientům umožňují číst a zapisovat data do systému souborů. Svá data ukládá do stromové struktury zvané znode, kterou si lze představit jako soubor nebo adresář v tradičním souborovém systému. ZooKeeper používá konsenzuální algoritmus, aby zajistil, že všechny jeho servery budou mít konzistentní pohled na data uložená v Znodech. To znamená, že pokud klient zapíše data do uzlu, budou tato data replikována na všechny ostatní servery v souboru ZooKeeper.

Jednou z důležitých vlastností ZooKeeperu je jeho schopnost podporovat myšlenku hodinek. Hodinky umožňují klientovi zaregistrovat se pro upozornění, když se změní data uložená v uzlu. To může být užitečné pro sledování změn v datech uložených v ZooKeeper a reakci na tyto změny v distribuovaném systému.

V Hadoop se ZooKeeper používá pro různé účely, včetně:

  • Ukládání konfiguračních informací: ZooKeeper se používá k ukládání konfiguračních informací, které sdílí více komponent Hadoop. Může být například použit k uložení umístění NameNodes v clusteru Hadoop nebo adres uzlů JobTracker.
  • Poskytování distribuované synchronizace: ZooKeeper se používá ke koordinaci činností různých součástí Hadoop a zajišťuje, že spolupracují konzistentním způsobem. Může být například použit k zajištění toho, aby byl v clusteru Hadoop aktivní pouze jeden NameNode.
  • Údržba pojmenování: ZooKeeper se používá k údržbě centralizované služby pojmenování pro komponenty Hadoop. To může být užitečné pro identifikaci a lokalizaci zdrojů v distribuovaném systému.

ZooKeeper je základní složkou Hadoop a hraje klíčovou roli při koordinaci činnosti jejích různých dílčích složek.

Čtení a psaní v Apache Zookeeper

ZooKeeper poskytuje jednoduché a spolehlivé rozhraní pro čtení a zápis dat. Data jsou uložena v hierarchickém jmenném prostoru, podobném systému souborů, s uzly nazývanými znodes. Každý uzel může ukládat data a mít podřízené uzly. Klienti ZooKeeper mohou číst a zapisovat data do těchto uzlů pomocí metod getData() a setData(). Zde je příklad čtení a zápisu dat pomocí ZooKeeper Java API:

Jáva




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

>

linuxový hostitel

>

Relace a hodinky

Zasedání

  • Požadavky v relaci jsou prováděny v pořadí FIFO.
  • Jakmile je relace navázána, pak ID relace je přiřazena klientovi.
  • Klient odešle tlukot srdce aby relace zůstala platná
  • časový limit relace je obvykle udáván v milisekundách

Hodinky

  • Watches jsou mechanismy pro klienty, kteří dostávají upozornění o změnách v Zookeeper
  • Klient může sledovat při čtení konkrétního uzlu.
  • Změny uzlů jsou úpravy dat spojených s uzly nebo změny v potomcích uzlů.
  • Hodinky se spustí pouze jednou.
  • Pokud platnost relace vyprší, hodinky se také odstraní.