• 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 dev1@127.0.0.1 ...

> dev3/bin/riak-admin cluster join dev1@127.0.0.1 ...

> dev4/bin/riak-admin cluster join dev1@127.0.0.1 ...

> dev5/bin/riak-admin cluster join dev1@127.0.0.1 ...

(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

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

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

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

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

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.