Video: Birds of a Feather: Apache HBase & Apache Phoenix 2024
Zookeeper este un cluster distribuit de servere care oferă în mod colectiv servicii de coordonare și sincronizare fiabile pentru aplicațiile clusterate. Desigur, numele "Zookeeper" poate părea la început o alegere ciudată, dar când înțelegeți ce face pentru un cluster HBase, puteți vedea logica din spatele acestuia. Când construiți și depanați aplicații distribuite "este o grădină zoologică acolo", așa că ar trebui să puneți Zookeeper în echipă.
->Clustele HBase pot fi uriașe și coordonarea operațiunilor MasterServers, RegionServers și clienților poate fi o sarcină descurajantă, dar acesta este locul în care Zookeeper intră în imagine. Ca și în HBase, clusterele Zookeeper rulează în mod obișnuit pe servere x86 de mărfuri cu costuri reduse.
Fiecare server x86 rulează un singur proces software Zookeeper (denumit în continuare "server Zookeeper"), cu un server Zookeeper ales de ansamblu ca lider, iar ceilalți servere sunt adepți. Ansamblurile Zookeeper sunt guvernate de principiul unui cvorum majoritar.
Deci, câte servere de Zookeeper ai nevoie? Cinci este minimul recomandat pentru utilizarea în producție, dar într-adevăr nu doriți să mergeți cu minimul gol. Când decideți să vă planificați ansamblul Zookeeper, urmați această formulă simplă: 2F + 1 = N unde F este numărul de eșecuri pe care le puteți accepta în clusterul dvs. Zookeeper și N este numărul total de servere Zookeeper pe care trebuie să le desfășurați.
Zookeeper asigură coordonarea și sincronizarea cu ceea ce numește
znodes , care este prezentat ca un arbore de directoare și seamănă cu numele căilor de fișier pe care le-ați vedea într-un sistem de fișiere Unix. Znodes nu stochează date dar nu prea vorbesc - în prezent, mai puțin de 1 MB în mod implicit. Ideea este că Zookeeper stochează znodes în memorie și că aceste znoduri bazate pe memorie oferă acces rapid la client pentru coordonare, stare și alte funcții vitale necesare aplicațiilor distribuite, cum ar fi HBase. Zookeeper replică znodes peste ansamblu, astfel încât dacă serverele nu reușesc, datele znode sunt încă disponibile, atâta timp cât un cvorum majoritar de servere este încă în desfășurare.
Un alt concept primar de Zookeeper se referă la modul în care sunt citite znode-urile (versus scriere). Orice server Zookeeper poate gestiona citirile de la un client, inclusiv liderul, dar numai liderul emisiunilor
atomic scrie znode - scrie că fie reușesc complet sau eșuează complet. Atunci când o cerere de scriere a znode ajunge la nodul lider, liderul transmite cererea de scriere către nodurile ascultătorilor și apoi așteaptă ca majoritatea adepților să confirme că scrierea znode este completă. După confirmare, liderul emite un znode însuși și apoi raportează clientului starea de finalizare cu succes.
Znodes oferă unele garanții foarte puternice. Atunci când un client Zookeeper (cum ar fi un HBase RegionServer) scrie sau citește un znode, operația este
atomic . Ea reușește sau nu reușește complet - nu există citiri sau scrieri parțiale. Niciun alt client care concurează nu poate provoca eșecul operației de citire sau scriere. În plus, un znode are o listă de control al accesului (ACL) asociată cu aceasta pentru securitate și suportă versiuni, timbre și notificări clienților atunci când se modifică.
Zookeeper replică znodes peste ansamblu, astfel încât, dacă serverele nu reușesc, datele znode sunt încă disponibile, atâta timp cât un cvorum majoritar de servere este încă în desfășurare. Acest lucru înseamnă că scrierea la orice znod din orice server Zookeeper trebuie să fie propagat în întregul ansamblu. Liderul Zookeeper gestionează această operațiune.
Această abordare de tip znode poate determina următorii să cadă în spatele liderului pentru perioade scurte de timp. Zookeeper rezolvă această problemă potențială prin furnizarea unei comenzi de sincronizare. Clienții care nu pot tolera această lipsă temporară de sincronizare în cadrul clusterului Zookeeper pot decide să emită o comandă de sincronizare înainte de a citi znodes.