• No results found

4. Case Study: Malawi

4.2. Malawi

4.2.1. Policy Reform Measures

El proyecto comienza con el desarrollo de la arquitectura de la capa de datos, al ser la construcción del Data Lake el primer paso del proceso KDD [ref ]. Como ya se detalló en secciones previas, el despliegue de la arquitectura consiste en varios contendores Docker con las distitnas tecnologías ne-

cesarias para el correcto funcionamiento del sistema. En este caso, los contenedores correspondientes a Kafka, y a la base de datos no relacional Oracle NoSQL.

5.3.2.1 Contenedor con Apache Kafka

En primer lugar, se procede con el levantamiento del contenedor con la tecnología necesaria para

utilizar Apache Kafka. El principal obstáculo de la gestión de Kafka en Docker es que depende de Zookeeper. Zookeeper es un servicio centralizado para mantener la información de configuración, nombrar, proporcionar sincronización distribuida y proporcionar servicios de grupo. Todo este tipo

de servicios son comunmente utilizados en sistemas distribuidos para realizar sus funciones, en nuestro caso Kafka.

CAPÍTULO 5. RESULTADOS 63

Existen varias imágenes disponibles en hub.docker.com que implementan Kafka. De entre todas

las opciones disponibles, la imagen escogida fue spotify/kafka. Comparada con otras imágenes disponibles en Docker, spotify/kafka funciona tanto con Zookeeper como con Kafka en el mismo contenedor. Esto tiene dos importantes implicaciones:

1. No necesita depender de un host externo con Zookeeper, eliminando así la necesidad de incorporar un contenedor adicional con Zookeeper.

2. El contenedor consta ya de una configuración por defecto para que Kafka y el Zookeeper funcionen de forma conjunta desde el primer momento.

Una vez la imagen ha sido escogida, para disponer de ella en docker accedemos a la terminal del

equipo buscando “cmd” en la barra de búsqueda de Windows. Una vez en la terminal, lanzamos el comando “docker pull spotify/kafka” que indica a Docker que recupere esta imagen del Docker Hub y la guarde en el equipo para su posterior uso.

Figura 5.2: Descarga de la imagen spotify/kafka

Una vez obtenida la imagen, es posible arrancar el contenedor y comenzar a usarlo. Para ello, basta

con utilizar el comando “docker run -p 2181:2181 -p 9092:9092 –env ADVERTISED_HOST=’docker- machine ip ’docker-machine active” –env ADVERTISED_PORT=9092 spotify/kafka” donde se indica a Docker:

• Que el contenedor funcionará en el puerto 9092

• Que el host del contendor será nuestra propia máquina

Con este último paso se asegura el funcionamiento del contenedor.

5.3.2.2 Contenedor con Oracle NoSQL

Una vez se dispone del contenedor con Kafka, se procede a levantar un contenedor que contenga la base de datos no relacional Oracle NoSQL. Este contenedor estará estrechamente relacionado con

el anterior debido a que alberga los programas necesarios para recopilar los datos de la fuente Big Data e integrarlos en la base de datos alojada en este mismo contenedor a través del uso de Kafka.

De manera análoga al contenedor anterior, es necesario buscar una imagen para cargar al contenedor en hub.docker.com. En este caso, Oracle tiene un perfil público en Docker donde aloja varias imágenes correspondientes a distintas tecnologías de la empresa, y la base de datos NoSQL no es una excepción. Así pues, se escoge la imagen oracle/nosql. Una vez escogida la imagen, basta con

repetir el mismo proceso que se realizó anteriormente para la imagen de Kafka, y que se repetirá para cada nuevo contenedor Docker que se añada a la arquitectura.

Accedemos a una terminal Windows mediante el comando buscando “cmd” en la barra de búsqueda de Windows y lanzamos el comando

64 5.3. FASE DE CONSTRUCCIÓN

para descargar la imagen. Una vez almacenada la imagen en el equipo, para levantar el contenedor

basta con utilizar el comando

$ docker run -d --name = kvlite oracle / nosql

En este punto, podremos acceder a la terminal del propio contenedor para verificar la conexión a la

base de datos.

Antes de continuar con la verificación del funcionamiento conviene aclarar que es el KV Store y como funciona ya que será un termino recurrente durante toda la documentación relacionada con

esta base de datos. El KV Store es una tecnología que se utiliza para almacenar datos en formato clave-valor en colecciones. Una colección es un contedor de datos, muy similar al concepto de tabla en una base de datos relacional. Además, una colección solo existe dentro del contexto de una

determinada aplicación. Esto significa que pueden existir varias KV Stores dependiendo de cuántos datos se quieran almacenar. En definitiva, las principales características del KV Store son:

• El KV Store almacenarecords o registros, que son similares conceptualmente hablando a una fila en una tabla de una base de datos relacional.

• Loscampos se corresponden con una clave, de forma análoga a una columna de una tabla. Cada campo contiene los valores de los datos en formato de documento JSON. No obstante,

también se permite al usuario forzar tipos de dato aunque no sea necesario. Actualmente se admitennumber, boolean, time y string como valores de campo.

• El valor _key es un campo reservado que contiene el ID único de cada registro. Si no se espicifica explícitamente un valor para _key, la base de datos genera automáticamente un valor numérico por defecto.

• El valor _user es un campo reservado que contiene el ID de usuario de cada registro. La principal característica de este campo es que no puede ser sobreescrito.

• Contiene un sistema llamadoAccelerations mejora el rendimiento de las búsquedas a través de la creación de búsquedas que contienen “campos acelerados” para devolver los resultados antes. Esto es posible gracias a que Accelerations contiene una pequeña porción de las colecciones

almacenadas en la base de datos en un formato que facilita su transversión.

Una vez aclarados el funcionamiento y las características de este sistema de almacenamiento,

para verificar la existencia de la base de datos y el acceso a la misma debemos ejecutar el comando

$ java -jar lib / kvstore . jar runadmin -host kvlite -port 5000 -store kvstore

que nos introducirá directamente en la instancia de laKVStore de la base de datos. Ya dentro del KV Store, podremos lanzar el comando “get kv -all” para ver todas las colecciones almacenadas en la base de datos.

CAPÍTULO 5. RESULTADOS 65

Figura 5.3: Verificacion KV Store

Related documents