logo

Què és Apache ZooKeeper?

Cuider del zoològic és un servei de coordinació distribuït i de codi obert per a aplicacions distribuïdes. Exposa un conjunt senzill de primitives per implementar serveis de nivell superior per a la sincronització, el manteniment de la configuració i l'agrupació i la denominació.

En un sistema distribuït, hi ha múltiples nodes o màquines que necessiten comunicar-se entre ells i coordinar les seves accions. ZooKeeper proporciona una manera d'assegurar-se que aquests nodes són conscients els uns dels altres i poden coordinar les seves accions. Ho fa mantenint un arbre jeràrquic de nodes de dades anomenat Znodes , que es pot utilitzar per emmagatzemar i recuperar dades i mantenir la informació de l'estat. ZooKeeper proporciona un conjunt de primitives, com ara panys, barreres i cues, que es poden utilitzar per coordinar les accions dels nodes en un sistema distribuït. També ofereix funcions com ara l'elecció del líder, la migració per error i la recuperació, que poden ajudar a garantir que el sistema sigui resistent als errors. ZooKeeper s'utilitza àmpliament en sistemes distribuïts com Hadoop, Kafka i HBase, i s'ha convertit en un component essencial de moltes aplicacions distribuïdes.



Per què ho necessitem?

  • Serveis de coordinació : La integració/comunicació de serveis en un entorn distribuït.
  • Els serveis de coordinació són complexos d'encertar. Són especialment propensos a errors com ara les condicions de la carrera i el bloqueig.
  • Condició de carrera -Dos o més sistemes que intenten realitzar alguna tasca.
  • Bloquejos – S'esperen dues o més operacions.
  • Per facilitar la coordinació entre entorns distribuïts, els desenvolupadors van tenir una idea anomenada zookeeper perquè no hagin d'alliberar les aplicacions distribuïdes de la responsabilitat d'implementar serveis de coordinació des de zero.

Què és un sistema distribuït?

  • Múltiples sistemes informàtics treballant en un sol problema.
  • És una xarxa que consta d'ordinadors autònoms connectats mitjançant programari intermediari distribuït.
  • Característiques clau : Concurrent, compartició de recursos, independent, global, major tolerància a errors i relació preu/rendiment és molt millor.
  • Objectiu clau s: Transparència, Fiabilitat, Rendiment, Escalabilitat.
  • Desafiaments : Seguretat, fallada, coordinació i intercanvi de recursos.

Repte de coordinació

  • Per què la coordinació en un sistema distribuït és el problema difícil?
  • Gestió de coordinació o configuració d'una aplicació distribuïda que té molts sistemes.
  • Node mestre on s'emmagatzemen les dades del clúster.
  • Els nodes de treball o els nodes esclaus obtenen les dades d'aquest node mestre.
  • punt únic de fallada.
  • la sincronització no és fàcil.
  • Cal un disseny i una implementació acurats.

Apache Zookeeper

Apache Zookeeper és un servei de coordinació de codi obert distribuït per a sistemes distribuïts. Proporciona un lloc central per a les aplicacions distribuïdes per emmagatzemar dades, comunicar-se entre elles i coordinar activitats. Zookeeper s'utilitza en sistemes distribuïts per coordinar processos i serveis distribuïts. Proporciona un model de dades senzill i estructurat en arbre, una API senzilla i un protocol distribuït per garantir la coherència i la disponibilitat de les dades. Zookeeper està dissenyat per ser altament fiable i tolerant a errors, i pot gestionar alts nivells de rendiment de lectura i escriptura.

Zookeeper està implementat a Java i s'utilitza àmpliament en sistemes distribuïts, especialment a l'ecosistema Hadoop. És un projecte de l'Apache Software Foundation i es publica sota la llicència Apache 2.0.

Arquitectura de Zookeeper

Serveis de Zookeeper

Serveis de Zookeeper



L'arquitectura ZooKeeper consisteix en una jerarquia de nodes anomenats znodes, organitzats en una estructura similar a un arbre. Cada znode pot emmagatzemar dades i té un conjunt de permisos que controlen l'accés al znode. Els znodes s'organitzen en un espai de noms jeràrquic, similar a un sistema de fitxers. A l'arrel de la jerarquia hi ha l'arrel znode, i tots els altres znodes són fills de l'arrel znode. La jerarquia és similar a una jerarquia de sistema de fitxers, on cada znode pot tenir fills i néts, etc.

Components importants en Zookeeper

Serveis ZooKeeper

Serveis ZooKeeper

  • Líder i Seguidor
  • Processador de sol·licituds – Actiu a Leader Node i s'encarrega de processar les sol·licituds d'escriptura. Després del processament, envia els canvis als nodes seguidors
  • Transmissió atòmica – Present tant al node líder com al node seguidor. És responsable d'enviar els canvis a altres nodes.
  • Bases de dades en memòria (Bases de dades replicades)-S'encarrega d'emmagatzemar les dades al zookeeper. Cada node conté les seves pròpies bases de dades. Les dades també s'escriuen al sistema de fitxers proporcionant la recuperació en cas de qualsevol problema amb el clúster.

Altres Components

  • Client – Un dels nodes del nostre clúster d'aplicacions distribuïdes. Accedir a la informació des del servidor. Cada client envia un missatge al servidor per fer-li saber que el client està viu.
  • Servidor – Ofereix tots els serveis al client. Dona reconeixement al client.
  • Conjunt – Grup de servidors Zookeeper. El nombre mínim de nodes necessaris per formar un conjunt és 3.

Model de dades Zookeeper

Model de dades ZooKeeper

Model de dades ZooKeeper



A Zookeeper, les dades s'emmagatzemen en un espai de noms jeràrquic, similar a un sistema de fitxers. Cada node de l'espai de noms s'anomena Znode i pot emmagatzemar dades i tenir fills. Els Znodes són similars als fitxers i directoris d'un sistema de fitxers. Zookeeper proporciona una API senzilla per crear, llegir, escriure i suprimir Znodes. També proporciona mecanismes per detectar canvis a les dades emmagatzemades a Znodes, com ara rellotges i activadors. Els Znodes mantenen una estructura estadística que inclou: número de versió, ACL, marca de temps i longitud de dades

Tipus de Znodes :

  • La persistència : Viu fins que s'eliminin explícitament.
  • Efímer : Actiu fins que la connexió del client estigui activa.
  • Seqüencial : Ja sigui persistent o efímer.

Per què necessitem ZooKeeper a Hadoop?

Zookeeper s'utilitza per gestionar i coordinar els nodes d'un clúster Hadoop, inclosos NameNode, DataNode i ResourceManager. En un clúster Hadoop, Zookeeper ajuda a:

  • Manteniu la informació de configuració: Zookeeper emmagatzema la informació de configuració del clúster Hadoop, inclosa la ubicació de NameNode, DataNode i ResourceManager.
  • Gestioneu l'estat del clúster: Zookeeper fa un seguiment de l'estat dels nodes del clúster Hadoop i es pot utilitzar per detectar quan un node ha fallat o no està disponible.
  • Coordinar processos distribuïts: Zookeeper es pot utilitzar per coordinar processos distribuïts, com ara la programació de treballs i l'assignació de recursos, entre els nodes d'un clúster Hadoop.

Zookeeper ajuda a garantir la disponibilitat i fiabilitat d'un clúster Hadoop proporcionant un servei de coordinació central per als nodes del clúster.

Com funciona ZooKeeper a Hadoop?

ZooKeeper funciona com un sistema de fitxers distribuït i exposa un conjunt senzill d'API que permeten als clients llegir i escriure dades al sistema de fitxers. Emmagatzema les seves dades en una estructura en forma d'arbre anomenada znode, que es pot considerar com un fitxer o un directori en un sistema de fitxers tradicional. ZooKeeper utilitza un algorisme de consens per garantir que tots els seus servidors tinguin una visió coherent de les dades emmagatzemades als Znodes. Això vol dir que si un client escriu dades a un znode, aquestes dades es replicaran a tots els altres servidors del conjunt ZooKeeper.

Una característica important de ZooKeeper és la seva capacitat per donar suport a la noció d'un rellotge. Un rellotge permet que un client es registri per rebre notificacions quan canvien les dades emmagatzemades en un znode. Això pot ser útil per controlar els canvis a les dades emmagatzemades a ZooKeeper i reaccionar a aquests canvis en un sistema distribuït.

A Hadoop, ZooKeeper s'utilitza per a diversos propòsits, com ara:

  • Emmagatzematge d'informació de configuració: ZooKeeper s'utilitza per emmagatzemar informació de configuració compartida per diversos components de Hadoop. Per exemple, es pot utilitzar per emmagatzemar les ubicacions de NameNodes en un clúster Hadoop o les adreces dels nodes de JobTracker.
  • Proporcionar sincronització distribuïda: ZooKeeper s'utilitza per coordinar les activitats de diversos components Hadoop i assegurar-se que treballen junts de manera coherent. Per exemple, es pot utilitzar per assegurar-se que només un NameNode està actiu alhora en un clúster Hadoop.
  • Manteniment de la denominació: ZooKeeper s'utilitza per mantenir un servei de nomenclatura centralitzat per als components Hadoop. Això pot ser útil per identificar i localitzar recursos en un sistema distribuït.

ZooKeeper és un component essencial d'Hadoop i té un paper crucial en la coordinació de l'activitat dels seus diferents subcomponents.

Llegir i escriure en Apache Zookeeper

ZooKeeper proporciona una interfície senzilla i fiable per llegir i escriure dades. Les dades s'emmagatzemen en un espai de noms jeràrquic, similar a un sistema de fitxers, amb nodes anomenats znodes. Cada znode pot emmagatzemar dades i tenir znodes fills. Els clients de ZooKeeper poden llegir i escriure dades en aquests znodes mitjançant els mètodes getData() i setData() respectivament. Aquí teniu un exemple de lectura i escriptura de dades amb l'API Java de 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();>

>

>

Python 3




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

>

bloquejar anuncis a youtube Android

>

Sessió i rellotges

Sessió

  • Les sol·licituds d'una sessió s'executen en ordre FIFO.
  • Un cop establerta la sessió, aleshores ID de sessió s'assigna al client.
  • El client envia batecs del cor per mantenir la sessió vàlida
  • El temps d'espera de la sessió normalment es representa en mil·lisegons

Rellotges

  • Els rellotges són mecanismes perquè els clients rebin notificacions sobre els canvis al Zookeeper
  • El client pot mirar mentre llegeix un znode concret.
  • Els canvis de Znodes són modificacions de dades associades amb els znodes o canvis en els fills dels znodes.
  • Els rellotges només s'activen una vegada.
  • Si la sessió ha caducat, els rellotges també s'eliminen.