logo

Co to jest Apache ZooKeeper?

Opiekun zoo to rozproszona usługa koordynacyjna typu open source dla aplikacji rozproszonych. Udostępnia prosty zestaw prymitywów do implementowania usług wyższego poziomu w zakresie synchronizacji, konserwacji konfiguracji oraz grup i nazewnictwa.

W systemie rozproszonym istnieje wiele węzłów lub maszyn, które muszą się ze sobą komunikować i koordynować swoje działania. ZooKeeper zapewnia sposób zapewnienia, że ​​te węzły są sobie wzajemnie świadome i mogą koordynować swoje działania. Czyni to poprzez utrzymywanie hierarchicznego drzewa węzłów danych tzw Znody , które mogą być używane do przechowywania i pobierania danych oraz utrzymywania informacji o stanie. ZooKeeper zapewnia zestaw prymitywów, takich jak blokady, bariery i kolejki, których można używać do koordynowania działań węzłów w systemie rozproszonym. Zapewnia także takie funkcje, jak wybór lidera, przełączanie awaryjne i odzyskiwanie, które mogą pomóc zapewnić odporność systemu na awarie. ZooKeeper jest szeroko stosowany w systemach rozproszonych, takich jak Hadoop, Kafka i HBase, i stał się niezbędnym składnikiem wielu aplikacji rozproszonych.



Dlaczego tego potrzebujemy?

  • Usługi koordynacyjne : Integracja/komunikacja usług w środowisku rozproszonym.
  • Usługi koordynacyjne są trudne do prawidłowego wykonania. Są szczególnie podatni na błędy, takie jak warunki wyścigowe i impas.
  • Warunki wyścigu -Dwa lub więcej systemów próbuje wykonać jakieś zadanie.
  • Zakleszczenia – Dwie lub więcej operacji czeka na siebie.
  • Aby ułatwić koordynację pomiędzy środowiskami rozproszonymi, programiści wpadli na pomysł zwany zookeeperem, dzięki któremu nie muszą zwalniać aplikacji rozproszonych z odpowiedzialności za wdrażanie usług koordynacyjnych od zera.

Co to jest system rozproszony?

  • Wiele systemów komputerowych pracujących nad jednym problemem.
  • Jest to sieć składająca się z autonomicznych komputerów połączonych za pomocą rozproszonego oprogramowania pośredniczącego.
  • Kluczowe cechy : Współbieżne, współdzielone zasoby, niezależne, globalne, większa odporność na awarie i stosunek ceny do wydajności jest znacznie lepszy.
  • Kluczowy cel s: Przejrzystość, Niezawodność, Wydajność, Skalowalność.
  • Wyzwania : Bezpieczeństwo, usterka, koordynacja i udostępnianie zasobów.

Wyzwanie koordynacyjne

  • Dlaczego koordynacja w systemie rozproszonym jest trudnym problemem?
  • Koordynacja lub zarządzanie konfiguracją aplikacji rozproszonej, która ma wiele systemów.
  • Węzeł główny, w którym przechowywane są dane klastra.
  • Węzły robocze lub węzły podrzędne pobierają dane z tego węzła głównego.
  • pojedynczy punkt awarii.
  • synchronizacja nie jest łatwa.
  • Konieczne jest staranne zaprojektowanie i wdrożenie.

Strażnik Apaczów

Apache Zookeeper to rozproszona usługa koordynacyjna typu open source dla systemów rozproszonych. Zapewnia rozproszonym aplikacjom centralne miejsce do przechowywania danych, wzajemnej komunikacji i koordynowania działań. Zookeeper jest używany w systemach rozproszonych do koordynowania rozproszonych procesów i usług. Zapewnia prosty model danych o strukturze drzewa, prosty interfejs API i rozproszony protokół, aby zapewnić spójność i dostępność danych. Zookeeper został zaprojektowany tak, aby był wysoce niezawodny i odporny na awarie, a także mógł obsługiwać wysoki poziom przepustowości odczytu i zapisu.

Zookeeper jest zaimplementowany w Javie i jest szeroko stosowany w systemach rozproszonych, szczególnie w ekosystemie Hadoop. Jest to projekt Apache Software Foundation i jest udostępniany na licencji Apache 2.0.

Architektura Zookeepera

Usługi zoologa

Usługi zoologa



Architektura ZooKeepera składa się z hierarchii węzłów zwanych znodes, zorganizowanych w strukturę przypominającą drzewo. Każdy znode może przechowywać dane i posiada zestaw uprawnień kontrolujących dostęp do znode. Znody są zorganizowane w hierarchiczną przestrzeń nazw, podobną do systemu plików. U podstaw hierarchii znajduje się węzeł główny, a wszystkie pozostałe znody są elementami podrzędnymi znode głównego. Hierarchia jest podobna do hierarchii systemu plików, gdzie każdy znode może mieć dzieci i wnuki, i tak dalej.

Ważne komponenty w Zookeeperze

Usługi zookeepera

Usługi zookeepera

  • Lider i naśladowca
  • Procesor żądania – Aktywny w węźle wiodącym i odpowiedzialny za przetwarzanie żądań zapisu. Po przetworzeniu wysyła zmiany do węzłów obserwujących
  • Transmisja atomowa – Występuje zarówno w węźle wiodącym, jak i w węzłach podrzędnych. Odpowiada za przesłanie zmian do innych węzłów.
  • Bazy danych w pamięci (Replikowane bazy danych) – odpowiada za przechowywanie danych u zookeepera. Każdy węzeł zawiera własne bazy danych. Dane zapisywane są także do systemu plików, zapewniając możliwość ich odzyskania w przypadku problemów z klastrem.

Inne komponenty

  • Klient – Jeden z węzłów w naszym rozproszonym klastrze aplikacji. Uzyskaj dostęp do informacji z serwera. Każdy klient wysyła wiadomość do serwera, aby poinformować serwer, że klient żyje.
  • serwer – Świadczy wszystkie usługi dla klienta. Daje klientowi potwierdzenie.
  • Ensemble – Grupa serwerów Zookeeper. Minimalna liczba węzłów wymaganych do utworzenia zespołu wynosi 3.

Model danych zookeepera

Model danych ZooKeepera

Model danych ZooKeepera



W Zookeeperze dane są przechowywane w hierarchicznej przestrzeni nazw, podobnej do systemu plików. Każdy węzeł w przestrzeni nazw nazywany jest Znode i może przechowywać dane i mieć dzieci. Znody są podobne do plików i katalogów w systemie plików. Zookeeper zapewnia prosty interfejs API do tworzenia, czytania, pisania i usuwania Znode. Zapewnia także mechanizmy wykrywania zmian w danych przechowywanych w Znodes, takich jak zegarki i wyzwalacze. Znodes utrzymuje strukturę statystyk obejmującą: numer wersji, listę ACL, znacznik czasu i długość danych

Rodzaje Znodów :

  • Trwałość : Aktywne, dopóki nie zostaną wyraźnie usunięte.
  • Efemeryczny : Aktywny do czasu, aż połączenie klienta będzie aktywne.
  • Sekwencyjny : Albo trwałe, albo efemeryczne.

Dlaczego potrzebujemy ZooKeepera w Hadoop?

Zookeeper służy do zarządzania i koordynowania węzłów w klastrze Hadoop, w tym NameNode, DataNode i ResourceManager. W klastrze Hadoop Zookeeper pomaga:

  • Zachowaj informacje konfiguracyjne: Zookeeper przechowuje informacje konfiguracyjne dla klastra Hadoop, w tym lokalizację NameNode, DataNode i ResourceManager.
  • Zarządzaj stanem klastra: Zookeeper śledzi stan węzłów w klastrze Hadoop i może służyć do wykrywania awarii węzła lub jego niedostępności.
  • Koordynuj procesy rozproszone: Zookeeper może służyć do koordynowania procesów rozproszonych, takich jak planowanie zadań i alokacja zasobów, między węzłami klastra Hadoop.

Zookeeper pomaga zapewnić dostępność i niezawodność klastra Hadoop, zapewniając centralną usługę koordynacji dla węzłów w klastrze.

Jak działa ZooKeeper w Hadoop?

ZooKeeper działa jako rozproszony system plików i udostępnia prosty zestaw interfejsów API, które umożliwiają klientom odczytywanie i zapisywanie danych w systemie plików. Przechowuje swoje dane w drzewiastej strukturze zwanej znode, którą można traktować jako plik lub katalog w tradycyjnym systemie plików. ZooKeeper wykorzystuje algorytm konsensusu, aby zapewnić, że wszystkie jego serwery mają spójny widok danych przechowywanych w Znodes. Oznacza to, że jeśli klient zapisze dane w znode, dane te zostaną zreplikowane na wszystkich pozostałych serwerach w zestawie ZooKeeper.

Jedną z ważnych cech ZooKeepera jest jego zdolność do wspierania pojęcia zegarka. Zegarek umożliwia klientowi zarejestrowanie się w celu otrzymywania powiadomień w przypadku zmiany danych przechowywanych w znodzie. Może to być przydatne do monitorowania zmian w danych przechowywanych w ZooKeeperze i reagowania na te zmiany w systemie rozproszonym.

W Hadoop ZooKeeper jest używany do różnych celów, w tym:

  • Przechowywanie informacji konfiguracyjnych: ZooKeeper służy do przechowywania informacji konfiguracyjnych współdzielonych przez wiele komponentów Hadoop. Na przykład może służyć do przechowywania lokalizacji NameNodes w klastrze Hadoop lub adresów węzłów JobTracker.
  • Zapewnienie rozproszonej synchronizacji: ZooKeeper służy do koordynowania działań różnych komponentów Hadoop i zapewnienia ich spójnej współpracy. Na przykład może służyć do zapewnienia, że ​​tylko jeden NameNode będzie aktywny w danym momencie w klastrze Hadoop.
  • Utrzymanie nazewnictwa: ZooKeeper służy do utrzymywania scentralizowanej usługi nazewnictwa dla komponentów Hadoop. Może to być przydatne do identyfikowania i lokalizowania zasobów w systemie rozproszonym.

ZooKeeper jest niezbędnym składnikiem Hadoopa i odgrywa kluczową rolę w koordynowaniu działania różnych jego podzespołów.

Czytanie i pisanie w Apache Zookeeper

ZooKeeper zapewnia prosty i niezawodny interfejs do odczytu i zapisu danych. Dane są przechowywane w hierarchicznej przestrzeni nazw, podobnej do systemu plików, z węzłami zwanymi znodes. Każdy znode może przechowywać dane i mieć znody potomne. Klienci ZooKeeper mogą odczytywać i zapisywać dane w tych znodach, używając odpowiednio metod getData() i setData(). Oto przykład odczytu i zapisu danych przy użyciu API ZooKeeper Java:

Jawa




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

>

usuwanie ostatniego zatwierdzenia gi

>

Sesja i zegarki

Sesja

  • Żądania w sesji realizowane są w kolejności FIFO.
  • Po ustanowieniu sesji następuje identyfikator sesji jest przypisany do klienta.
  • Klient wysyła bicie serca aby sesja była ważna
  • limit czasu sesji jest zwykle wyrażany w milisekundach

Zegarki

  • Zegarki to mechanizmy umożliwiające klientom otrzymywanie powiadomień o zmianach w Zookeeperze
  • Klient może oglądać podczas czytania konkretnego znode.
  • Zmiany Znode to modyfikacje danych powiązanych z znodes lub zmiany w elementach potomnych znode.
  • Zegarki uruchamiane są tylko raz.
  • Jeśli sesja wygaśnie, zegarki również zostaną usunięte.