Creación De Un Cluster Formado Por Tres Raspberry PI-3 Que Alojarán
Total Page:16
File Type:pdf, Size:1020Kb
Máster en Ingeniería Computacional y Matemática Trabajo Final de Máster Creación de un cluster formado por tres Raspberry PI-3 que alojarán una base de datos NoSQL (Apache Cassandra) y motor de cálculo distribuido (Apache Spark), desplegado en contenedores (Docker). Eduardo Romero López Sistemas Distribuidos Coordinador: Félix Freitag Nombre Profesor/a responsable de la asignatura: Joan Manuel Marquès 10 de septiembre de 2017 GNU Free Documentation License (GNU FDL) Copyright © 2017 Eduardo Romero López. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front- Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". DEDICADO A Lorena por su apoyo, paciencia y comprensión durante todo el periodo que duró el máster. AGRADECIMIENTO A todas las comunidades de desarrolladores y personas que comparten sus conocimientos en charlas y talleres sin miedo a que un tercero pueda aprenderlo, en especial a: @linux_malaga, @centrologic_es, @malaga_pythony @DataBeersMLG Ficha del Trabajo Fin de Máster Creación de un cluster formado por tres RaspberryPI-3 que alojarán una base de datos Título del trabajo NoSQL(Apache Cassandra) y motor de cálculo dis- tribuido(Apache Spark), alojado en un contenedor (Docker). Nombre del autor Eduardo Romero López Nombre del consultor/a Félix Freitag Nombre del PRA Joan Manuel Marquès Fecha de entrega 09/2017 Titulación Máster en Ingeniería Computacional y Matemática Área del Trabajo Final Sistemas Distribuidos Idioma del trabajo Español Palabras clave (máxi- Docker, Spark y Cassandra mo 3 palabras) Resumen del Trabajo (máximo 250 palabras): Este proyecto consiste en el ensamblaje e integración de todos los componentes hardware y software para formar un motor de cálculo distribuido sobre mini-PC (Raspberry PI-3), todo ello llevado a cabo desde un enfoque muy práctico. Así mismo, trata de dar continuidad y profundizar más en los conocimientos adquiridos en la asignatura del Máster Computación Distribuida. Abstract (in English, 250 words or less): This project consists in the assembly and integration of all the hardware and software components to form a distributed calculation engine over mini PC (Raspberry PI- 3), all realized from a very practical point of view. Also, it tries to give continuity and to deepen in the knowledge acquired in the subject of the Master Distributed Computing. Computación Distribuida iii Índice general Índice de figuras vi Índice de tablas viii Índice de Códigos ix 1 Introducción1 1.1 Contexto y justificación del Trabajo...................1 1.2 Objetivos del Trabajo...........................1 1.3 Enfoque y método seguido........................2 1.4 Planificación del Trabajo.........................2 1.5 Breve sumario del producto obtenido..................3 1.6 Breve descripción de los otros capítulos de la memoria........4 2 Hardware y sistema operativo utilizado5 2.1 Mini PC..................................5 2.2 Descripción del hardware a utilizar...................6 2.3 Sistema Operativo utilizado.......................8 2.3.1 Raspbian.............................9 2.3.2 Ubuntu Mate...........................9 3 Introducción de los componentes del sistema 12 3.1 Docker................................... 12 3.1.1 Imágenes en Docker........................ 13 3.1.2 Contenedores en Docker..................... 13 3.1.3 Volúmenes en Docker....................... 13 3.1.4 Arquitectura en Docker...................... 14 3.1.5 Herramientas de Docker..................... 14 3.2 Cassandra................................. 16 3.2.1 Arquitectura y características de Cassandra.......... 16 iv 3.2.2 Lenguaje CQL.......................... 17 3.2.3 Modelado de datos........................ 18 3.3 Spark................................... 19 3.3.1 Componentes del ecosistema Spark............... 19 3.3.2 La abstracción RDD....................... 21 4 Estado del arte 22 5 Puesta en marcha del sistema 24 5.1 Configuración inicial del sistema..................... 24 5.1.1 Creación imagen iso....................... 24 5.1.2 Instalación Ubuntu Mate..................... 26 5.1.3 Habilitar SSH en la Raspberry PI 3............... 28 5.1.4 Habilitar modo consola en la Raspberry PI 3.......... 28 5.1.5 Configuración de la red...................... 29 5.1.6 Asignación de partición Swap de intercambio.......... 30 5.2 Docker................................... 32 5.2.1 Instalación Docker........................ 32 5.2.2 Instalación Docker-Compose................... 34 5.2.3 Docker Swarm........................... 34 5.2.4 Instalación Portainer....................... 36 5.3 Cassandra................................. 38 5.3.1 Requerimientos previos...................... 38 5.3.2 Instalación de Cassandra..................... 38 5.3.3 Configuración de Cassandra para uso en Raspberry...... 39 5.3.3.1 Requerimientos de memoria.............. 39 5.3.3.2 Configuración de parámetros del cluster....... 39 5.3.4 Creación de una base de datos.................. 42 5.4 Spark................................... 46 5.4.1 Instalación y configuración de Spark en Raspberry Pi 3.... 46 5.4.2 Instalación Spark-Cassandra-Connector............. 50 5.4.3 Prueba de comunicación Spark-Cassandra-Connector..... 50 6 Análisis de resultados 52 6.1 Objetivo principal............................. 52 6.2 Objetivo secundario............................ 53 6.2.1 Proceso de ejecución de la aplicación.............. 55 6.2.2 Análisis de los resultados de la aplicación............ 56 7 Conclusiones y futuros trabajos 58 7.1 Conclusiones................................ 58 7.2 Futuros trabajos............................. 59 Bibliografía 60 Anexos 61 Web visitadas 62 Computación Distribuida v Presupuesto para realización del proyecto 64 Tabla comparativa de mini PC 65 Computación Distribuida vi Índice de figuras 1.1 Cluster raspberry pi-3..........................3 2.1 Componentes hardware del sistema...................7 2.2 Sistema Operativo Raspbian....................... 10 2.3 Sistema Operativo Ubuntu Mate.................... 10 3.1 Esquema del despliegue de aplicaciones con Docker.......... 12 3.2 Ejemplo de 2 imágenes con 3 contenedores en Docker......... 14 3.3 Docker Hub................................ 15 3.4 Esquema tipo de un sistema Docker multihost............. 16 3.5 Principales características de Cassandra................. 17 3.6 Modelo de datos en Cassandra...................... 18 3.7 Ecosistema Spark............................. 20 3.8 Flujograma de RDD en Spark...................... 20 5.1 Adaptador microSD a USB utilizado.................. 24 5.2 Crear la imagen iso de Ubuntu Mate.................. 25 5.3 Proceso de instalación Ubuntu Mate.................. 27 5.4 Diagrama red LAN montada....................... 29 5.5 Hardware Raspberry Pi 3 sin Swap................... 31 5.6 Hardware Raspberry Pi 3 con Swap................... 31 5.7 Añadir Docker al iniciar sesión...................... 33 5.8 Añadir el usuario al grupo de Docker.................. 34 5.9 Interfaz gráfica Portainer......................... 37 5.10 Estado cluster de Cassandra....................... 40 5.11 Consola de Cassandra.......................... 42 5.12 Usando Keyspace cotizaciones...................... 43 5.13 Registros de cotización de ING..................... 46 5.14 Clave RSA para acceso remoto...................... 47 5.15 Consola de Spark............................. 48 5.16 Panel web Cluster Spark......................... 50 vii Índice de figuras Índice de figuras 6.1 Imagen de Cassandra en Docker Hub.................. 53 6.2 Resultados obtenidos de la aplicación.................. 55 6.3 Consumo de la aplicación Python sobre una Raspberry Pi-3..... 57 7.1 UDOO X86 Ultra............................. 59 Computación Distribuida viii Índice de tablas 1.1 Planificación del proyecto........................2 2.1 Mini PC más usados para este tipo de proyectos............6 1 Presupuesto para la realización del proyecto.............. 64 2 Comparativa de mini PC......................... 77 ix Índice de Códigos 1 Contenido del archivo de configuración IP fija............. 30 2 Versión Docker instalada......................... 32 3 Crear nodo manager Swarm....................... 35 4 Cluster Swarm formado por rpi3..................... 35 5 Parámetros de Cassandra......................... 41 6 Creación de una keyspace en Cassandra................. 42 7 Parámetros de Cassandra......................... 43 8 Inserción de datos automatizados con Python............. 45 9 Consultas en Cassandra......................... 46 10 Configuración parámetro archivo slave................. 48 11 Configuración parámetros Spark..................... 49 12 Consola Spark conectada con Cassandra................ 51 13 Aplicación cálculo correlaciones PySpark................ 55 1 1 Introducción 1.1 Contexto y justificación del Trabajo En la actualidad estamos inmersos en una revolución digital, cada vez hay más equipos o IOT (Internet of things) conectados a internet recabando y generando datos de diversas procedencia y naturaleza. Eso genera grandes volúmenes de datos que dificultan trabajar con ellos a través del modelo tradicional SGBDR (Sistema de Gestión de Bases de Datos Relacionales) y de ahí surgen nuevas tecnologías para dar solución a dicho problema, como las que se tratarán en este proyecto. 1.2 Objetivos del Trabajo Debido al carácter novedoso