Prác%ca de Data Storage: Jesús Montes Big Data Master Universitario en Ingeniería Informá%ca 1
Índice Máquina de prác%cas Instalación Despliegue de un cluster de prueba Operaciones ru%narias en Riak Reacción ante fallos Ejercicio de programación 2
Máquina de prác%cas Máquina virtual en formato Virtual Box GNU/Linux Ubuntu 13.10 Todas las dependencias instaladas Hace más fácil la instalación Peor rendimiento que sobre la máquina Xsica 3
Instalación Guía de instalación oficial http://docs.basho.com/riak/latest/ops/ building/installing/from-source/ http://s3.amazonaws.com/ downloads.basho.com/riak/2.0/2.0.0/ riak-2.0.0.tar.gz Recomendable usar la máquina virtual de prác%cas (evitamos problemas de dependencias). 4
Instalación > tar zxvf riak-2.0.0.tar.gz > cd riak-2.0.0 > make all Big Data - Prác%ca de Riak 5
Despliegue de un cluster de prueba Cluster fic%cio 5 nodos corriendo en la misma máquina No es un escenario real, pero nos sirve para hacer pruebas. Organización descentralizada, sin SPOF (como cualquier cluster Riak) Datos repar%dos entre todos los nodos, de manera transparente (consistent hashing) 6
Despliegue de un cluster de prueba > make devrel DEVNODES=5 Big Data - Prác%ca de Riak 7
Despliegue de un cluster de prueba Dentro del subdirectorio dev aparecen 5 directorios (dev1-5). Cada directorio con%ene una instalación independiente de Riak, para que podamos lanzar 5 nodos dis%ntos. Ficheros de configuración personalizados 8
Despliegue de un cluster de prueba > dev1/bin/riak > dev2/bin/riak > dev3/bin/riak > dev4/bin/riak > dev5/bin/riak start start start start start Big Data - Prác%ca de Riak 9
Despliegue de un cluster de prueba Podemos comprobar que los nodos estan funcionando haciendo ping > dev1/bin/riak ping pong 10
Despliegue de un cluster de prueba Una vez arrancados los nodos hay que conectarlos para que formen el cluster No es necesario poner en contacto explícitamente a todos los nodos con todos. Con que conozcan a un nodo del cluster ya se organizan solos 11
Despliegue de un cluster de prueba > dev2/bin/riak-admin > dev3/bin/riak-admin > dev4/bin/riak-admin > dev5/bin/riak-admin cluster join dev1@127.0.0.1 cluster join dev1@127.0.0.1 cluster join dev1@127.0.0.1 cluster join dev1@127.0.0.1 Big Data - Prác%ca de Riak 12
Despliegue de un cluster de prueba Una vez no%ficados, el plan de creación del cluster está preparado, pero el cluster todavía no ha sido creado. Podemos verificar el plan antes de aprobarlo > dev1/bin/riak-admin cluster plan Si todo está correcto, lo aprobamos > dev2/bin/riak-admin cluster commit 13
Operaciones ru%narias en Riak Comprobar el estado de los miembros de un cluster > dev1/bin/riak-admin member-status Comprobar el estado del anillo de claves > dev1/bin/riak-admin ring-status > dev1/bin/riak-admin ringready 14
Operaciones ru%narias en Riak Riak ofrece una API HTTP básica para consultar y actualizar datos GET para obtener información PUT para añadir/modificar información DELETE para eliminar información Podemos u%lizar un cliente HTTP en línea de mandatos, como curl o wget, para realizar las operaciones de manera sencilla 15
Operaciones ru%narias en Riak Almacenar pares clave- valor > curl XPUT http://localhost: 10018/buckets/messages/keys/hello -H Content-Type: text/plain -d Hello World Leer pares clave- valor > curl http://localhost:10018/ buckets/messages/keys/hello 16
Operaciones ru%narias en Riak Listar buckets > curl http://localhost:10018/ buckets?buckets=true Listar claves de un bucket > curl http://localhost:10018/ buckets/messages/keys?keys=true 17
Operaciones ru%narias en Riak Listar propiedades de un bucket > curl http://localhost:10018/ buckets/messages/props Borrar pares clave- valor > curl XDELETE http:// localhost:10018/buckets/messages/ hello 18
Reacción ante fallos Vamos a observar cómo reacciona Riak ante un fallo en uno de los nodos 1. Empezamos creando 6 objetos de prueba a par%r de una imagen > for i in `seq 1 100`; do curl XPUT http://localhost:10018/buckets/ images/keys/image$i.jpg -H Content- Type: image/jpeg -data-binary @test.jpg; done 19
Reacción ante fallos 2. Comprobamos que los 6 objetos han sido creados > curl http://localhost:10018/ buckets/images/keys?keys=true 3. Ahora paramos uno de los nodos > dev3/bin/riak stop 20
Reacción ante fallos Qué ocurre? 1. En qué estado se encuentra el cluster? 2. Siguen siendo accesibles todos los datos? 3. Qué ocurre si añadimos nuevos datos a la BD? 21
Ejercicio de programación Riak ofrece mul%tud de formas de acceso Pe%ciones HTTP Drivers para Java, Python, Ruby, Vamos a u%lizar una de ellas para programar una aplicación que use Riak como mecanismo de almacenamiento de datos. El problema concreto queda a discreción del alumno. El ejercicio se presentará en clase una vez terminado. 22
Ejercicio de programación Ejemplo de problema: Aplicación de almacenamiento de fotos (%po Instagram) Requisitos: Diferentes usuarios iden%ficados por nombre. Cada usuario podrá almacenar su biblioteca de imágenes jpeg. Operaciones soportadas: Subir fotos a la biblioteca de un usuario. Listar las fotos de la biblioteca de un usuario. Descargar una foto de la biblioteca de un usuario. Se usará Riak para almacenar la información. 23
Ejercicio de programación Consejos generales: Busca una idea sencilla, pero que te interese. Elije un lenguaje de programación que domines. Si los dirvers son complicados, siempre puedes usar la API HTTP directamente. Algunas referencias ú%les: docs.basho.com/riak/latest/dev/ using/application-guide/ docs.basho.com/riak/latest/dev/ using/libraries/ 24