logo

Kas yra „Apache ZooKeeper“?

Zoologijos sodo prižiūrėtojas yra paskirstyta atvirojo kodo koordinavimo paslauga paskirstytoms programoms. Jis atskleidžia paprastą primityvų rinkinį, kad būtų galima įdiegti aukštesnio lygio paslaugas sinchronizavimui, konfigūracijos priežiūrai ir grupėms bei pavadinimams.

Paskirstytoje sistemoje yra keli mazgai arba mašinos, kurios turi bendrauti tarpusavyje ir koordinuoti savo veiksmus. „ZooKeeper“ suteikia galimybę užtikrinti, kad šie mazgai žinotų vienas kitą ir galėtų koordinuoti savo veiksmus. Tai daroma palaikydama hierarchinį duomenų mazgų medį, vadinamą Znodes , kuris gali būti naudojamas duomenims saugoti ir gauti bei būsenos informacijai palaikyti. „ZooKeeper“ pateikia primityvų rinkinį, pvz., užraktus, kliūtis ir eiles, kurie gali būti naudojami paskirstytos sistemos mazgų veiksmams koordinuoti. Jame taip pat yra tokių funkcijų, kaip lyderio rinkimai, gedimų perkėlimas ir atkūrimas, kurios gali padėti užtikrinti, kad sistema būtų atspari gedimams. „ZooKeeper“ yra plačiai naudojamas paskirstytose sistemose, tokiose kaip „Hadoop“, „Kafka“ ir „HBase“, ir tapo esminiu daugelio paskirstytų programų komponentu.



Kodėl mums to reikia?

  • Koordinavimo paslaugos : paslaugų integravimas/perdavimas paskirstytoje aplinkoje.
  • Koordinavimo paslaugos yra sudėtingos. Jie ypač linkę į klaidas, tokias kaip lenktynių sąlygos ir aklavietė.
  • Lenktynių būklė - Dvi ar daugiau sistemų bando atlikti kokią nors užduotį.
  • Aklavietės – Viena kitos laukia dvi ar daugiau operacijų.
  • Siekdami palengvinti paskirstytų aplinkų koordinavimą, kūrėjai sugalvojo idėją, vadinamą zookeeper, kad jiems nereikėtų nuo nulio atleisti paskirstytas programas nuo atsakomybės diegti koordinavimo paslaugas.

Kas yra paskirstyta sistema?

  • Kelios kompiuterinės sistemos dirba su viena problema.
  • Tai tinklas, kurį sudaro autonominiai kompiuteriai, sujungti naudojant paskirstytą tarpinę programinę įrangą.
  • Pagrindiniai bruožai : Lygiagretus, dalijamasi ištekliais, nepriklausomas, visuotinis, didesnis atsparumas gedimams, o kainos ir našumo santykis yra daug geresnis.
  • Pagrindinis tikslas s: skaidrumas, patikimumas, našumas, mastelio keitimas.
  • Iššūkiai : saugumas, gedimas, koordinavimas ir dalijimasis ištekliais.

Koordinavimo iššūkis

  • Kodėl koordinavimas paskirstytoje sistemoje yra sudėtinga problema?
  • Paskirstytos programos, kurioje yra daug sistemų, koordinavimas arba konfigūracijos valdymas.
  • Pagrindinis mazgas, kuriame saugomi klasterio duomenys.
  • Darbuotojo mazgai arba pavaldūs mazgai gauna duomenis iš šio pagrindinio mazgo.
  • vienas gedimo taškas.
  • sinchronizuoti nėra lengva.
  • Reikia kruopštaus dizaino ir įgyvendinimo.

Apache zoologijos sodo prižiūrėtojas

„Apache Zookeeper“ yra paskirstyta atvirojo kodo koordinavimo paslauga paskirstytoms sistemoms. Tai yra centrinė vieta paskirstytoms programoms duomenims saugoti, bendrauti tarpusavyje ir koordinuoti veiklą. Zookeeper naudojamas paskirstytose sistemose paskirstytiems procesams ir paslaugoms koordinuoti. Jame pateikiamas paprastas medžio struktūros duomenų modelis, paprasta API ir paskirstytas protokolas, užtikrinantis duomenų nuoseklumą ir prieinamumą. „Zookeeper“ sukurtas taip, kad būtų labai patikimas ir atsparus gedimams, ir gali apdoroti aukštą skaitymo ir rašymo pralaidumą.

„Zookeeper“ įdiegta „Java“ ir plačiai naudojama paskirstytose sistemose, ypač „Hadoop“ ekosistemoje. Tai yra „Apache Software Foundation“ projektas ir išleistas pagal „Apache License 2.0“.

Zoologijos sodo prižiūrėtojo architektūra

Zoologijos sodo prižiūrėtojo paslaugos

Zoologijos sodo prižiūrėtojo paslaugos



„ZooKeeper“ architektūrą sudaro mazgų, vadinamų znodes, hierarchija, sutvarkyta į medį panašią struktūrą. Kiekvienas zmazgas gali saugoti duomenis ir turi leidimų rinkinį, kuris kontroliuoja prieigą prie znode. Zmazgai yra suskirstyti į hierarchinę vardų erdvę, panašią į failų sistemą. Hierarchijos šaknyje yra šaknies zmazgas, o visi kiti zmazgai yra šakninio zmazgo vaikai. Hierarchija panaši į failų sistemos hierarchiją, kur kiekvienas znode gali turėti vaikų ir anūkų ir pan.

Svarbūs Zookeeper komponentai

ZooKeeper paslaugos

ZooKeeper paslaugos

  • Lyderis ir pasekėjas
  • Prašymo procesorius – Aktyvus „Leader Node“ ir yra atsakingas už rašymo užklausų apdorojimą. Po apdorojimo jis siunčia pakeitimus į sekėjų mazgus
  • Atominė transliacija – Yra tiek lyderio, tiek sekėjų mazguose. Ji yra atsakinga už pakeitimų siuntimą į kitus mazgus.
  • Atmintyje esančios duomenų bazės (Pakartotinės duomenų bazės) – ji yra atsakinga už duomenų saugojimą zoologijos sodo prižiūrėtojas. Kiekvienas mazgas turi savo duomenų bazes. Duomenys taip pat įrašomi į failų sistemą, kad būtų galima atkurti bet kokias klasterio problemas.

Kiti komponentai

  • Klientas – Vienas iš mūsų paskirstytų programų klasterio mazgų. Pasiekite informaciją iš serverio. Kiekvienas klientas siunčia žinutę serveriui, kad žinotų, jog klientas gyvas.
  • Serveris – Suteikia klientui visas paslaugas. Suteikia klientui pripažinimą.
  • Ansamblis – Zookeeper serverių grupė. Mažiausias mazgų skaičius, kurio reikia ansambliui sudaryti, yra 3.

Zoologijos sodo prižiūrėtojo duomenų modelis

ZooKeeper duomenų modelis

ZooKeeper duomenų modelis



Programoje „Zookeeper“ duomenys saugomi hierarchinėje vardų erdvėje, panašiai kaip failų sistemoje. Kiekvienas vardų erdvės mazgas vadinamas Znode ir gali saugoti duomenis bei turėti vaikų. Znodai yra panašūs į failus ir katalogus failų sistemoje. „Zookeeper“ teikia paprastą API, skirtą Znodes kurti, skaityti, rašyti ir ištrinti. Jame taip pat pateikiami Znodes saugomų duomenų, pvz., laikrodžių ir trigerių, pasikeitimų aptikimo mechanizmai. Znodes palaiko statistinę struktūrą, kurią sudaro: versijos numeris, ACL, laiko žyma, duomenų ilgis

Znodų tipai :

  • Atkaklumas : gyvi, kol jie bus aiškiai ištrinti.
  • Efemeriškas : Aktyvus tol, kol veiks kliento ryšys.
  • Eilės tvarka : Arba nuolatinis, arba trumpalaikis.

Kodėl mums reikia „ZooKeeper“ sistemoje „Hadoop“?

Zookeeper naudojamas Hadoop klasterio mazgams valdyti ir koordinuoti, įskaitant NameNode, DataNode ir ResourceManager. „Hadoop“ klasteryje „Zookeeper“ padeda:

  • Konfigūracijos informacijos palaikymas: „Zookeeper“ saugo „Hadoop“ klasterio konfigūracijos informaciją, įskaitant „NameNode“, „DataNode“ ir „ResourceManager“ vietą.
  • Tvarkyti klasterio būseną: „Zookeeper“ seka „Hadoop“ klasterio mazgų būseną ir gali būti naudojamas aptikti, kada mazgas sugenda arba tampa nepasiekiamas.
  • Paskirstytų procesų koordinavimas: „Zookeeper“ gali būti naudojamas paskirstytiems procesams, pvz., užduočių planavimui ir išteklių paskirstymui, koordinuoti „Hadoop“ klasterio mazguose.

„Zookeeper“ padeda užtikrinti „Hadoop“ klasterio pasiekiamumą ir patikimumą, teikdama centrinę klasterio mazgų koordinavimo paslaugą.

Kaip veikia „ZooKeeper“ programoje „Hadoop“?

„ZooKeeper“ veikia kaip paskirstyta failų sistema ir atskleidžia paprastą API rinkinį, leidžiantį klientams skaityti ir rašyti duomenis į failų sistemą. Jis saugo savo duomenis į medį panašioje struktūroje, vadinamoje znode, kuri gali būti laikoma failu arba katalogu tradicinėje failų sistemoje. „ZooKeeper“ naudoja konsensuso algoritmą, kad užtikrintų, jog visi jos serveriai nuosekliai matytų duomenis, saugomus Znodes. Tai reiškia, kad jei klientas įrašo duomenis į znode, tie duomenys bus kopijuojami į visus kitus ZooKeeper ansamblio serverius.

Viena iš svarbių „ZooKeeper“ savybių yra jos gebėjimas palaikyti laikrodžio idėją. Laikrodis leidžia klientui užsiregistruoti gauti pranešimus, kai pasikeičia znode saugomi duomenys. Tai gali būti naudinga stebint ZooKeeper saugomų duomenų pakeitimus ir reaguojant į tuos pokyčius paskirstytoje sistemoje.

„Hadoop“ sistemoje „ZooKeeper“ naudojama įvairiems tikslams, įskaitant:

  • Konfigūracijos informacijos saugojimas: „ZooKeeper“ naudojamas konfigūracijos informacijai, kurią bendrina keli „Hadoop“ komponentai, saugoti. Pavyzdžiui, jis gali būti naudojamas saugoti NameNodes vietas Hadoop klasteryje arba JobTracker mazgų adresus.
  • Paskirstyto sinchronizavimo teikimas: „ZooKeeper“ naudojamas įvairių „Hadoop“ komponentų veiklai koordinuoti ir užtikrinti, kad jie nuosekliai veiktų kartu. Pavyzdžiui, jis gali būti naudojamas siekiant užtikrinti, kad „Hadoop“ klasteryje vienu metu būtų aktyvus tik vienas „NameNode“.
  • Vardų suteikimo palaikymas: „ZooKeeper“ naudojamas centralizuotai „Hadoop“ komponentų pavadinimo paslaugai palaikyti. Tai gali būti naudinga nustatant ir randant išteklius paskirstytoje sistemoje.

„ZooKeeper“ yra esminis „Hadoop“ komponentas ir atlieka lemiamą vaidmenį koordinuojant įvairių jos sudedamųjų dalių veiklą.

Skaitymas ir rašymas Apache Zookeeper

„ZooKeeper“ suteikia paprastą ir patikimą duomenų skaitymo ir rašymo sąsają. Duomenys saugomi hierarchinėje vardų erdvėje, panašioje į failų sistemą, su mazgais, vadinamais znodes. Kiekvienas zmazgas gali saugoti duomenis ir turėti antrinius zmazgus. „ZooKeeper“ klientai gali nuskaityti ir įrašyti duomenis į šiuos mazgus naudodami getData() ir setData() metodus. Čia yra duomenų skaitymo ir rašymo naudojant ZooKeeper Java API pavyzdys:

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

>

kas yra prologas

>

Sesija ir laikrodžiai

Sesija

  • Užklausos sesijoje vykdomos FIFO tvarka.
  • Kai sesija yra nustatyta, tada Sesijos ID yra priskirtas klientui.
  • Klientas siunčia širdies plakimai kad seansas galiotų
  • seanso skirtasis laikas paprastai nurodomas milisekundėmis

Laikrodžiai

  • Laikrodžiai yra mechanizmai, leidžiantys klientams gauti pranešimus apie Zookeeper pakeitimus
  • Klientas gali žiūrėti skaitydamas tam tikrą znode.
  • Zmazgų pakeitimai yra su zmazgais susijusių duomenų modifikacijos arba zmazgo antrinių dalių pokyčiai.
  • Laikrodžiai suveikia tik vieną kartą.
  • Jei seansas pasibaigia, laikrodžiai taip pat pašalinami.