• No se han encontrado resultados

Prác%ca de Data Storage:

N/A
N/A
Protected

Academic year: 2021

Share "Prác%ca de Data Storage:"

Copied!
24
0
0

Texto completo

(1)

Prác%ca  de  Data  Storage:  

Jesús  Montes  

Big  Data  –  Master  Universitario  en   Ingeniería  Informá%ca  

(2)

Índice  

•  Máquina  de  prác%cas   •  Instalación  

•  Despliegue  de  un  cluster  de  prueba   •  Operaciones  ru%narias  en  Riak  

•  Reacción  ante  fallos  

(3)

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  

(4)

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  

(5)

Instalación  

> tar zxvf riak-2.0.0.tar.gz > cd riak-2.0.0

> make all ...

(6)

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)  

(7)

Despliegue  de  un  cluster  de  prueba  

> make devrel DEVNODES=5 ...

(8)

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.  

(9)

Despliegue  de  un  cluster  de  prueba  

> dev1/bin/riak start ... > dev2/bin/riak start ... > dev3/bin/riak start ... > dev4/bin/riak start ... > dev5/bin/riak start ...

(10)

Despliegue  de  un  cluster  de  prueba  

•  Podemos  comprobar  que  los  nodos  estan   funcionando  haciendo  “ping”  

> dev1/bin/riak ping pong

(11)

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”  

(12)

Despliegue  de  un  cluster  de  prueba  

> dev2/bin/riak-admin cluster join [email protected] ...

> dev3/bin/riak-admin cluster join [email protected] ...

> dev4/bin/riak-admin cluster join [email protected] ...

> dev5/bin/riak-admin cluster join [email protected] ...

(13)

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 ...

(14)

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

(15)

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  

(16)

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  

(17)

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  

(18)

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

(19)

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 ...

(20)

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  

(21)

Reacción  ante  fallos  

¿Qué  ocurre?  

1.  ¿En  qué  estado  se  encuentra  el  cluster?   2.  ¿Siguen  siendo  accesibles  todos  los  datos?  

(22)

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.  

(23)

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.  

(24)

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/

Referencias

Documento similar

We present a new package for performing analysis of association between copy number variants and disease, appropriately taking uncertainty in CNV copy number calls into account.

Rnta'eflencia d ^ ^ | p | i e r a razón dc efta indo entre-los Principes la ca neceíTaría paz, a toda la R eligión Chriftianajporque a demas del pre- ndió que de la

Contrato Laboral de obra o servicio determinado, a tiempo completo, con categoría profesional de ingeniero industrial, siendo el objeto del contrato “Realizar trabajos da valoración

Ahora bien,, en el caso concreto de las relaciones entre arte y política ha surgido en nuestro siglo, hasta cierto punto por vez primera, un fenómeno que viene a enturbiar

SMITH, Inner functions in the hyperbolic little Bloch class, Michigan Math. STEIN, Singular integrals and differentiability properties of functions,

These are called Dirichlet type spaces because for p=0 one gets the classical Dirichlet space D of all analytic functions on 2 whose images have finite area, counting

e) Transcriure en ortografia moderna el text següent, tret d'una edició dels primers temps de la renaixença, esmenant-hi també les errades de caràcter sintàctic

Alternative Label Energy resource Water storage option Alternative 1 A1 Diesel generator Annual water tank storage Alternative 2 A2 Diesel generator Seasonal water tank