miércoles, mayo 28, 2014

Instalando un servidor de Zookeeper

Descargando e instalando Zookeeper

Para descargar y descomprimir la release, hay que usar los comandos a continuación.

cd $HOME
wget 'http://apache.rediris.es/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz'
tar -zxvf zookeeper-3.4.6.tar.gz
mv zookeeper-3.4.6.tar.gz zookeeper
cd zookeeper
export ZOOKEEPER_HOME=$HOME/zookeeper

Para los propósitos de uso de Storm, con un Zookeeper en modo single sería suficiente, no obstante es recomendable usar al menos tres. Para mantener el tutorial simple, vamos a hacer la configuración para usar un único Zookeeper.

El siguiente paso a realizar, es crear un fichero de configuración de Zookeeper. El propio Zookeeper viene con un fichero de ejemplo que con renombrarlo ya lo tendremos todo hecho para el modo single node:


mv conf/zoo_sample.conf conf/zoo.conf

Lo último que tenemos que hacer para arrancar el servidor es ejecutar el fichero "zkServer.sh start" dentro de la carpeta bin que iniciará el servidor en segundo plano:


$ZOOKEEPER_HOME/bin/zkServer.sh start

¡Hecho! Ya tenemos el servidor Zookeeper corriendo ahora vamos a hacer alguna prueba para comprobar que esté funcionando sin problemas. Para ello usaremos el cliente Zookeeper que viene con la release descargada y le indicaremos el servidor:puerto donde se encuentra el servidor de Zookeeper (NOTA: si no hemos tocado nada de la configuración del servidor de Zookeeper, este viene predeterminado en el puerto 2182):

$ZOOKEEPER_HOME/bin/zkCli.sh -server 127.0.0.1:2182

Nos saldrán unos mensajes de log y un prompt. Si escribimos help podemos ver una serie de comandos que podemos ejecutar en el terminal.
Welcome to ZooKeeper!
2014-04-27 22:56:38,225 [myid:] - INFO  [main-SendThread(172.17.0.2:2181):ClientCnxn$SendThread@975] - Opening socket connection to server 172.17.0.2/172.17.0.2:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2014-04-27 22:56:38,234 [myid:] - INFO  [main-SendThread(172.17.0.2:2181):ClientCnxn$SendThread@852] - Socket connection established to 172.17.0.2/172.17.0.2:2181, initiating session
[zk: 172.17.0.2:2181(CONNECTING) 0] 2014-04-27 22:56:38,655 [myid:] - INFO  [main-SendThread(172.17.0.2:2181):ClientCnxn$SendThread@1235] - Session establishment complete on server 172.17.0.2/172.17.0.2:2181, sessionid = 0x145a4f801ef0000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null

[zk: 172.17.0.2:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
 connect host:port
 get path [watch]
 ls path [watch]
 set path data [version]
 rmr path
 delquota [-n|-b] path
 quit 
 printwatches on|off
 create [-s] [-e] path data acl
 stat path [watch]
 close 
 ls2 path [watch]
 history 
 listquota path
 setAcl path acl
 getAcl path
 sync path
 redo cmdno
 addauth scheme auth
 delete path [version]
 setquota -n|-b val path

Ya tenemos nuestro cliente y prompt abierto. Vamos a crear un nuevo znode llamado maricaster y asignarle el nombre de este blog (mariocaster.blogspot.com)

[zk: 172.17.0.2:2181(CONNECTED) 1] create /mariocaster mariocaster.blogspot.com 
Created /mariocaster
[zk: 172.17.0.2:2181(CONNECTED) 2] ls /
[mariocaster, zookeeper]

Si hacemos "ls /", uno de los comandos básicos para listar znodes, podemos ver que tenemos un nuevo znode llamado "mariocaster". Ahora vamos a ver el contenido del znode con la orden "get":


[zk: 172.17.0.2:2181(CONNECTED) 3] get /mariocaster
mariocaster.blogspot.com
cZxid = 0x2
ctime = Sun Apr 27 22:59:32 CEST 2014
mZxid = 0x2
mtime = Sun Apr 27 22:59:32 CEST 2014
pZxid = 0x2
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 24
numChildren = 0
[zk: 172.17.0.2:2181(CONNECTED) 4]

Como podemos ver en el resultado, aparece el nombre del blog. Ahora vamos a cambiar el valor para agregarle el http:// que hemos olvidado con la orden "set"

[zk: 172.17.0.2:2181(CONNECTED) 4] set /mariocaster http://mariocaster.blogspot.com
cZxid = 0x2
ctime = Sun Apr 27 22:59:32 CEST 2014
mZxid = 0x3
mtime = Sun Apr 27 23:03:41 CEST 2014
pZxid = 0x2
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 31
numChildren = 0
[zk: 172.17.0.2:2181(CONNECTED) 5] get /mariocaster
http://mariocaster.blogspot.com
cZxid = 0x2
ctime = Sun Apr 27 22:59:32 CEST 2014
mZxid = 0x3
mtime = Sun Apr 27 23:03:41 CEST 2014
pZxid = 0x2
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 31
numChildren = 0
[zk: 172.17.0.2:2181(CONNECTED) 6]

Hemos hecho un get al final para comprobar el valor actual del znode que, como podemos comprobar, efectivamente ha cambiado. Por último vamos a borrar este znode recién creado:

[zk: 172.17.0.2:2181(CONNECTED) 6] delete /mariocaster
[zk: 172.17.0.2:2181(CONNECTED) 7] ls /      
[zookeeper]
[zk: 172.17.0.2:2181(CONNECTED) 8]

Y con esto termina el tutorial introductorio a Zookeeper, herramienta que vamos a necesitar para la instalación de Apache Storm, motor para aplicaciones de tiempo real distribuidas que veremos en otro tutorial

0 comentarios:

Publicar un comentario