Manejo Apache Zookeeper

Bueno una vez instalada la herramienta, empezaremos por saber como utilizarla, para esto comenzaremos por explicar donde encontrar ya un cliente programado para podernos conectar al ensamblado y empezar a realizar operaciones sobre este clúster de zookeeper, al igual que el post anterior utilizaremos solo un nodo como ensamblado y como quorum para trabajar con el cliente que nos provee Apache.

El cliente lo podemos encontrar en /usr/local/zookeeper/bin de acuerdo a nuestra instalación pasada, dentro de esta carpeta se encuentra un archivo llamado zkCli.sh el cuál funcionará como el cliente hacia el clúster de zookeeper.


Como vemos en la imagen anterior este es el shell para inicializar el cliente y lo iniciamos de la siguiente forma ./zkCli.sh -server localhost:2181 y la shell debe lucir como la siguiente imagen, para aquellos que tengan más de un nodo en su clúster de zookeeper, en lugar de poner la ruta anterior, deberá sustituirse por una con la estructura siguiente
localhost:3000,locahost:3001,localhost:3002





Como podemos ver el cliente ya ha iniciado una instancia y ahora se encuentra conectado al server, empezaremos por explicar algunas cosas, con el comando help nos listará todos los comandos soportados para el cliente de zookeeper.


Como podemos ver al inicio de esta imagen, el cliente se crea con un timeout de 30000 milisegundos que son 30 segundos lo que esperará antes de cerrar la sesión.

También podemos notar que la propiedad es nula y el tipo no esta definido, después de esta explicación con el comando help se listan todos los comandos que se pueden usar en el cliente, empecemos por descubrir algunos.

Empezaremos por listar todos nuestros nodos que tenemos que se encuentran en raíz con el comando ls path


Como podemos notar en nuestro directorio principal del ensamblado, lo que corresponde como a la base de datos de cada servidor en el ensamblado solo tenemos un nodo llamado zookeeper, para fines de esta parte de manejo de zookeeper, crearé un nodo llamado zk_test y eso se lleva a cabo con el siguiente comando en la consola del cliente create /zk_test data una vez hecho esto en consola, listamos otra vez los nodos que se encuentran en raíz, la cadena data sera asociada con el nodo zk_test.

Como podemos ver en raíz ya existe el znode llamado zk_test y con información data ahora como mencionamos en la teoría todos los znodes por default son del tipo persistence; lo siguiente sería inspeccionar el valor de este znode y eso se lleva a cabo con el siguiente comando get /zk_test este comando nos regresará toda la información que contiene este znode.
Como podemos ver contiene información depurada y especifica de los znodes.
Si queremos modificar la información agregada anteriormente sería con el comando:
set /zk_test otradata
Y revisamos de nuevo la información contenida en este znode, como podemos ver ha cambiado a otradata.

Al igual que en linux, el comando history sirve para ver todos los comandos utilizados en esta sesión.

Ahora realizaremos un ejercicio muy interesante, como vimos en los primeros comandos de zookeeper creamos un znode en la carpeta raíz llamado zk_test dentro de esta carpeta crearemos otros 4 znodes pero de tipos diferentes, crearemos 1 ephemeral znode, 1 persistence znode y 2 sequential znodes

Eso lo logramos con los siguientes comandos:

Persistence Znode:
Ephemeral Znode: 
Sequential Znode:

Como podemos ver en los comandos anteriores hemos creado 3 nodos de los 4 tipos que pueden existir, ahora nos dirigimos a esta ruta y buscamos estos znodes que acabamos de crear.


Como podemos ver al listar todos los znodes que contiene el nodo zk_test nos aparecen los 4 znodes que creamos anteriormente, ahora uno de estos 4 es ephemeral, lo que significa que al perder la conexión entre el cliente y el servidor este debería eliminarse, para probarlo primero cerraremos la conexión con el siguiente comando. 


Una vez que hemos cerrado la conexión deberemos  deberemos iniciar una nueva sesión y para eso utilizamos el siguiente comando.

Una vez abierta la nueva conexión deberemos listar otra vez los znodes disponibles en nuestro znode padre de prueba llamado zk_test.

Como podemos ver el znode que llevaba por nombre zk_ephemeralZNode se ha eliminado, por último pasaré a explicar el funcionamiento de los watches, este post nos servirá mucho cuando pasemos al código de elección de líder.

Antes de empezar a explicar sobre como operan los watches eliminaremos los dos sequential znodes con el comando siguiente.


Como podemos notar no manda ningún mensaje cuando eliminamos algún znode o en el caso anterior cuando lo modificamos, recuerden que los watches son para enviar alertas en algún cambio de los znodes a los demás servers de la aplicación distribuida, como veremos en el post siguiente donde será un ejemplo programado.

Comentarios

Entradas más populares de este blog

Manejo Apache Hive

Replicación y Formas de Paralelización Apache Hadoop

Asignación de un líder Zookeeper