trabajo fin de grado - trabajos academicos de la...

116
1

Upload: others

Post on 16-May-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

1

Page 2: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

2

Trabajo Fin de Grado Curso 2017 – 2018

ANÁLISIS DE DATOS Y EXTRACCIÓN DE

CONOCIMIENTO UTILIZANDO BIG DATA

Alumno: Verjaga Felgueras, María Elena

Tutor: Muñoz Expósito, José Enrique

Departamento: Ingeniería de Telecomunicación

Firma de la autora Firma del tutor

Page 3: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

3

ÍNDICE

íNDICE DE ILUSTRACIONES ………………………………..………………………………………………………………..……… 6

ÍNDICE DE TABLAS ..…………………………………………………………………………………………………………………….. 9

GLOSARIO DE TÉRMINOS …………………………………………………………………………………………………………… 10

1. RESUMEN ................................................................................................................................. 11

2. INTRODUCCIÓN ........................................................................................................................ 12

2.1. Justificación y contexto del TFG ....................................................................................... 12

2.2. Estructura del documento................................................................................................ 13

3. OBJETIVOS ................................................................................................................................ 15

4. ESTADO DEL ARTE .................................................................................................................... 16

4.1. Big Data ............................................................................................................................ 16

4.1.1. Definición ................................................................................................................. 16

4.1.2. Enfoque de funcionamiento ..................................................................................... 18

4.1.3. Aplicaciones .............................................................................................................. 20

4.1.4. Antecedentes ........................................................................................................... 24

4.1.5. Tipos de proyectos ................................................................................................... 25

4.1.6. Tecnologías que utiliza Big Data. .............................................................................. 26

4.1.7. Técnicas de análisis de datos ................................................................................... 31

4.2. Algoritmos ........................................................................................................................ 34

4.2.1. Algoritmos de Machine Learning. ............................................................................ 35

4.2.1.1. Regresión lineal ................................................................................................ 36

4.2.1.2. Clasificación ...................................................................................................... 37

4.2.1.3. Clústering.......................................................................................................... 41

4.2.2. Optimización ............................................................................................................ 42

4.2.2.1. Algoritmos genéticos ........................................................................................ 42

4.2.2.2. PSO (Particle Swarm Optimization) .................................................................. 44

4.2.2.3. Pittsburgh y Michigan approach ...................................................................... 45

4.2.3. Toma de decisiones .................................................................................................. 48

4.3. Apache Spark .................................................................................................................... 50

4.3.1. Qué es Apache Spark ................................................................................................ 51

4.3.2. Quien usa Spark ........................................................................................................ 51

4.3.3. Para que se utiliza Spark........................................................................................... 52

Page 4: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

4

4.3.4. Visión general de la arquitectura de Apache Spark ................................................. 52

4.3.4.1. Lenguajes .......................................................................................................... 53

4.3.4.2. Opciones de almacenamiento .......................................................................... 54

4.3.4.3. RDD (Resilient Distribuited Datasets) ............................................................... 54

4.3.4.4. Componentes de Spark .................................................................................... 56

4.3.4.5. API (Interfaz de Programación de Aplicaciones) .............................................. 57

4.3.4.6. Arquitectura de un clúster ............................................................................... 58

4.3.5. Notebooks para Spark .............................................................................................. 60

4.3.6. Seguridad .................................................................................................................. 61

4.3.7. Ventajas y desventajas ............................................................................................. 62

5. DESARROLLO DEL PROYECTO ................................................................................................... 63

5.1. Máquinas virtuales ........................................................................................................... 64

5.1.1. Características y requisitos ....................................................................................... 64

5.1.2. Topología de red ...................................................................................................... 65

5.1.3. Instalación máquina virtual ...................................................................................... 66

5.2. Computadores físicos ....................................................................................................... 70

5.2.1. Características y requisitos ....................................................................................... 70

5.2.2. Topología de red ...................................................................................................... 71

5.3. Preparación entorno ........................................................................................................ 71

5.3.1. Instalación Java ........................................................................................................ 72

5.3.2. Instalación Anaconda (Pyhon) .................................................................................. 72

5.3.3. Instalación Spark ...................................................................................................... 75

5.3.4. Instalación Hadoop (opcional) ................................................................................. 77

5.3.5. Acceso SSH ............................................................................................................... 78

5.3.6. FindSpark .................................................................................................................. 80

5.3.7. Py4j ........................................................................................................................... 80

5.3.8. Jupyter Notebook ..................................................................................................... 80

5.4. Configuración y puesta en marcha ................................................................................... 82

5.4.1. Iniciar el servidor maestro ........................................................................................ 82

5.4.2. Conectar esclavos ..................................................................................................... 84

5.4.3. Crear primera aplicación Spark ................................................................................ 85

5.5. Concluir sesiones .............................................................................................................. 87

5.6. Resumen de pasos para iniciar y finalizar clúster ............................................................ 88

6. PRUEBAS Y RESULTADOS .......................................................................................................... 89

Page 5: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

5

6.1. Prueba “TextClassificationmini” ....................................................................................... 95

6.2. Prueba “TextClassificationmaxi” ...................................................................................... 98

6.3. Resultados ...................................................................................................................... 101

6.4. Problemas a lo largo del trabajo .................................................................................... 103

6.5. Conclusiones................................................................................................................... 103

7. ESTUDIO ECONÓMICO ........................................................................................................... 104

7.1. Costes de Hardware ....................................................................................................... 105

7.2. Costes de Software ......................................................................................................... 105

7.3. Honorarios ...................................................................................................................... 106

7.4. Resumen con costes totales ........................................................................................... 106

8. CONCLUSIONES SOBRE EL TFG Y TRABAJOS FUTUROS .......................................................... 107

9. BIBLIOGRAFÍA ......................................................................................................................... 107

9.1. Referencias ..................................................................................................................... 107

9.2. Otras fuentes consultadas .............................................................................................. 110

9.2.1. Enlaces .................................................................................................................... 110

9.2.2. Videotutoriales ....................................................................................................... 115

Page 6: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

6

ÍNDICE DE ILUSTRACIONES

Ilustración 1. Ampliar capacidades DWH corporativo ..................................................................... 19

Ilustración 2. Mejorar DataWarehouse ............................................................................................ 19

Ilustración 3. IBM Social Media Analytics Framework ..................................................................... 22

Ilustración 4. Apache hadoop .......................................................................................................... 26

Ilustración 5. Arquitectura HDFS ...................................................................................................... 27

Ilustración 6. Arquitectura MapReduce ........................................................................................... 27

Ilustración 7. Arquitectura YARN ..................................................................................................... 27

Ilustración 8. Hadoop EcoSystem ..................................................................................................... 28

Ilustración 9. Apache Spark .............................................................................................................. 30

Ilustración 10. Relación entre tipos de algoritmos y variables ........................................................ 35

Ilustración 11. Regresión lineal ........................................................................................................ 36

Ilustración 12. Redes neuronales ..................................................................................................... 38

Ilustración 13. SVM, clase 1 y clase 2 con frontera de decisión ....................................................... 39

Ilustración 14. Algoritmo knn ........................................................................................................... 40

Ilustración 15. Algoritmo árboles de decisión .................................................................................. 40

Ilustración 16. Fórmula k-means ...................................................................................................... 41

Ilustración 17. Diagrama Algoritmo k-means ................................................................................... 42

Ilustración 18. Estructura algoritmo genético simple ...................................................................... 43

Ilustración 19. Algoritmo genético, ciclo reproductivo .................................................................... 44

Ilustración 20. Pseudocódigo ........................................................................................................... 45

Ilustración 21. Esquema Pittsburgh approach ................................................................................. 46

Ilustración 22. Esquema Michigan approach, sistema clasificador .................................................. 47

Ilustración 23. Estructura básica de un controlador Fuzzy .............................................................. 50

Ilustración 24. RDD transformaciones ............................................................................................. 55

Ilustración 25. Componentes de Spark ............................................................................................ 56

Ilustración 26. Arquitectura de un clúster ....................................................................................... 59

Ilustración 27. Jupyter ...................................................................................................................... 60

Ilustración 28. Apache Zeppelin ....................................................................................................... 61

Ilustración 29. Spark Notebook ........................................................................................................ 61

Ilustración 30. Instalación máquina virtual ...................................................................................... 66

Ilustración 31. Instalación máquina virtual, tamaño de memoria ................................................... 66

Ilustración 32. Instalación máquina virtual, disco duro ................................................................... 66

Ilustración 33. Instalación máquina virtual, tipo almacenamiento.................................................. 67

Ilustración 34. Instalación máquina virtual, tipo disco duro. ........................................................... 67

Ilustración 35. Instalación máquina virtual, ubicación y tamaño .................................................... 67

Ilustración 36. Instalación máquina virtual, crear disco duro virtual ............................................... 67

Ilustración 37. Arranque Ubuntu ..................................................................................................... 67

Ilustración 38. Arranque Ubuntu cargado ........................................................................................ 68

Ilustración 39. Arranque Ubuntu, selección de ISO del sistema operativo ..................................... 68

Ilustración 40. Install Ubuntu ........................................................................................................... 68

Ilustración 41. Entrada Dispositivo CD/DVD vacía ........................................................................... 68

Ilustración 42. Clonar ....................................................................................................................... 69

Page 7: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

7

Ilustración 43. Clonar, nombre ......................................................................................................... 69

Ilustración 44. Clonación .................................................................................................................. 69

Ilustración 45. Clonar, tipo de clonación .......................................................................................... 69

Ilustración 46. Java version .............................................................................................................. 72

Ilustración 47. Instalar Anaconda ..................................................................................................... 73

Ilustración 48. Anaconda .bashrc ..................................................................................................... 73

Ilustración 49. Python version .......................................................................................................... 73

Ilustración 50. Version Pyhton con Anaconda ................................................................................. 74

Ilustración 51. Versión conda ........................................................................................................... 74

Ilustración 52. Spark Download ....................................................................................................... 75

Ilustración 53. Archivo .bashrc Spark ............................................................................................... 76

Ilustración 54. Verificación instalación Spark................................................................................... 76

Ilustración 55. Hadoop Download .................................................................................................... 77

Ilustración 56. Archivo .bashrc Hadoop ........................................................................................... 78

Ilustración 57. Verificación instalación Spark con Hadoop .............................................................. 78

Ilustración 58. SSH clave RSA ........................................................................................................... 79

Ilustración 59. Copiar RSA a slaves ................................................................................................... 80

Ilustración 60. Lanzar jupyter notebook con spark .......................................................................... 81

Ilustración 61. Lanzar jupyter notebook .......................................................................................... 81

Ilustración 62. Entorno jupyter en navegador ................................................................................. 81

Ilustración 63. Configuración red ..................................................................................................... 82

Ilustración 64. Iniciar servidor maestro ........................................................................................... 83

Ilustración 65. Interfaz de usuario web, localhost ........................................................................... 83

Ilustración 66. Interfaz de usuario web, otro dispositivo ................................................................ 83

Ilustración 67. Iniciar Slave ............................................................................................................... 84

Ilustración 68. Interfaz de usuario web, slaves conectados ............................................................ 84

Ilustración 69. Script ejecutado python prueba1 ............................................................................. 85

Ilustración 70. Interfaz web de la aplicación (ejecutores) ............................................................... 86

Ilustración 71. Interfaz web con running applications ..................................................................... 86

Ilustración 72. Interfaz web, completed Applications ..................................................................... 87

Ilustración 73. Apagar slave ............................................................................................................. 87

Ilustración 74. Apagar servidor maestro .......................................................................................... 88

Ilustración 75. Lectura datos TextClassificationmini ........................................................................ 90

Ilustración 76. Lectura de datos TextClassificationmaxi .................................................................. 91

Ilustración 77. Web gestión de clústers ........................................................................................... 91

Ilustración 78. Interfaz de aplicación ............................................................................................... 92

Ilustración 79. Descripción detallada de uno de los trabajos de la aplicación ................................ 92

Ilustración 80. Grafo de una tarea perteneciente a una aplicación ................................................. 93

Ilustración 81. Ejecutores aplicación corriendo(I) ............................................................................ 94

Ilustración 82. Ejecutores aplicación corriendo (II) .......................................................................... 94

Ilustración 83. Aplicación finalizada ................................................................................................. 95

Ilustración 84. Time código .............................................................................................................. 96

Ilustración 85. Gráfico total TextClassificationmini ......................................................................... 97

Ilustración 86. Gráfico segundos TextClassificationmini .................................................................. 97

Ilustración 87. Gráfico minutos TextClassificationmini .................................................................... 98

Page 8: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

8

Ilustración 88. Gráfico tiempos totales TextClassificationmini ........................................................ 98

Ilustración 89. Gráfico total TextClassificationmaxi ......................................................................... 99

Ilustración 90. Gráfico segundos-minutos TextClassificationmini ................................................. 100

Ilustración 91. Gráfico horas TextClassificationmaxi ..................................................................... 100

Ilustración 92. Gráfico tiempos totales TextClassificationmaxi ..................................................... 100

Ilustración 94. Gráfico tiempos finales en escala porcentual ........................................................ 102

Page 9: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

9

ÍNDICE DE TABLAS

Tabla 1. Topología de red máquinas virtuales ................................................................................. 65

Tabla 2. Tabla topología de red ordenadores físicos ....................................................................... 71

Tabla 3. TextClassification mini (1) ................................................................................................... 96

Tabla 4. TextClassification mini (2) ................................................................................................... 96

Tabla 5. TextClassificationmaxi (1) ................................................................................................... 99

Tabla 6. TextClassificationmaxi (2) ................................................................................................... 99

Tabla 7. Resultados tiempos finales ............................................................................................... 101

Tabla 8. Resultados tiempos finales escala porcentual ................................................................. 101

Tabla 9. Costes Hardware............................................................................................................... 105

Tabla 10. Costes Software .............................................................................................................. 105

Tabla 11. Honorarios ...................................................................................................................... 106

Tabla 12. Costes totales ................................................................................................................. 106

Page 10: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

10

GLOSARIO DE TÉRMINOS

Clúster. Conjunto de ordenadores independientes interconectados por diversos medios,

que funcionan como un solo recurso computacional

Competencias Digitales. Conocimientos y capacidades para utilización segura y critica

de la gama completa de tecnologías digitales de información, comunicación y resolución

de problemas.

Conocimiento explícito. [12] Es el conocimiento que sabemos, tenemos y somos

plenamente conscientes cuando lo ejecutamos. Estructurado

Conocimiento tácito. [12] Conocimiento que permanece en un nivel inconsciente e

implementamos y ejecutamos de manera mecánica. No estructurado.

Dataframe. [20] Es un conjunto de datos organizado en columnas con nombre

Espacio euclídeo. Espacio bidimensional o tridimensional en el que se cumplen los

axiomas de Euclides. También llamado espacio cartesiano.

Heurístico. Técnica que busca solución de un problema mediante la indagación y el

descubrimiento.

Identación. Hacer espacios hacia la derecha para mover una línea de código

Kernel. Núcleo del sistema operativo que realiza la comunicación entre el software y

hardware.

Mesos. Kernel administrador de clúster de código abierto

Pipeline. Elementos que procesan datos conectados en serie que transforman la salida en

la entrada del siguiente.

Reporting. Procesos, procedimientos, sistematización o flujo de información manual o

semi-manual, que genera y facilita el acceso de las personas adecuadas a la información

adecuada.

Page 11: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

11

1. RESUMEN

El presente trabajo de fin de grado, tiene como objetivo principal hacer un estudio

sobre Big Data y tecnologías que sirvan de soporte para el tratamiento de datos, haciendo

una comparación entre Spark y Hadoop que son las más utilizadas hoy en día. El estudio

se llevará a cabo teórica y prácticamente.

La parte teórica se centra en una profunda descripción de Big Data donde se

detallarán aplicaciones, tipos de proyectos, tecnologías que utilizan Big Data y su

comparación y técnicas para el análisis de los datos. También se describen algunos de los

algoritmos más utilizados en el tratamiento de datos. Por último, se profundiza en la

tecnología Spark describiendo su arquitectura y algunos de sus aspectos más relevantes.

La parte práctica constará de varias fases. La primera será la preparación del

entorno de trabajo con Apache Spark en la que se realizarán todas las instalaciones y

configuraciones necesarias para el correcto funcionamiento. Una vez esté el entorno de

trabajo preparado, se procederá a la creación del clúster donde se podrán incorporar tantos

nodos como workers queramos. Esto se ha hecho en dos escenarios distintos:

En máquinas virtuales para poder experimentar con Spark desde mi ordenador

ejecutando varios algoritmos en el clúster Spark y comprobando su funcionamiento.

En computadores físicos donde se llevará a cabo la prueba real ejecutando en un

clúster Spark un algoritmo que incluye técnicas de machine learning (aprendizaje

automático), variando número de nodos que lo componen y la carga de trabajo

introducida.

Se evaluará la eficacia de Spark haciendo un estudio comparativo teniendo en

cuenta principalmente los tiempos de ejecución y considerando la distribución de las tareas.

Page 12: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

12

2. INTRODUCCIÓN

En este capítulo se presenta el contexto en el que se sitúa este trabajo y las

circunstancias que han originado su desarrollo.

2.1. Justificación y contexto del TFG

Hoy en día tenemos información de todo tipo de fuentes ya sea procedente de

internet (búsquedas en Google, publicaciones y likes en Facebook, twitter, blogs, tags,

videos reproducidos etc.) o captada en cualquier dispositivo (geoposicionamiento de

coches o personas, frecuencia de tareas, estadísticas, numero de compras de un

determinado artículo, sensores, datos meteorológicos etc.). Con toda esta información

podemos hacer combinaciones y análisis de datos para sacar diferentes conclusiones y

utilizar convenientemente.

Las empresas en general tienen mucha información de la cual la gran mayoría

(80%) es información no estructurada. Están tomando decisiones y trabajando con grandes

volúmenes de datos, pero el 80% no se están tratando por tanto se obtiene la necesidad

de trabajar esta información de una forma fácil y económica.

Big Data es un concepto muy prometedor ya que, con la visión adecuada de

empresas y organizaciones, pueden utilizar los datos convenientemente para garantizar

que cubren las necesidades del consumidor y situándose con una gran ventaja en el ámbito

comercial.

Las principales características que engloba Big Data son volumen, velocidad y

variedad. Estas establecen un reto en el dominio y control de la calidad de los datos

estructurados y sin estructurar, que se incorporan al almacén de información digital. Es

fundamental que la calidad de los datos esté garantizada para tener información de valor y

asegurar buenos resultados del procesamiento analítico de los datos.

Para la realización de este proyecto se ha utilizado la tecnología Spark, un

framework con el que se podrán crear clústers de una forma muy fácil y rápida.

Con el objetivo de que se optimice en tiempo lo máximo posible y sea algo más

visual, una de las elecciones personales ha sido trabajar a través de un notebook web

Page 13: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

13

(jupyter notebook) en lugar de hacerlo de la forma convencional por la Shell. Esto garantiza

mucha flexibilidad a la hora de probar y ejecutar cualquier código deseado.

2.2. Estructura del documento.

Este documento consta de una serie de capítulos en lo que se hace un estudio de

Big Data y la tecnología Spark, detallando el proceso de implementación de la plataforma

junto con las instrucciones para un correcto funcionamiento. Concretamente, la distribución

del contenido de este trabajo es la siguiente:

Capítulo 1. Resumen. Se relacionarán de forma muy sintética los objetivos de este

trabajo.

Capítulo 2. Introducción. En este capítulo se establece el contexto en el que surge

la necesidad de la utilización de esta tecnología como solución a un problema de

partida.

Capítulo 3. Objetivos. Se detallarán los propósitos que se desean conseguir con

este TFG.

Capítulo 4. Estado del arte. Recoge la información de un estudio realizado a nivel

teórico del entorno Big Data, algoritmos y las tecnologías, profundizando más en

una de ellas (Apache Spark).

Capítulo 5. Desarrollo del proyecto. Muy detalladamente se explica paso a paso

todo lo necesario para una correcta instalación y puesta en marcha de la tecnología

utilizada en el TFG.

Capítulo 6. Pruebas y resultados. En este capítulo se llevan a cabo una serie de

pruebas para la extracción de datos y para comprobar el funcionamiento de Spark

en diversas situaciones. Todo ello para concluir hasta donde deja de ser útil y

productiva esta tecnología y conocerla un poco más para poder sacarle el máximo

partido.

Capítulo 7. Estudio económico. Se hará un estudio sobre los costes totales que

ha supuesto realizar este trabajo teniendo en cuenta los costes de Hardware,

Software y los honorarios.

Page 14: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

14

Capítulo 8. Conclusiones sobre el TFG y trabajos futuros. Se exponen las

conclusiones extraídas a lo largo del desarrollo del trabajo, así como una idea de

trabajos futuros.

Capítulo 9. Bibliografía. Reseñas a libros, documentos online, revistas,

videotutoriales y sitios web que se han consultado durante la realización del TFG.

Page 15: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

15

3. OBJETIVOS

En este proyecto se hará una investigación y se trabajará con Apache Spark

utilizando Python como lenguaje. Concretamente los objetivos de este proyecto son:

Estudio del arte de Big Data, conocer sus plataformas de desarrollo y utilización

estudiando y comparando con otra tecnología Opensource, profundizando en

Apache Spark.

Con el resultado de este estudio y conocimientos adquiridos, puesta en marcha del

entorno necesario para la creación y configuración de un clúster con Apache Spark

para la ejecución de códigos utilizando el entorno web jupyter notebook. Todo ello

en sistema operativo Linux (distribución Ubuntu 17.10).

Poner a prueba las competencias de Spark para extraer conocimientos sobre un

conjunto de datos utilizando MLlib con un código programado en Python.

Obtener conclusiones del resultado obtenido evaluando el funcionamiento

(paralelización de tareas) y eficacia (reducción de tiempos) de Spark.

Los objetivos planteados se resumen en aplicar técnicas de Big Data para estudiar

y extraer conocimiento de colecciones de datos aplicando distintas estrategias

(programando algunas aplicaciones) y manejando plataformas específicas de Big Data.

Page 16: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

16

4. ESTADO DEL ARTE

En este apartado se ha hecho un estudio teórico del entorno Big Data, de los

algoritmos más utilizados para el tratamiento de datos y la profundización en la tecnología

escogida para trabajar que es Apache Spark.

Todo ello para la mejor comprensión de los motivos que llevan la realización de este

trabajo y el aprendizaje teórico del framework Apache Spark.

4.1. Big Data

Este apartado es el punto de partida de este trabajo. Se explicará que es Big Data,

sus aplicaciones y porque tenerlo en consideración en el mundo actual es tan importante.

Con ello se llegará a comprender la idea de desarrollar tecnologías para el

tratamiento de datos que aporten con su utilización ventajas competitivas.

4.1.1. Definición

El término Big Data es reciente y ha ido adquiriendo importancia y fuerza en el

mundo de las TIC (Tecnologías de la información y comunicación) a causa de la evolución

tecnológica que estamos viviendo.

En la actualidad no hay una definición oficial de Big Data, aunque existen varias

enfocadas desde diferentes perspectivas, todas ellas complementarias, presentadas a

continuación:

Datos demasiado voluminosos o muy desestructurados para ser gestionados y

analizados a través de medios tradicionales. “Kwon (2014)”. [1]

Se refiere al conjunto de datos cuyo tamaño está más allá de la habilidad de

herramientas típicas de banco de datos en capturar, gestionar y analizar. “Di

Martino et al. (2014)”. [2]

Page 17: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

17

Son un conjunto de datos que tan grandes que se tornan difíciles de trabajar con el

uso de herramientas actualmente disponibles. “Rajesh (2013)”. [3]

Haciendo síntesis entre las definiciones se puede concluir que Big Data son grandes

volúmenes de datos, estructurados o no, y diferentes procedimientos y tratamientos de

estos datos de diversas fuentes, que deben ser gestionados y analizados de una forma

peculiar con objetivo de conseguir valiosa información de los mismos.

Además de esto, existen otras características apuntadas por el Analista de Gartner,

Doug Laney, que introdujo el famoso concepto de 3 V en su publicación de 2001

Metagroup: Volumen, variedad y velocidad:

Volumen: Se refiere esencialmente a las grandes cantidades de datos que se

generan de forma continua. Según las previsiones de Gartner, en 2020 más de 25

mil millones de dispositivos estarán conectados a Internet, acrecentando un

volumen de datos superior a los 40 zettabytes en el planeta.

Variedad: Big Data combina datos de diferentes orígenes y formatos no

homogéneos ni predefinidos.

Velocidad: No solamente es la alta frecuencia con la generan los datos sino a la

necesidad de dar respuesta en tiempo real.

Cabe resaltar que Big Data, en su gran mayoría, es un conjunto de datos creciente

en el que a cada milésima de segundo son introducidos datos nuevos, siendo así, el mundo

actual de los datos digitalizados contiene una inimaginable cantidad de informaciones.

Esto hace que el tratamiento de esta información cree problemas de procesamiento

y no pueda realizarse de la forma tradicional. No es solución un hardware más potente

porque, aunque procesemos la información más rápido, la velocidad de acceso al disco no

es tan rápida proporcionalmente hablando por lo que tenemos “cuello de botella”.

Actualmente hay dos enfoques generales para Big Data:

Divide y conquista usando Clústers: el enorme conjunto de datos se divide en partes

más pequeñas y se procesa en paralelo usando muchos servidores.

Brute Force: Un servidor muy poderoso con almacenamiento masivo se usa para

comprimir el conjunto de datos en una sola unidad.

La solución más factible es un procesamiento distribuido a través de arquitecturas

en clúster formado por distintos nodos que serán los encargados del procesado de datos.

La construcción de los ordenadores del clúster es más fácil y económica debido a

su flexibilidad. Para que funcione es necesario proveer un sistema de manejo del clúster

Page 18: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

18

que interactúe con cada usuario y sus procesos correspondientes para optimizar el

funcionamiento.

Los clústers serán más eficientes cuanto mejor cumplan las siguientes

características:

Escalabilidad y capacidad de expansión

Balanceo de carga

Rápidas comunicaciones de red

Alto rendimiento

Alta disponibilidad

En estas arquitecturas clúster también surgen algunos problemas a resolver:

sincronización, consistencia de datos, Ancho de banda y tratamiento de errores.

4.1.2. Enfoque de funcionamiento

La tecnología de Big Data permite tratar de una forma económica estos datos. Se

tienen los datos y la tecnología. ¿Qué camino tomar?.

Primero preguntarse qué información se tiene disponible. Muchas empresas no son

conscientes de la información que poseen ni como la pueden explotar. Hay que saber que

datos se tienen, calidad de esos datos y que volumen se están trabajando. Hay que tener

un análisis detallado de que se posee y que valor nos puede aportar.

Al iniciar un proyecto de Big Data se puede poner una plataforma propietaria en

Cloud que permite rápidamente sin gran inversión disponer de un entorno Big Data y se

puede crear nuestra infraestructura y comprar servidores económicos que requieren

mantenimiento, espacio, infraestructura.

La siguiente decisión es que tecnología o plataforma se va a utilizar (Sobre hadoop,

Spark, otras tecnologías opensource, etc.).

Una vez se ha visto la disponibilidad de datos y la plataforma que se utilizará, dentro

de esa plataforma, se verá como enriquecer nuestro almacén de datos corporativo (Data

Warehouse) con toda esa información que hasta ahora no se estaba tratando.

La propuesta es ampliar las capacidades del Data Warehouse corporativo con esa

información no estructurada que se puede obtener con las herramientas de la plataforma

Page 19: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

19

Ilustración 1. Ampliar capacidades DWH corporativo

Ilustración 2. Mejorar DataWarehouse

que utilicemos. Se busca, analiza y trata la información que nos aporta valor, hacemos un

análisis de sentimiento y el resultado de todo esto lo añadimos a nuestro Data Warehouse

para que esté disponible para el usuario final para enriquecer su análisis de datos y su

reporting. Esta es la visión más fácil de proyectos de Big Data.

Ampliar las capacidades del DWH corporativo:

Dentro del mismo entorno es posible utilizar Big Data para mejorar el

Datawarehouse. Se puede poner la información histórica que no queremos perder pero

que no se utiliza y pasarla a un entorno Big Data que es más económico que un motor de

base de datos tradicional. Se reducen costes y se mejora rendimiento sin perder esa

información. Para el día a día se utiliza información del Datawarehouse y para las consultas

puntuales de datos históricos se puede atacar el entorno de Big Data.

Page 20: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

20

Otra consideración es optimizar esos procesos que las herramientas están llevando

a cabo, pero requieren muchos recursos. Se utiliza mapReduce y el procesamiento en

paralelo además de las capacidades de Big Data para intentar que todo se agilice. Se

incrementa la velocidad añadiendo nodos en nuestro entorno de Big Data.

4.1.3. Aplicaciones

Big Data lentamente se está volviendo omnipresente. Cada entorno de negocios,

salud o estándares generales de vida ahora pueden implementar análisis de Big Data. Las

principales aplicaciones de Big Data son:

Visualización de datos (El tercer ojo): Las organizaciones en todo el mundo están

reconociendo la importancia del análisis de Big Data. Es la solución definitiva para

la ejecución de diferentes trabajos beneficiosos para estas que antes eran

imposibles de llevar a cabo, como pueden ser el estudio de sus clientes y sus

comportamientos o el descubrimiento de actividades fraudulentas.

La visualización de datos ha hecho que empresas como Facebook, Google o Twitter

empleen las capacidades de Big Data asegurando así un retorno de inversión

mucho mayor lo que les proporcionará una estabilidad en el negocio.

Integración. Las empresas debido a la integración de las competencias digitales se

están reformando, lo que les está aportando más precisión y velocidad y les hace

poder evolucionar y desarrollarse de una manera más rápida. El análisis Big Data

está siendo un factor importante ayudando a incrementar los ingresos y disminuir

los costes.

Big Data en la asistencia sanitaria: Big Data está presente en todos los aspectos

desde el diagnóstico de posibles riesgos para la salud hasta la investigación médica

compleja. Dispositivos como pulseras de actividad o smartwatch entre otros,

permiten al usuario rastrear y cargar datos que se compilarán y pondrán a

disposición de los médicos, lo que los ayudará en el diagnóstico. IBM ha tomado la

iniciativa a gran escala para implementar Big Data en sistemas de salud,

colaborando con Fletcher Allen o con la Premier Health Alliance para cambiar la

forma en que los datos clínicos no estructurados pero útiles están disponibles para

más médicos. Sundar Ram de Oracle declaró, las soluciones Big Data pueden

ayudar a la industria a adquirir y organizar estos datos para optimizar la asignación

Page 21: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

21

de recursos, eliminar ineficiencias, reducir el costo del tratamiento, mejorar el

acceso a la atención médica y avanzar en la investigación médica.

Big Data también se puede utilizar en importantes ensayos clínicos como la cura

para diversas formas de cáncer y el desarrollo de medicamentos a medida para

pacientes individuales de acuerdo con su composición genética.

Big Data y las finanzas: Para entender mejor los resultados financieros y evitar

pérdidas, se necesitan herramientas tecnológicas capaces de lidiar con grandes

volúmenes de datos. [4] En Warwick Business School basándose en los

documentos de Google, MTurk (Amazon Mechanical Trunk) y Wikipedia entre 2004

y 2012 estudiaron la relación que había entre las búsquedas sobre política o

negocios y los movimientos de mercado, revelándose que cuando se producen

muchas búsquedas de contenido político seguidamente se produce una caída del

mercado financiero. En general, Big Data va a tener un gran éxito innovando el

sector de las finanzas.

Big Data para la detección de fraude: El fraude es un problema global que causa

pérdidas billonarias. Prevenirlo es un factor importante para el éxito de las

empresas y la respuesta está en la utilización de Big Data. Actualmente su uso en

este ámbito es muy bajo debido a la falta de información y experiencia sobre el

tratamiento de datos en este tema y la carencia de tecnología.

[5] Un enfoque de 10 pasos ha sido sugerido por Infosys para implementar análisis

para detección de fraude:

1. Realice un análisis DAFO (Debilidades, Amenazas, Fortalezas y

Oportunidades,) de los paradigmas existentes de detección de fraude.

2. Construir un equipo dedicado a la gestión de fraude.

3. Desarrollar o comprar un software de análisis de datos apropiado.

4. Integrar datos y eliminar ineficiencias en los procesos.

5. Elaborar reglas de obligaciones comerciales relevantes.

6. Proyectar los umbrales para la detección de errores o discrepancias.

7. Implementar un análisis predictivo para determinar posibles discrepancias y

fraudes.

8. Utilizar el análisis de redes sociales para determinar actividades

fraudulentas.

Page 22: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

22

Ilustración 3. IBM Social Media Analytics Framework

9. Desarrollar un sistema integrado de gestión de casos que aproveche las

redes sociales.

10. Continuar con una extensa investigación para integrar los sistemas

existentes de detección de fraude con un nuevo conjunto de técnicas

desarrolladas.

Big Data y análisis de sentimiento: El análisis de sentimiento es, de lejos, la

aplicación de Big Data más utilizada. En la actualidad, se producen millones de

conversaciones en las redes sociales, que cuando se aprovechan pueden ayudar

a cualquier empresa a determinar nuevos patrones, proteger su imagen de marca

y visualizar la base de consumidores para mejorar la comercialización del producto

y la experiencia general del cliente.

IBM ha desarrollado IBM Social Media Analytics [6] que es una poderosa solución

SaaS (software como servicio). Captura datos estructurados y no estructurados de

los sitios de redes sociales para desarrollar una comprensión integral de las

actitudes, opiniones y tendencias. Seguidamente, aplica herramientas de análisis

predictivo para determinar el comportamiento y mejorar la experiencia del cliente.

Esto puede ayudar a la empresa a crear campañas y promociones personalizadas

para aumentar la base de consumidores.

Ha presentado su marco de trabajo como el siguiente:

Big Data y la industria alimentaria: Tanto para mantener la calidad de los alimentos

de grandes cadenas de comida rápida en cualquier parte del mundo o como para

Page 23: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

23

entender las grandes demandas de los consumidores, Big Data es la solución

siendo capaz de impulsar todas las fases de producción desde el cultivo de

alimentos hasta la venta. Empresas se benefician del análisis de Big Data para

investigar en las preferencias de los clientes dependiendo de su condición, sexo u

localización y proponer ofertas personalizadas con el objetivo de agradarles lo

máximo posible y afiliar nuevos clientes.

Big Data para la industria de las telecomunicaciones: Con el fin de mejorar el

servicio al cliente y la satisfacción, los conceptos de Big Data y Machine Learning

se están implementando progresivamente. Los beneficios de usar tales tecnologías

son inmensos ya que las interrupciones operacionales pueden ser pronosticadas,

prevenidas y recuperadas. Los datos procesados en tiempo real se pueden usar

para asignar dinámicamente el ancho de banda para reducir la congestión y las

interrupciones.

Para conocer algunos ejemplos, varios de los proyectos que ya están arrancados

son:

- Gestión de transportes y flotas: TomTom está desarrollando proyecto Big

Data en tiempo real que analiza donde están situados sus GPS, volumen de

tráfico y tiene en cuenta en tiempo real densidad de tráfico en función de

sus dispositivos.

- Gestión de redes, mantenimiento de preventivo de redes, análisis demanda

de agua y energía.

- Proyectos en áreas de call center para analizar calidad de servicio y

sentimientos.

- Banca con detección de fraude y visión 360 del cliente.

- Tecnología informática con los backups, archiving de datos históricos,

análisis de logs y optimización de procesos.

- Smart cities, edificios inteligentes, análisis de medio ambiente, transporte y

educación e intentan ampliar añadiendo dispositivos como sonómetros,

cámaras y tratar la información que puede generar una ciudad.

- Recogida y explotación de información útil sobre jugadores y tiempos en el

mundo futbolístico.

En resumen, Big Data ya está aquí, es una tecnología nueva y económica que ya

está en el mercado y se está haciendo uso de ella. Es una tecnología económica que se

puede arrancar con opensource y nos permite ir creciendo a medida que lo necesitamos

sin necesidad de que los proyectos sean grandes proyectos con grandes inversiones en

Page 24: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

24

infraestructura y software. Hay que conseguir que los proyectos tengan un retorno a corto

plazo y estén alineados con las expectativas de negocio y generen valor poco a poco.

4.1.4. Antecedentes

Inicialmente, se hace necesario un entendimiento de las relaciones básicas entre

datos, información y conocimiento. Según Batra [7], esta relación jerárquica tiene orígenes

en el área de tecnología de información (IT), pues comprender la distinción entre datos e

informaciones es un prerrequisito para la disciplina de sistema de información.

El sistema de procesamiento de datos tiene dos componentes: la entrada, que son

los datos y la salida que es la información que se analiza a través del sistema y ha sido

tratada. Siempre que una decisión es tomada y que es cumplida, esto lleva a una

transacción o una serie de operaciones que están ocurriendo. Así, el resultado secundario

de cualquier transacción concluida es la generación de datos, y dependiendo de la

naturaleza del sistema de procesamiento de transacciones (sea online, en tiempo real u

off-line), las informaciones como la salida también son actualizadas, y este proceso cíclico

continua.

[8] La información es convertida en conocimiento, una vez que ella es procesada

en la mente del individuo y el conocimiento se transforma en información al articularse y

mostrase en forma de gráficos, textos, palabras y otros símbolos. Siendo así, la gestión del

conocimiento se ha concentrado en aspectos del conocimiento que pueden volverlo más

fácil o más difícil de ser capturado y compartido, por ejemplo, por medio de la

transformación del conocimiento tácito en explícito. Seguidamente, para que las

organizaciones tengan éxito, deben estar capacitadas para capturar, integrar, crear y

utilizar el conocimiento de manera disciplinada, sistemática y estratégica.

La creación de conocimiento organizacional refleja la capacidad de la organización

de generar nuevos conocimientos, distribuirlos e incorporarlos. Nonaka y Takeuchi (1997)

[8] defienden que comprende dos dimensiones: una epistemológica y otra ontológica. La

dimensión epistemológica se basa en la diferenciación entre el conocimiento tácito y el

conocimiento explícito. Ya la dimensión ontológica se refiere a los niveles de creación del

conocimiento como individual, grupal y organizacional.

La gestión del conocimiento surge cuando la organización es capaz de reunir,

almacenar y transferir conocimientos, proporcionando el acceso a las fuentes de

Page 25: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

25

conocimiento por medio de mecanismos de identificación y recuperación de informaciones,

visando a la aplicación del conocimiento a las necesidades específicas de la organización.

Los autores Alavi y Leidner, [9] consideran una clasificación amplia conteniendo

cuatro procesos básicos: creación, almacenamiento/recuperación, transferencia y

aplicación del conocimiento. Tal propuesta fue hecha con el objetivo de investigar el papel

de la tecnología de la información en el soporte a los procesos de gestión de conocimiento.

HANSEN, M. T. et al. [10] sugieren que la estrategia de gestión de conocimiento

sea un mix de codificación (enfocada en las tecnologías) y de personalización (enfocada

en los recursos):

Estrategia de codificación: Tiene como objetivo capturar y codificar el conocimiento

tácito en una forma explícita (manuales, documentos, procedimientos) y dejarlo

disponible para la reutilización de toda la organización.

Estrategia de personalización: Busca desarrollar las relaciones interpersonales de

modo que estas promuevan compartir el conocimiento tácito en toda la

organización.

Todavía lo que se observa es el rápido crecimiento de los varios esfuerzos

analíticos y de inteligencia. Con eso, los activos intangibles potencialmente valiosos son

encontrados en una variedad de lugares, en el interior y fuera de la empresa [11]. Esto

puede indicar una potencial ligación con el Big Data. Para ilustrar ese punto, se tiene la

jerarquía apuntada entre datos, información y conocimiento, pero cuando se habla en

grandes volúmenes de datos, no está claro si esa relación se mantiene. Por tanto, se

evidencia la necesidad de avanzar en los estudios sobre la relación entre gestión de

conocimiento y Big Data.

4.1.5. Tipos de proyectos

Existen varios tipos de proyectos Big Data para implementar que pueden aportar

valor de negocio. Estos se pueden estructurar en:

Análisis de sentimientos en redes sociales. Una red social como Twitter puede ser

una fuente de información excelente para extraer estadísticas sociales ya que la

gente utiliza esta plataforma para expresar ideas y opiniones públicamente y

cualquier persona o compañía puede beneficiarse de toda esta información.

Page 26: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

26

Tratar información de dispositivos (sonómetro, TomTom, etc.). El tratamiento de

información de dispositivos en tiempo real como un GPS o un sonómetro puede

mejorar la gestión del ruido y tráfico y a su vez la calidad ambiental de las ciudades

convirtiéndolas en Smart Cities.

Optimización de datawarehouse. Como he explicado anteriormente, la información

que no se quiere perder se pasa a un entorno Big Data reduciendo costes y

mejorando el rendimiento. Este tipo de proyecto es el desarrollado en este trabajo.

Tratamiento de imágenes, audio, análisis de texto.

4.1.6. Tecnologías que utiliza Big Data.

Existen diversas tecnologías opensource que están especializadas en el

tratamiento de datos, como pueden ser Flink Apache, SAP HANA entre otras, pero se

pueden destacar principalmente estos dos frameworks:

APACHE HADOOP: [13] Es un framework que permite el almacenamiento y el

procesamiento distribuido de grandes conjuntos de datos en

clústers de computadores utilizando modelos de

programación simple que brinda a las organizaciones la

oportunidad obtener conocimiento rápidamente a partir de

grandes cantidades de datos. El marco de Hadoop es de

código abierto, brinda aplicaciones de confiabilidad y

movimiento de datos e implementa MapReduce , donde la

aplicación divide el trabajo en pequeñas partes que pueden ser ejecutadas en el

nodo del clúster que se desee. Este proyecto es administrado por Apache Software

Foundation.

Esta tecnología fue creada por Doug Cutting, el creador de Apache Lucene, la

biblioteca de búsqueda de texto ampliamente utilizada. Hadoop radica en Apache

Nutch, un motor de búsqueda de código abierto, que se basa proyecto Lucene.

La arquitectura de Hadoop, cuyos componentes principales se muestran a

continuación está compuesta por los siguientes módulos:

- Sistema de ficheros: El funcionamiento de Hadoop se basa HDFS (Hadoop

Distributed File System), un sistema de ficheros distribuido.

Ilustración 4. Apache hadoop

Page 27: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

27

Ilustración 5. Arquitectura HDFS

Ilustración 6. Arquitectura MapReduce

Ilustración 7. Arquitectura YARN

- Hadoop MapReduce: El motor de Hadoop se compone de un planificador

de tareas MapReduce, con nodos que cumplen con los trabajos.

- Hadoop YARN: Entorno encargado de la planificación de tareas y gestión

de recursos del clúster.

Page 28: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

28

Ilustración 8. Hadoop EcoSystem

La idea de YARN es dividir las dos principales responsabilidades de

JobTracker/TaskTracker en entidades separadas: un Resource Manager

global, un ApplicationMaster por aplicación, un NodeManager esclavo por

nodo y un contenedor por aplicación ejecutándose en un NodeManager.

- Hadoop Common: Hace posible la integración de subproyectos de Hadoop.

Estos módulos están diseñados con la suposición fundamental de que las fallas de

hardware son comunes y deben ser manejadas automáticamente en el software por

el marco.

Este es el ecosistema básico de Apache Hadoop.

Un clúster hadoop está compuesto por un nodo maestro y vario nodos esclavos.

Hadoop tiene tres formas de ejecución:

- Modo local / standalone: (En un solo nodo) No hay servicios, el modo

predeterminado es no-distribuido como un único proceso Java y es útil para

el proceso de depuración.

Page 29: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

29

- Modo pseudo-distribuido: (En un solo nodo) Cada servicio Hadoop se

ejecuta en un proceso Java diferente.

- Modo distribuido: (En un clúster) Cada servicio se ejecuta sobre su propio

servicio Java en un clúster aprovechando toda la potencia de Hadoop

Hadoop tiene recursos para [14]:

- Acceso a Datos: Garantiza una gran accesibilidad ya que posibilita que en

tiempo real se interactue con los datos y de diversas maneras. Las

aplicaciones de Hadoop que lo consiguen son: Apache Hive, MapReduce,

Apache Pig, Apache HCatalog, Apache Hive, Apache HBase, Apache

Storm, Apache Kafka, Apache Mahout y Apache Accumulo.

- Gestión de datos: con HDFS es posible tratar y almacenar infinidad de datos

en en una capa de almacenamiento. HDFS trabaja con Apache Hadoop

HILO que es un entorno que ofrece la posibilidad de planificar y gestionar

las tareas y recursos.

- Gobernabilidad e integración de datos: Permite cargar rápida y

eficientemente los datos con la ayuda de: Apache Falcon (encargado de

gestionar el procesamiento y la vida los de datos), Apache Flume y Apache

Sqoop (mueve datos dentro y fuera de la plataforma).

- Seguridad y confidencialidad: Apache Knox, en un clúster, ofrece

autorización y acceso a los servicios.

- Operaciones: Apache Ambari facilita una interfaz junto con APIs, Apache

Zookeeper coordina procesos distribuidos y Apache Oozie nos garantiza

una lógica de trabajo.

Sus principales cualidades son:

- Escalabilidad: Un clúster puede crecer simplemente añadiendo nodos,

permitiendo un crecimiento fácil. Gracias al procesamiento distribuido

MapReduce, los archivos se dividen en bloques de forma sencilla

- Velocidad: Permite ejecutar procesamientos y realizar análisis de manera

rápida y eficaz.

- Efectividad en costes: La inversión de almacenamiento por terabyte decrece

pudiendo ser incluso 100 veces menor. Esto es debido a la forma de

almacenaje de datos, descartando por completo la manera tradicional en

Page 30: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

30

filas y columnas y asignando datos categorizados a través de múltiples

computadoras baratas.

- Flexibilidad: Al incrementar los nodos, también incrementa la capacidad de

almacenamiento y procesamiento, siendo posible agregar o acceder a

nuevas fuentes de datos, añadir herramientas e integrar otros aspectos. Con

esto es posible adaptarse a las necesidades del negocio y

consecuentemente es capaz de dar soluciones ante cualquier decisión u

adversidad.

- Tolerante a fallos: Es posible recuperar datos de forma segura ya que cada

nodo contiene la información y réplicas en otros nodos del clúster.

APACHE SPARK: Al igual que hadoop es un framework

que se utiliza para el análisis y procesado de grandes

cantidades de datos. Está explicado detalladamente a

continuación, en el apartado 4.3. Apache Spark.

Estos dos frameworks llevan a cabo muchas tareas de la misma forma, pero hay

sectores donde ambos difieren. Para hacer una comparativa más objetiva, se van a

clasificar en 3 formas:

1. Facilidad de uso: Apache Spark puede contar con APIs fáciles de utilizar en algunos

de sus lenguajes como son Python, Scala, Spark SQL y Java.

Por otro lado, Apache Hadoop que utiliza MapReduce hace que sea necesaria más

programación, lo que lo hace más complicado, aunque tiene utensilios como Hive y

Pig que facilitan su uso.

2. Rendimiento: No es tan fácil deducir algo claro en cuál de los dos logra un mayor

desempeño ya que cada uno procesa los datos de manera diferente.

Hadoop:

- Contra: Los datos están almacenados en el disco por lo que lo torna más

lento.

- Ventaja: Necesita menos memoria de almacenamiento.

- Ventaja: Al eliminar datos cuando no se necesitan cuando trabaja con

aplicaciones pesadas, el rendimiento se queda intacto.

Ilustración 9. Apache Spark

Page 31: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

31

Spark:

- Contra: Necesita más memoria de almacenamiento.

- Contra: Como utiliza aplicaciones pesadas, puede disminuir su rendimiento.

- Ventaja: Trabaja in memory, por lo que los procesos se aceleran.

3. Seguridad: En este ámbito, Hadoop gana con creces:

- HDFS al admitir la autorización solamente a nivel de servicio nos garantiza

el permiso apropiado para el cliente a nivel de archivo.

- Tiene Hadoop YARN.

- Hay desarrollos en otros proyectos de seguridad de Hadoop que les

proporcionan beneficios.

En cambio, Spark necesita ejecutar HDFS para conseguir permisos de nivel de

archivo y necesita Hadoop YARN para su seguridad.

También cabe considerar que Spark fue diseñado para solucionar muchos

problemas que se nos presentaban con Hadoop.

Sabiendo todo esto, se demuestra que en su propia área uno destaca por encima

del otro, por lo que se puede concluir que la mejor elección cuando tienes poco tamaño de

memoria y muchos datos es Hadoop, aunque Spark es lo mejor cuando necesitas fluidez

y ligereza en el tratamiento de datos.

Spark ya cuenta con numerosos proyectos exitosos y ha tenido una buena acogida

ya que ofrece muchas posibilidades a las empresas que utilizan grandes cantidades de

datos. Esto ha puesto de manifiesto la ventaja competitiva que ofrece.

4.1.7. Técnicas de análisis de datos

Los datos son almacenados con distintas tecnologías de almacenamiento por lo que

necesitamos distintas técnicas de análisis de datos. A continuación, se describen algunos

conceptos y algoritmos clave explotados en el análisis de datos:

Data Mining (minería de datos): Es el conjunto de técnicas y tecnologías que

permiten explorar grandes bases de datos para encontrar patrones repetitivos,

tendencias o reglas para explicar un comportamiento de datos en un determinado

contexto. Involucra campos como la estadística, inteligencia artificial, matemáticas

y la administración o manipulación de base de datos.

Page 32: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

32

La diferencia entre minería de datos tradicional en data warehouse tradicionales y

la minería de datos en Big Data radica en procesos similares, pero si se trata de

información heterogénea o no estructurada de diversos orígenes entonces es

imprescindible utilizar tecnologías Big Data.

Para la minería de datos, existe el modelo Cross Industry Standard Process for Data

Mining (CRISP-DM) y consta de los siguientes procesos: Entendimiento comercial

y determinación de objetivos, entendimiento de datos, preparación de datos,

modelado, evaluación y despliegue del plan.

Asociación: Son un conjunto de técnicas que permiten descubrir relaciones

interesantes entre diferentes variables, hechos comunes dentro de un determinado

conjunto de datos. Aplican una variedad de algoritmos para generar y testear pautas

posibles.

Test A/B: Técnica que se utiliza para comparar un elemento con una variedad de

elementos de test para evaluarlos y apreciar cambios o mejoras en base a una

variable. A/B/N testing compara con N variables.

Clasificación o aprendizaje supervisado: suministrando datos de entrada y la salida

que se espera del algoritmo, en función de los datos suministrados el algoritmo se

entrena, siendo liberado posteriormente proporcionándole datos de entrada reales

para que obtenga salidas en base al aprendizaje inicial. A medida que se usa se va

perfeccionando.

Agrupación, análisis de clúster (clústering): Clasifica objetos dividiendo grupo en

partes más pequeñas compuestas por objetos semejantes, siendo así que divide

grupos de individuos en grupos más pequeños para encontrar similitudes entre ellos

y encontrar cualidades que lo definen.

Es muy usado en departamento de marketing para hacer segmentaciones de

mercados, clasificar perfil de riesgo de un cliente en un seguro, análisis de

imágenes, redes sociales etc. Existen clases de algoritmos de clústering: K-means,

C-means, agrupación jerárquica, que buscan el agrupamiento óptimo mediante

iteraciones y densidad en el espacio euclídeo.

Métodos de previsión: técnicas que se basan en datos históricos para estimar los

valores futuros. Pueden ser métodos paramétricos o no paramétricos.

Metodología muy utilizada para hacer previsiones económicas, aprovisionamientos

en una cadena de producción, previsiones en ventas y meteorológicas entre otras.

Crowdsourcing o filtrado colaborativo: técnica de recolección de datos basada en la

colaboración de los usuarios, en la que un conjunto de personas conectadas en red

Page 33: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

33

realizan una tarea. Se trata de buscar patrones y utilizarlos para ayudar a la gente

a buscar intereses tanto positivos como negativos.

Fusión e integración de datos: Proceso en el que integran y analizan múltiples

conocimientos y datos de diversas fuentes para realizar una representación de la

información de una forma más coherente y precisa que si se analizaran con una

sola fuente. Un ejemplo puede ser la recolección de datos de sensores conectados

en el “internet de las cosas” y combinarlos para integrarlos con el rendimiento de

una producción alimentaria.

Aprendizaje ensemble (ensemble learning): Utiliza varios modelos predictivos

desarrollados estadísticos o machine learning para conseguir más rendimiento. Es

un aprendizaje supervisado.

Algoritmos genéticos: Con el objetivo de optimizar datos, esta técnica está basada

en la base genética de la evolución biológica, la supervivencia del mejor adaptado.

Los mejores serán codificados como cromosomas y estos se seleccionan y

combinan genéticamente para cruzarlos y mutar. A continuación, se pone a prueba

su supervivencia en un entorno característico donde se observan las fortalezas y

debilidades delos individuos creados.

Este tipo de algoritmos son ideales para la resolución de problemas no lineales

aplicado en campos como optimización logística, análisis lingüístico, previsión de

conducta en mercados financieros, etc.

Aprendizaje automático (Machine Learning): Perteneciente al ámbito de inteligencia

artificial, diseña, crea y desarrolla algoritmos que permite revisar datos y predecir

futuros comportamientos basados en datos empíricos. El objetivo principal es que

mejoren de forma autónoma a lo largo del tiempo siendo capaces de reconocer

patrones complejos y tomar sus propias decisiones. El ejemplo más reconocido por

la mayoría de personas es Siri o Google Now, integrados en sus smartphones.

Redes neuronales: son modelos matemáticos que al igual que las conexiones

cerebrales, llevan a cabo tareas y reconocen patrones entre datos. La red tiene un

primer conjunto de nodos de entrada, seguida de diferentes capas de nodos

intermedias y ocultas y un último conjunto de nodos de salida. Cada nodo tiene un

valor en las decisiones del proceso. Se les proporciona datos a los nodos de entrada

que por ensayo el algoritmo ajusta el valor de cada nodo hasta conseguir un criterio

de parada definido.

Page 34: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

34

Son ideales para técnicas de optimización y para la búsqueda de patrones no

lineales. Es usado en aplicaciones meteorológicas, reconocimiento facial,

reconocimiento de texto, detección de fraude, etc.

Análisis de redes: Técnicas analizan relaciones entre nodos de una red completa y

los caracterizan en un gráfico o red. En redes sociales se puede determinar quien

ejerce mayor influencia y como fluye la información.

Algunas de sus aplicaciones prácticas pueden ser identificar líderes según sus

relaciones y utilizarlos para el comercio o registrar flujos de información de las

compañías para poder detectar algún posible cuello de botella.

Análisis de sentimiento: Incluye técnicas analíticas para la identificación y

extracción de información. Comúnmente utilizado en redes sociales para el estudio

de reacciones ante un producto u anuncio.

Análisis espacial: Técnicas estadísticas que analizan la información geográfica

recogida mediante con sistemas de información característicos y que sirven para

conocer los intereses de mercado en una determinada localización.

Análisis de grafos: El objetivo es hacer una representación de los datos y sus

relaciones para facilitar detección de relaciones o dependencias e identificar

conexiones entre nodos.

La aplicación de este tipo de algoritmo puede ser en representación de redes de

telecomunicaciones, identificación de patrones, planificación de rutas, problemas

logísticos, etc.

Análisis de texto (text analytics): Permite extraer información de los textos

generados por personas en correos, web o contenidos para modelar temas o

predecir palabras.

4.2. Algoritmos

La inmensa cantidad de datos que encontramos en Big Data son tratados mediante

algoritmos. A continuación, se describen los algoritmos más utilizados en el tratamiento de

datos.

Page 35: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

35

Ilustración 10. Relación entre tipos de algoritmos y variables

4.2.1. Algoritmos de Machine Learning.

El objetivo principal de los algoritmos de machine learning es que mejoren de forma

autónoma a lo largo del tiempo siendo capaces de reconocer patrones complejos y tomar

sus propias decisiones.

Se eligen los tipos de algoritmos a utilizar en función de dos variables. La primera

variable la podemos clasificar en:

Discretas: Hay un número de valores de salida concreto (lluvia, niebla, etc.).

Continuas: Ejemplo el precio de una casa.

La segunda variable se clasifica en:

Tipo de aprendizaje supervisado: Las posibles salidas son conocidas y definidas.

Tipo de aprendizaje no supervisado: Las posibles salidas no están definidas, el

sistema las deducirá solo.

En la siguiente imagen encontramos la clasificación:

Los tipos de algoritmos machine learning son: Clasificación, regresión, identificar

similitudes, clústering, agrupar co-ocurrencias (busca asociaciones entre “entidades”

basadas en su coincidencia en transacciones), profiling o comportamientos típicos,

predicción de vínculos, modelado causal (detectar la influencia de unos hechos sobre otros)

y reducción de datos.

Page 36: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

36

Ilustración 11. Regresión lineal

4.2.1.1. Regresión lineal

La técnica de regresión lineal pertenece a la categoría de aprendizaje supervisado,

y dentro de ésta es de tipo regresión ya que su salida son valores continuos.

Consiste en la realización de un análisis estadístico con el objetivo de comprobar la

existencia de una relación entre la variable dependiente con una variable independiente

(regresión lineal simple) o varias (regresión lineal múltiple). La relación se obtendrá con

una ecuación que representará el diagrama de dispersión como el mostrado a

continuación.

a es la intersección de la línea con el eje. X media de la variable dependiente.

b pendiente (positiva o negativa). Xt es el pronóstico del periodo t.

t periodo de tiempo. 𝑡̅ media la variable independiente.

Tomando como referencia la línea de regresión, habrá un error asociado a la

distancia entre el valor observado (puntos) y la línea.

Para escoger el modelo se deben entender los requisitos del algoritmo y hay que

ser coherente con lo que acontece en la práctica teniendo en cuenta que el modelo

seleccionado debe ser apropiado tanto en el aspecto de la curva como en el grado para

representar el estudio, y debe tener solamente las variables que son relevantes para

explicarlo.

Unos ejemplos de uso de regresión lineal pueden ser para calcular la demanda de

los productos de una firma y publicidad o para calcular la variación de los sueldos y tasa

de desempleo.

Page 37: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

37

4.2.1.2. Clasificación

En los algoritmos de clasificación, como se explicó con anterioridad, suministrando

datos de entrada y la salida que se espera, el algoritmo se entrena, siendo liberado

posteriormente proporcionándole datos de entrada reales para que obtenga salidas en

base al aprendizaje inicial. A medida que se usa se va perfeccionando.

RRNN (redes neuronales):

Como se dijo anteriormente, al igual que las conexiones de las células del cerebro

buscan patrones entre datos. Su funcionamiento tiene un procedimiento simple,

dados unos parámetros se combinan de una manera concreta y se predicen ciertos

resultados.

Funcionan de la siguiente manera: se utilizan varias entradas, por lo que se tendrá

mucha información y son conectadas a varios nodos donde pasan a ser procesadas

y obtenemos una salida, que también puede ser la entrada de otra red neuronal.

Las diferentes posibilidades de conexiones entre capas de nodos pueden generar

n números de estructuras distintas.

Después de definir la red neuronal y su arquitectura, llega la fase de entrenamiento.

La red es capaz de reconocer variaciones de los estímulos entrenados. Si se

observa algún error se comunica y se adapta este nuevo conocimiento para su

futuro uso y la mejora de la precisión de la información.

Son aplicadas en problemas donde:

- La entrada es un valor discreto o real de gran dimensión.

- La salida es un valor discreto o real

- La salida es un vector de valores

- Es desconocida la función objetivo

Las redes neuronales tienen una gran flexibilidad siendo capaces de lidiar con datos

fuzzy, buscar patrones no lineares o ser un gran recurso para optimización.

Page 38: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

38

Ilustración 12. Redes neuronales

SVM (Máquinas de vectores de soporte)

Fueron creadas por Vladimir Vapnik y se basan en el aprendizaje estadístico. Al

aplicar esta técnica se obtienen resultados comparables a los obtenido por

algoritmos de aprendizaje.

Fueron pensadas para resolver problemas de clasificación, aunque también

algunas de sus aplicaciones pueden ser para categorización de textos o análisis de

imágenes.

Tienen una primera fase de entrenamiento donde se les informa con múltiples

ejemplos ya resueltos, en forma de pares {problema, solución} y una segunda fase

de uso para resolución de problemas.

¿Cómo funciona? Se mapea un conjunto de entradas para un nuevo espacio de

mayor dimensión llamado espacio de características. Encuentran una frontera de

decisión para la separación del conjunto de datos (clases).

La SVM encuentra la frontera de decisión óptima haciendo un proceso de

optimización continua en que busca encontrar el hiperplano que mejor separa las

dos clases utilizando funciones llamadas kernels. Estos permiten flexibilizar la

frontera permitiendo otras opciones aparte de un separador linear.

Page 39: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

39

Ilustración 13. SVM, clase 1 y clase 2 con frontera de decisión

K-NN (k vecinos más cercanos)

Es un algoritmo de clasificación basado en el vecino más próximo. Técnica muy

empleada para reconocer patrones. La clasificación de patrones está dividida en

dos fases:

- Fase de entrenamiento: consiste en, dada una base de entrenamiento,

almacenar en la memoria todos los patrones. El patrón tiene dos

características, un vector de valores y una clase.

- Fase de test: el algoritmo haciendo uso de los K-vecinos más próximos,

evalúa el desempeño del clasificador para la clasificación de nuevos

patrones.

Un nuevo elemento se clasifica en base a sus vecinos existentes pertenecientes a

un conjunto de entrenamiento. Calcula la distancia del elemento dado a cada

elemento de la base de entrenamiento. Los elementos de la base de entrenamiento

se ordenan de menos a más distancia, de los cuales se seleccionan los 5 más

cercanos.

Con el algoritmo K-NN se pueden conseguir suposiciones de valor en la inteligencia

artificial comparando acciones y movimientos con algunos realizados

anteriormente.

Para poder medir la distancia suele utilizarse la distancia Euclídea, δ. Es más fácil

de utilizar.

El aprendizaje de K-NN acontece en instante en que los datos de test son probados.

Page 40: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

40

Ilustración 14. Algoritmo knn

Ilustración 15. Algoritmo árboles de decisión

Se utiliza en datamining y aprendizaje automático.

ÁRBOLES DE DECISIÓN

Es un diagrama formado por un conjunto de nodos de decisión y preguntas que

permiten la clasificación de cada caso. Un individuo u organización puede comparar

posibles acciones dependiendo de sus intereses, probabilidades y gustos.

Un árbol de decisión comienza con un solo nodo que se divide en varios posibles

resultados. Estos resultados tendrán nodos adicionales que se van ramificando.

Tiene una toma de entrada que será un objeto o situación descrita por un conjunto

de atributos, que basándose en su valor, regresa una decisión ``verdadero/falso''.

Existen tres tipos de nodos: de probabilidad (señala las probabilidades de algunas

soluciones), de decisión (muestra una decisión siendo tomada) y de término

(muestra el resultado final de un camino de decisión).

Están limitados a hablar de un solo objeto, por lo que no podemos usar los árboles

de decisión para expresar pruebas sobre dos o más objetos diferentes.

Este método permite abordar los problemas de una manera estructurada y

sistemática para llegar a una conclusión lógica siendo uno de los algoritmos más

sencillos y fáciles de implementar y a su vez de los más poderosos.

Page 41: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

41

4.2.1.3. Clústering

Como se describió anteriormente, clasifica objetos separando un grupo en grupos

más pequeños de objetos similares, siendo así que divide grupos de individuos en grupos

más pequeños para encontrar similitudes entre ellos y encontrar cualidades que lo definen.

K-MEANS

K-means fue creado por James MacQueen en el año 1967, cuyo objetivo es dividir

un conjunto de datos en grupos intentando minimizar su error. Estos datos serán

divididos en x clústers fijados a priori y cada uno tendrá inicialmente un conjunto

aleatorio de centroides. Su desempeño dependerá de la posición de los centroides

iniciales y será mejor colocarlos lo más lejos el uno del otro. A continuación, se

tomará un punto perteneciente a un conjunto de datos y se asociará al centroide

más cercano y cuando no quede ningún punto por asignar estará completa la fase.

Es un ciclo que no se detendrá hasta que los centroides no tengan ningún punto de

reasignación y no se muevan más o hasta que se cumpla el número de iteraciones

fijado.

[15] El algoritmo tiene en resumen los siguientes pasos:

1. Se toman los centroides iniciales

2. Se toma un punto perteneciente a un conjunto de datos y se asigna al

centroide más cercano.

3. Reasigna los centroides usando:

cj : centroide.

| Cj | : número de elementos en el clúster Cj .

Z: elemento del conjunto de datos, que pertenece al clúster Cj ;

4. Repetir los pasos 2 y 3 hasta que se detenga el ciclo.

Ilustración 16. Fórmula k-means

Page 42: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

42

Ilustración 17. Diagrama Algoritmo k-means

4.2.2. Optimización

Cuando se toman decisiones para el diseño y la evaluación de una estrategia hay

que considerar la optimización del mismo. Optimizar es la búsqueda de soluciones a un

problema concreto y elegir la mejor solución entre las alternativas posibles que nos

garantice lo mejor.

Existe una gran dificultad en encontrar la mejor alternativa cuando el volumen de

datos es muy grande. Debido a esto, en las últimas décadas ha ido creciendo el desarrollo

de algoritmos de aproximación utilizando métodos heurísticos que ofrecen soluciones

aceptables en un tiempo de procesamiento compatible con las necesidades.

Si bien este apartado también se podría incluir en algoritmos de machine learning,

se ha darle un espacio único para resaltar la importancia y valor de los problemas de

optimización.

4.2.2.1. Algoritmos genéticos

También conocidos como algoritmos evolutivos, están basados en modelos

biológicos que emulan el proceso natural de evolución y la supervivencia del mejor

Page 43: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

43

Ilustración 18. Estructura algoritmo genético simple

adaptado. La evolución natural implementa mecanismos adaptativos de optimización

según la teoría de selección natural Darwin.

Los algoritmos genéticos son métodos computacionales de búsqueda en la que una

población de posibles soluciones para un problema concreto evoluciona y a medida que el

proceso evolutivo continua se presentan mejores soluciones.

Como fue explicado anteriormente, los mejores serán codificados como

cromosomas y estos se seleccionan y combinan genéticamente para cruzarlos y mutar.

Se usan frecuentemente en ingeniería, arquitectura, telecomunicaciones o

medicina. Dependiendo del problema que se quiere resolver distinguimos dos tipos de

algoritmos genéticos:

Algoritmo genético simple o Algoritmo Genético Canónico: Se aplica a

problemas de optimización simples y/o de pequeñas dimensiones en los que el

proceso de búsqueda actúa en una población definida de soluciones potenciales o

candidatas. En este algoritmo la codificación de variables es vinaria y los

operadores que se usan son de evolución, selección, cruzamiento y mutación.

Este tipo es el más utilizado y el que resulta más fácil de desarrollar en

programación.

Esta es la estructura del algoritmo genético simple:

Page 44: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

44

Ilustración 19. Algoritmo genético, ciclo reproductivo

Tiene un ciclo reproductivo que utiliza los siguientes mecanismos:

- Seleccionar población: proceso en el que los mejores cromosomas son

seleccionados y copiados para una población nueva en la que se cruzarán

y mutarán.

- Cruzar: se escogen dos cromosomas de la población para cruzarlos y tener

hijos que los van a sustituir en la siguiente generación.

- En la mutación se escoge aleatoriamente un gen y se altera su valor para

introducir diversidad genética.

- Inserción de los dos nuevos descendientes en una nueva generación.

Algoritmos genéticos paralelos: Es una adaptación de la versión simple de los

algoritmos genéticos para obtener mejoras significativas en cuanto a velocidad,

resultados y cantidad de datos a tratar con el algoritmo en paralelo. Existen dos

formas de implementación:

- Método global: se trabaja con una única población que tiene la evaluación

de los individuos distribuida entre los procesadores disponibles

- Método de las islas: cada nodo recibe una subpoblación que cambia

individuos con las otras.

4.2.2.2. PSO (Particle Swarm Optimization)

La optimización por enjambre de partículas (PSO), es un método de optimización

que utiliza agentes (partículas) que forman parte de un enjambre moviéndose en un

espacio en búsqueda de una solución óptima. Cada partícula es una potencial solución

Page 45: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

45

Ilustración 20. Pseudocódigo

para un problema que se mantiene en el enjambre. Está basado en principios psico-

sociológicos.

Las partículas vuelan por un espacio de búsqueda multidimensional donde la

velocidad y la posición de cada partícula es ajustada de acuerdo con la experiencia propia

(Factor cognitivo).

También tienen en cuenta el factor social ya que ignoran su propia experiencia y

tienden a moverse a partir del aprendizaje de las partículas vecinas. Funciona de la

siguiente manera:

4.2.2.3. Pittsburgh y Michigan approach

Son técnicas para aplicar métodos de aprendizaje evolutivos, esencialmente, un

conjunto de reglas "si / entonces" para realizar una tarea de manera efectiva.

PITTSBURGH APPROACH

Los individuos representan un conjunto o bases de reglas y evolucionan a través de

técnicas de computación con operadores genéticos que trabajan con un conjunto

de reglas borrosas. El objetivo es encontrar el mejor individuo de la población.

Page 46: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

46

Ilustración 21. Esquema Pittsburgh approach

Los que conforman el sistema para obtener el sistema de aprendizaje son:

- La población de base de reglas.

- El sistema de evaluación.

- El sistema de descubrimiento de base de reglas.

MICHIGAN APPROACH

Cada individuo representa una sola regla, y toda la población compone el conjunto

de reglas (base de conocimiento).

El sistema de exploración clasificador está basado en el enfoque de Michigan cuyos

fundamentos fueron establecidos por Holland (1975).

Los sistemas clasificadores son sistemas de reglas de producción que generan

automáticamente poblaciones de reglas que cooperan para lograr una tarea

deseada. Son sistemas paralelos basados en reglas que aprenden a través de la

asignación de recompensas y el descubrimiento de reglas.

Las generalmente operan en entornos que exhiben una o más de las siguientes

características:

1. Eventos novedosos acompañados de grandes cantidades de datos ruidosos

o irrelevantes.

2. Requisitos continuos para la acción, a menudo en tiempo real;

3. Objetivos definidos implícita o inexactamente

Page 47: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

47

Ilustración 22. Esquema Michigan approach, sistema clasificador

4. Recompensa escasa o refuerzo obtenible solo a través de largas secuencias

de acción.

Los sistemas clasificadores están diseñados para absorber nueva información de

forma continua desde dichos entornos, ideando conjuntos de hipótesis en

competencia (expresadas como reglas) sin alterar significativamente las

capacidades ya adquiridas.

En contraste con los sistemas expertos tradicionales donde las reglas son hechas

a mano por ingenieros de conocimiento, los sistemas clasificadores usa algoritmos

genéticos como un operador de descubrimiento para generar clasificadores. Cada

clasificador es una regla "si-entonces", con una parte de condición y una parte de

acción. Una lista de mensajes se usa para almacenar el estado ambiental actual y

cualquier mensaje interno.

Existen muchas configuraciones diferentes de CS en la literatura y algunos

aspectos han sido debatidos y aún son tema de debate.

El prototipo de organización es el siguiente y se compone por:

- El sistema de rendimiento.

- El sistema de asignación de credibilidad.

- El sistema de descubrimiento clasificador.

Page 48: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

48

En cierto sentido, las dos ideas de aprendizaje tienen campos de aplicación

parcialmente diferentes.

El enfoque de Michigan está principalmente relacionado con el aprendizaje continuo

(en línea) en problemas no inductivos, y está más cerca de la idea de representar el

conocimiento de una sola entidad que aprende a través de su interacción con el entorno (y

en consecuencia su adaptación),

Pittsburgh está particularmente adaptado para el entrenamiento en problemas

inductivos y no inductivos, y está más cerca de la idea de la evolución a través de la

competencia entre individuos y la adaptación al medio ambiente.

Para aclarar las coincidencias y las diferencias entre ambos enfoques, el enfoque

de Pittsburgh se describe utilizando una estructura similar a la utilizada para la de Michigan.

La diferencia más clara, al comparar las cifras, es que en el enfoque de Pittsburg la

población de soluciones candidatas existe como una entidad separada e independiente,

mientras que en el enfoque de Michigan está integrada en el sistema de desempeño. Esta

característica distintiva resulta del hecho de que el enfoque de Pittsburgh emplea una

población de base de reglas que se evalúan dentro del sistema basado en reglas, uno a la

vez.

Una segunda observación es la distribución de los feedbacks dentro del sistema de

evaluación que en el caso de Pittsburgh se asigna directamente a la base de reglas bajo

evaluación (en cada momento solo hay una base de reglas, un individuo de la población

en el trabajo).

4.2.3. Toma de decisiones

FUZZY RULED BASED SYSTEMS (FRBS)

La lógica fuzzy es un concepto matemático que surgió en 1965 a partir del concepto

“conjuntos fuzzy”, que son conjuntos borrosos. A diferencia de los conjuntos

clásicos, los conjuntos fuzzy no son rígidos.

En el concepto de conjuntos fuzzy, un elemento puede pertenecer parcialmente al

conjunto. Así se introducen en el concepto de conjunto los términos relativos y

abstractos.

Page 49: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

49

La función de pertinencia define cuanto un elemento pertenece a un conjunto. Es

una curva que define como cada punto de entrada es mapeado en un valor de grado

de pertinencia entre 0 y 1. La importancia de ese concepto matemático es la

relevancia relativa de la imprecisión y la eficiencia de las respuestas imprecisas en

algunos casos.

La lógica Fuzzy ya está presente en muchos sectores productivos como industrias

de aviación, electrodomésticos y agricultura entre otros.

Tiene numerosas ventajas: fácil entendimiento, flexibilidad, tolerancia a la

imprecisión de datos, construida basado en la experiencia de los especialistas,

mezclada con otras técnicas de control y basada en lenguaje natural.

En función del tipo de regla difusa que utilicen se pueden distinguir dos tipos de

sistemas:

- FRBS tipo Mamdani: es el más usado en aplicaciones, dado que tiene una

estructura muy simple de operaciones “mín-max”. Propuesto por Ebrahim

Mamdani en 1975. El proceso se realiza en cuatro pasos: Fuzificación de

las variables de entrada, evaluación de las reglas, agregación de las salidas

de las reglas y defuzificación.

Si X1 es “alto” y X2 es “bajo” entonces Y es “alto”.

Ventajas: facilidad para derivación de reglas

Inconvenientes: no garantizan continuidad en la salida y tiene menos

eficiencia computacional

- FRBS tipo TSK (Takagi, Sugeno y Kang): Los consecuentes de las reglas

son funciones polinomiales de las variables de entrada.

Si X1 es “alto” y X2 es “bajo” entonces Y= f(X1,X2).

Ventajas: incrementan la precisión, mayor eficiencia computacional, no

necesitan defuzzificador y garantizan continuidad en la salida.

Inconvenientes: No proporciona un marco natural para representar el

conocimiento humano, limitan la representación de los principios de lógica

difusa.

Esta es la estructura básica del funcionamiento de un controlador fuzzy tipo

Mamdani:

Page 50: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

50

Ilustración 23. Estructura básica de un controlador Fuzzy

Motor de inferencia: realiza el proceso de formular el mapeamiento y razonamiento

de una entrada para estimar la salida usando la lógica fuzzy de acuerdo a una

relación definida a partir del conjunto de reglas borrosas. Su raciocino se basa en

reglas del tipo “si-entonces”.

Fuzzificación: Determinación del grado de pertinencia de cada entrada en relación

a cada conjunto fuzzy. Convierte la entrada nítida a valor borroso.

Base de conocimiento: Compuesto por:

- Base de reglas: Se aplican las reglas y operadores AND y OR. Son las

acciones a realizar dependiendo del estado, utilizando la información de la

base de datos.

- Base de datos: Contiene información de los conjuntos borrosos y la

definición lingüística de las variables.

Defuzzificación: Convierte la salida borrosa a valor nítido concreto.

4.3. Apache Spark

En este apartado, se describe la tecnología Spark en profundidad explicando su

arquitectura y elementos que la componen haciendo una valoración de sus ventajas y

desventajas.

Page 51: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

51

4.3.1. Qué es Apache Spark

Spark despegó en 2009 como proyecto dentro de AMPLab en la Universidad de

California ( Berkeley), para afrontar la necesidad de probar el concepto de Mesos, también

creado en AMPLab. Es un conjunto de tecnologías, algoritmos y técnicas (data mining,

Machine Learning, análisis de sentimiento, redes, texto, grafos) junto con sistemas de

conexión a almacenamiento de datos (HDFS, cassandra, Oracle, Amazon S3 HBase,

MapR-DB y MongoDB). Es un motor de procesamiento de datos de uso general, adecuado

para su uso en una amplia gama de circunstancias.

Es un framework montado en un clúster de computación que permite trabajar con

Big Data diseñado para ser rápido, fácilmente accesible y de propósito general otorgándole

la facilidad de uso APIs nativas de Java, Scala, R y Python y bibliotecas de desarrolladores

de Spark. Hay muchas razones para elegir Spark, pero tres son clave: Simplicidad,

velocidad y soporte.

Apache Spark puede funcionar junto a Hadoop, con Apache Mesos o por sí mismo

sobre los sistemas operativos Linux, Windows y OS X.

Desde el principio, Spark fue optimizado para ejecutarse en memoria, ayudando a

procesar datos mucho más rápido que enfoques alternativos como motor de procesamiento

de datos como MapReduce de Hadoop, dándole la capacidad de ser 100 veces más rápido

cuando se utiliza in-memory (corriendo en la memoria) y 10 veces más rápido cuando

procesa datos sobre disco.

Spark es actualmente uno de los proyectos más activos administrados por la

Fundación Apache Software Foundation, y la comunidad que ha crecido en torno al

proyecto incluye tanto colaboradores individuales prolíficos como patrocinadores

corporativos bien financiados como Databricks, IBM y Huawei de China.

4.3.2. Quien usa Spark

Una amplia gama de proveedores de tecnología han apoyado rápidamente a Spark,

reconociendo la oportunidad de extender sus productos de Big Data existentes a áreas

como consultas interactivas y aprendizaje automático, donde Spark ofrece un valor real.

Page 52: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

52

Empresas conocidas como IBM y Huawei han invertido sumas considerables en la

tecnología integrándolas en sus propios productos y aportando mejoras y ampliaciones al

proyecto Apache, y un número creciente de nuevas empesas dependen en su totalidad o

en parte de Spark. En 2013 el equipo responsable de la creación de Spark fundó

Databricks, que proporciona una plataforma de datos alojada de extremo a extremo

impulsada por Spark.

Empresas chinas como el motor de búsqueda Baidu y el website de comercio

electrónico Taobao del grupo Alibaba desempeñan operaciones basadas en Spark

generando miles de Terabytes de datos diarios procesadas en clúster de más de 8000

nodos.

La compañía está bien financiada, recibió 47 millones de dólares en dos rondas de

inversión en 2013 y 2014, y los empleados de Databricks continúan desempeñando un

papel destacado en la mejora y ampliación del código fuente abierto del proyecto Apache

Spark.

Los principales proveedores de Hadoop, incluidos MapReduce, Cloudera y

Hortonworks, se han movido para apoyar a Spark junto con sus productos existentes, y

cada uno está trabajando para agregar valor a sus clientes.

4.3.3. Para que se utiliza Spark

Resumiendo, Spark es un motor de procesamiento de datos de propósito general,

un conjunto de herramientas con API que los científicos de datos y los desarrolladores de

aplicaciones incorporan en sus aplicaciones para consultar, analizar y transformar

rápidamente los datos. Es capaz de manejar varios petabytes de datos a la vez, distribuidos

a través de un grupo de miles de servidores físicos o virtuales que cooperan.

4.3.4. Visión general de la arquitectura de Apache Spark

La arquitectura de Apache Spark la componen una serie de factores a tener en

cuenta cómo deben ser los lenguajes de programación que soporta, algunos de los

componentes internos y una serie de atributos descritos a continuación.

Page 53: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

53

4.3.4.1. Lenguajes

Los lenguajes de programación admitidos por Spark son: Java, Scala, R, Python y

SQL. Los lenguajes como Python a menudo se consideran como lenguajes de bajo

rendimiento, pero la ligera pérdida de rendimiento se puede compensar en otras partes del

diseño y operación del clúster.

Existen códigos ejemplos para Spark que ofrecen una descripción general rápida

de Spark API. Estos ejemplos contienen código en Python, Scala y Java y podemos

encontrarlos en la página oficial de Spark, https://Spark.apache.org/examples.html.

El lenguaje SQL es ampliamente utilizado en bases de datos por científicos de datos

y otros que están familiarizados con hacer preguntas sobre cualquier sistema de

almacenamiento de datos. Spark SQL ofrece soporte para SQL y simplifica el proceso de

consulta de datos almacenados en el propio modelo RDD de Spark, junto con datos de

fuentes externas, como bases de datos relacionales y data warehouse.

El soporte para el paquete de ciencia de datos, R, es más reciente pero dada la

popularidad de R entre los científicos de datos y los estadísticos, es probable que sea una

adición importante al conjunto de idiomas compatibles de Spark.

¿Python o Scala? Ambos idiomas tienen sus ventajas y desventajas cuando

trabajas con Spark. La decisión de uno u otro depende de las necesidades de sus

proyectos, las capacidades propias o de sus equipos.

Scala gana en términos de rendimiento y concurrencia, es más rápido que Python

cuando trabajas con Spark lo que hace este lenguaje una mejor opción cuando se trabaja

con transmisión de datos, pero no es la única consideración de rendimiento que se puede

realizar. Cuando se trabaja con una API DataFrame no hay mucha diferencia entre Python

y Scala. Python es una mejor opción en términos de curva de aprendizaje y fácil de usar.

Hay algunas características que pueden influir en el uso de Python o Scala. Python

tiene la ventaja principal si se trata de ciencia de datos, ya que proporciona al usuario una

gran cantidad de excelentes herramientas para el aprendizaje automático y el

procesamiento del lenguaje natural, como SparkMLlib.

Python es el lenguaje perfecto para crear prototipos en los campos de Big Data /

Machine Learning.

Page 54: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

54

4.3.4.2. Opciones de almacenamiento

Normalmente Spark está vinculado con el sistema de archivos distribuidos de

Hadoop (HDFS), pero puede integrarse con una gama de sistemas de almacenamiento de

datos de terceros ya sean OpenSource o comercial (MapR, Google Cloud, Apache HBase,

Apache Hive, Amazon S3, Apache Cassandra).

4.3.4.3. RDD (Resilient Distribuited Datasets)

RDD es un conjunto de datos cargados en memoria, resultantes de la modificación

a base de operaciones de los originales. Permiten trabajar con grandes cantidades de

datos en clústers de una forma rápida y tolerante a fallos. La eficiencia se logra mediante

la paralelización del procesamiento en múltiples nodos en el clúster y la minimización de la

replicación de datos entre esos nodos.

Las APIs existentes para cada uno de los lenguajes que soporta Spark, nos facilitan

la posibilidad de acceder a los repositorios de datos y crear RDD’s para lo que existen

varias formas: Cargar un archivo (csv, txt, json etc.) y extraer datos, datos almacenados en

memoria o datos ya previamente trabajados y almacenados en otro RDD.

Existen diferentes modelos de RDD definidos por sus características:

Clasificado: Dentro del RDD los datos son definidos por su tipo (String, Int)

Inmutable: Datos del RDD no se pueden modificar excepto si se crea un RDD nuevo

para aplicar modificaciones.

Memoria: Datos del RDD se mantienen en memoria el máximo tiempo posible

Cacheable: Datos por defecto son guardados en memoria o si se desea se pueden

guardar en un disco, aunque esto hace que pierda velocidad de computación.

Particionado: Datos dentro del RDD se dividen entre diferentes nodos del clúster-

Una vez que los datos se cargan en un RDD, se pueden llevar a cabo dos tipos

básicos de operación:

Transformaciones: crean un nuevo RDD al cambiar el original a través de procesos

tales como mapeo y filtrado. El RDD original permanece sin cambios en todo. La

Page 55: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

55

Ilustración 24. RDD transformaciones

cadena de transformaciones de RDD1 a RDDn se registra y puede repetirse en

caso de pérdida de datos o falla de un nodo del clúster.

Se dice que las transformaciones se realizan de forma perezosa, lo que significa

que no se ejecutan y se irán guardando hasta que una acción posterior necesita el

resultado y se ejecute. Esto normalmente mejorará el rendimiento, ya que puede

evitar la necesidad de procesar datos innecesariamente. También puede, en

determinadas circunstancias, introducir cuellos de botella de procesamiento que

hacen que las aplicaciones se detengan mientras se espera que concluya una

acción de procesamiento.

Siempre que sea posible, estos RDD permanecen en la memoria, lo que aumenta

en gran medida el rendimiento del clúster, especialmente en casos de uso con

requisitos de consultas o procesos iterativos.

Acciones: nos da un resultado a la aplicación. Un ejemplo puede ser contar

(count()), que cuenta, pero no cambian los datos originales.

Cuando se desea mantener en memoria de cada nodo sus particiones se recurre a

la técnica de persistencia mediante persist() o cache(). Esto hace que se puedan llevar a

cabo otros procesos sin perder lo anteriormente guardado lo que lo convierte en una

herramienta mucho más veloz.

Page 56: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

56

Ilustración 25. Componentes de Spark

4.3.4.4. Componentes de Spark

A continuación, se muestran los diferentes componentes de Spark:

Spark es lo siguiente: tenemos Spark SQL structured Data, Spark streaming real-

time MLLIB Machine learning y procesamiento de grafos (GraphX graph processing) que

todos se apoyan en el core de Spark. La ventaja que ofrece esto es que cualquier mejora

que tenga el core se propagará para las API superiores. Lo que hace es conectarse con un

gestor de recursos que puede ser YARN o un estándar de Spark si no tenemos instalados

ninguno de los dos con hadoop.

Spark Core. Ofrece las funcionalidades de gestión de tareas, memoria,

recuperación ante fallos, acceso a sistemas de ficheros. Aquí se definen los RDDs

(Resilient Distributed Datasets) que son colecciones distribuidas que pueden ser

paralelizadas automáticamente en el clúster. Son la unidad fundamental de

abstracción y trabajo en Spark. Es el “corazón” de Spark.

Spark SQL: [16] Módulo que permite consulta de datos estructurados y semi-

estructurados mediante sentencias SQL o una API DataFrame. Integración con

otros sistemas de hadoop como Hive, parquet, json.

Spark SQL incluye un optimizador basado en costos, almacenamiento en columnas

y generación de código para las rápidas consultas.

Spark Streaming: [17] Spark puede proporcionar acceso a un flujo de datos en

tiempo real debido a que su núcleo tiene una alta velocidad de programación y esto

le proporciona un ventaja frente a MapReduce. Gracias a la API que trabaja con

Page 57: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

57

Java, Scala y Python, se pueden procesar secuencias combinando streaming con

consultas por lotes e interactivas. Tiene tolerancia a fallos.

MLlib: [18]Es una biblioteca básica de Spark, un framework que tiene algoritmos

de alta calidad que hacen que el aprendizaje automático (machine learning) sea

fácil de utilizar, fácil de implementar y práctico. Tiene algoritmos de clasificación,

regresión, clústering, filtrado colaborativo, Comprobación de hipótesis y cálculo de

estadísticas de ejemplo entre otros, todos programados para que funcionen de

manera distribuida en un clúster de Spark.

GraphX: [19] Es un entorno de procesamiento gráfico. Es la API para gráficos y

computación gráfica paralela. Es flexible y veloz y consta con múltiples algoritmos

gráficos como SVD ++, PageRank entre otros.

Clúster manager: Spark soporta los siguientes clúster managers: YARN(estándar

que se usa con hadoop), Mesos (creado por creadores de Spark) y standalone

scheduler.

4.3.4.5. API (Interfaz de Programación de Aplicaciones)

Un API especifica componentes de software (biblioteca, framework, sistema

operativo, etc.) en términos de funcionalidades. Son un conjunto de comandos, funciones,

clases y protocolos informáticos que hacen que trabajar con las funcionalidades de Spark

sean más sencillas para la creación de programas y el desarrollo de algoritmos. Se optimizó

para manipular datos, con un diseño que redujo las tareas comunes de ciencia de datos de

cientos o miles de líneas de código a solo unas pocas.

Esto es compatible con los cuatro principales entornos de desarrollo de Spark:

(Scala, Java, Python, R), y se proporciona una extensa documentación sobre la

instanciación de la API en cada uno de estos idiomas. La Guía de programación de Spark

proporciona más detalles, con fragmentos de código completos en Scala, Java y Python.

La API de Spark.

Se agregó una API de DataFrames adicional a Spark en 2015 como una extensión

de la API RDD existente con las siguientes características:

De la capacidad de procesar kilobytes de datos en una sola computadora portátil a

petabytes en una gran agrupación.

Page 58: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

58

Soporte para una amplia gama de formatos de datos y sistemas de

almacenamiento.

Optimización de vanguardia y generación de código a través del optimizador Spark

SQL Catalyst

Integración perfecta con todas las herramientas e infraestructura de Big Data a

través de Spark

API para Python, Java, Scala y R (y en vía de desarrollo SparkR)

Para aquellos que no estén familiarizados con la API de DataFrames, pero que ya

estén familiarizados con Spark, esta API extendida facilitará el desarrollo de aplicaciones,

al tiempo que ayudará a mejorar el rendimiento a través de optimizaciones y generación

de código.

En la siguiente página se pueden encontrar los documentos Spark Python API:

https://spark.apache.org/docs/latest/api/python/index.html. Aquí se podrán ver los

paquetes Spark junto con sus sub-paquetes y contenidos. Dentro de los contenidos se

encuentran las clases públicas acompañadas por una serie de funciones que podemos

utilizar en función de lo que queramos hacer.

4.3.4.6. Arquitectura de un clúster

Lo interesante de Spark es usarlo en modo distribuido que ya funciona en un clúster.

Spark usa una arquitectura maestro esclavo con un coordinador central y varios

trabajadores. Al inicializar el objeto SparkConext en su programa principal (Driver

Program), las aplicaciones de Spark serán coordinadas en el clúster como procesos que

trabajan independientes del resto distribuidas por cada nodo.

Específicamente, para ejecutar en un clúster, el driver se comunica con el clúster

manager y seguidamente SparkContext se puede conectar a varios tipos

de administradores de clúster (Mesos, YARN o Standalone) que asignan recursos a través

de la aplicación que los organiza. A continuación Spark toma a los ejecutores en cada nodo

trabajador perteneciente al clúster que serán a los que se le asignen procesos, ejecutarán

cálculos y almacenarán datos para su aplicación. Por último, envía su código de aplicación

y SparkContext envía tareas a los ejecutores para que las lleven a cabo.

Page 59: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

59

Ilustración 26. Arquitectura de un clúster

En esta arquitectura:

Las aplicaciones tienen su propio proceso de ejecución, permanecen activas

durante toda la aplicación y tienen ejecutándose tareas en subprocesos.

Spark es independiente del administrador de clúster subyacente mientras pueda

adquirir procesos de ejecutor y estos se comuniquen entre sí.

El programa del controlador debe escuchar y aceptar las conexiones entrantes de

sus ejecutores a lo largo de su vida útil y debe ser redireccionable desde los nodos

de trabajador.

Debido a que el controlador planifica tareas en el clúster, debe ejecutarse cerca de

los nodos de trabajadores, preferiblemente en la misma red de área local.

Los tipos de administradores de clústers son:

Standalone: Es el gestor de clúster más sencillo que está incluido con Spark. Este

gestor hace posible la fácil creación y configuración de un clúster.

Apache Mesos: Es el gestor open-source general que asigna y controla recursos de

un clúster. Junto con Mesos también se pueden ejecutar Hadoop MapReduce otras

aplicaciones.

Hadoop YARN: gestor de clústers en Hadoop 2 (segunda generación de Hadoop).

Kubernetes: Aún está en modo experimental.

A la hora de programar se hace de la misma forma para uno que para otro. Se

puede tener un programa programado en modo local, subirlo a un clúster y funcionar

igualmente.

Page 60: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

60

4.3.5. Notebooks para Spark

El concepto de “notebook” fue introducido por iPython, que marca la diferencia ya

que en vez de trabajar sobre la Shell directamente, se accede a una interfaz web donde se

crea el entorno de trabajo.

Despues de iPython, vino IPython 3 que fue reconstruido y se creó Jupyter. A partir

de ahí fueron creándose otros notebooks para satisfacer necesidades específicas en cada

tecnología.

Siendo así, los notebooks más utilizados en Apache Spark son:

Jupyter: es una aplicación Web que permite crear y ejecutar un

código que incluye ecuaciones matemáticas, textos, imágenes,

diagramas, visualizaciones, etc. Con jupyter es posible trabajar en

varios lenguajes como Python, Scala, Java, R, etc. La diferencia

entre 'IPython' y 'Jupyter' puede ser confusa. Básicamente, el

equipo de Jupyter ha renombrado 'IPython Notebook' como

'Jupyter Notebook', sin embargo, el shell interactivo todavía se conoce como

'IPython'.

Para escoger el lenguaje con el que se quiere trabajar solamente hay que instalar

el kernel (motor computacional) correspondiente, y lanzar un nuevo código

seleccionando el kernel con el lenguaje deseado.

Jupyter nos proporciona las siguientes características:

- Desde el navegador, creación, edición e inclusión de código.

- Posibilita compartir mediante GitHub y Dropbox los repositorios creados con

códigos y archivos.

- Interfaz intuitiva.

- Destaca automáticamente la sintaxis e hace indentación del código.

- Admiten el completar automáticamente las pestañas en nombres de clase,

funciones, métodos y variables.

- Ofrece mensajes de error más explícitos.

- Mediante el uso de núcleos, se admiten múltiples idiomas.

Apache Zeppelin: es un notebook web interactivo, con funciones de ingestión de

datos, exploración de datos, visualización, uso compartido y colaboración a Hadoop

Ilustración 27. Jupyter

Page 61: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

61

Ilustración 29. Spark Notebook

Ilustración 28. Apache Zeppelin

y Spark. Todo ello lo realiza con tecnologías como Shell, Spark, Hive entre otras,

soportando lenguajes como R, Scala y Python. Al estar integrado con Apache

Spark, no es necesario crear un módulo, un complemento o una biblioteca por

separado.

Zeppelin aún está en desarrollo respecto a Jupyter, pero está siendo bastante

apoyado por parte de la comunidad.

Spark Notebook: es editor interactivo basado en web de código abierto centrado en

Scala para la ciencia de datos interactiva y reactiva utilizando Apache Spark. Esta

es una excelente herramienta para crear prototipos de códigos Scala / Spark con

consultas SQL para analizar datos (mediante visualizaciones de datos). Parece

tener visualizaciones de datos más avanzadas (en comparación con Apache

Zeppelin ), y parece más bien enfocado en Scala, SQL y Apache Spark.

La elección en particular para este trabajo ha sido Jupyter Notebook con el lenguaje

de programación Python.

4.3.6. Seguridad

A la seguridad en Spark le falta mucho por mejorar. Se respalda en Hadoop YARN.

Hay una clase Spark responsable de la seguridad. En general, esta clase debe ser

instanciada por SparkEnv y la mayoría de los componentes deben acceder desde allí. Hay

algunos casos donde SparkEnv aún no se ha inicializado y esta clase debe crearse una

instancia directamente.

Spark actualmente es compatible con la autenticación a través de un “shared secret

“(secreto compartido). La autenticación se puede configurar para que esté activada

Page 62: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

62

mediante el parámetro de configuración 'spark.authenticate'. Este parámetro controla si los

protocolos de comunicación Spark realizan la autenticación utilizando el secreto

compartido. Todos los nodos (Maestro y Workers) y las aplicaciones deben tener el mismo

secreto compartido para poder comunicarse.

Spark presenta autenticación por clave compartida Las claves ssh nos permiten

realizar una autenticación sin contraseña de forma segura.

Para utilizar SSH se crean un par de claves (privada y pública). Cada nodo tendrá

una copia de la clave privada, para poder autenticarse en cualquier otro nodo, que tendrá

una copia de la clave pública (y, a su vez, la misma clave privada). Esto permite que el

poseedor de la clave pueda acceder a esa máquina.

4.3.7. Ventajas y desventajas

VENTAJAS

1. Spark es más potente que hadoop: nos permite desarrollar grandes proyectos Big

Data con menos inversión y consiguiendo buenos resultados.

2. Es una plataforma de código.

3. Es rápido: Mucho más que Hadoop. Garantiza una buena productividad y mayor

interactividad.

4. Puede compenetrarse con otra arquitectura Big Data: Puede utilizar ficheros de

HDFS o procesos de YARN entre otras.

5. Cuida a los desarrolladores: cuando una persona está utilizando esta tecnología

únicamente debe de tener en mente desarrollar el código u algoritmo que esté

implementando ya que con los lenguajes de programación que ofrece y el fácil

entorno de trabajo no existe otra preocupación.

6. La componen APIs para varios lenguajes y trabajos.

7. Tiene una consola interactiva para poder trabajar con mayor facilidad

8. Gran aliado de la Arquitectura Kappa que la conforman Kafka + Spark + NOSql +

Scala. Es una de las arquitecturas que más se demandan.

9. Encabeza tecnologías Big Data: compañías como IBM, Huawei y Microsoft entre

otras invierten e integran a Spark en sus trabajos.

Page 63: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

63

DESVENTAJAS

1. Necesita más memoria de almacenamiento.

2. Como utiliza aplicaciones pesadas, puede disminuir su rendimiento.

5. DESARROLLO DEL PROYECTO

En este proyecto se va a comprobar y analizar el funcionamiento de Spark para Big

Data. Para ello se va a crear un clúster donde se ejecutará un algoritmo de Regresión lineal

distribuido por cada uno de los nodos, que trabajarán en paralelo. La función del algoritmo

utilizando librerías de Machine Learning será la clasificación de texto, en concreto, artículos

de noticias.

Un clúster Spark son computadoras que ejecutan Spark y trabajan juntas. El clúster

se compone por:

Nodo maestro (master): Es la computadora que distribuye el trabajo y se ocupa de

la ejecución del algoritmo.

Nodo esclavo (slave): Está compuesto por las computadoras que realizan el trabajo

(workers). Procesan fragmentos de los conjuntos de datos masivos.

El Apache Spark Clúster Manager (Administrador del clúster Apache Spark) de este

trabajo será Standalone. Esto significa que Spark está instalado en todas las computadoras

involucradas en el clúster.

El proyecto se desarrollará en dos escenarios diferentes:

El primero será crear un clúster en máquinas virtuales que servirá para poder

experimentar con Spark desde un ordenador personal ejecutando varios algoritmos

y comprobando su funcionamiento. Con esto se proporcionará experiencia para

poder hacer las pruebas reales de la mejor forma.

El segundo será la creación del clúster utilizando varios computadores potentes en

el laboratorio de la escuela, y ahí será donde se ejecutará el algoritmo de Regresión

lineal haciendo varios tipos de pruebas y sacando conclusiones, todo ello explicado

a continuación.

Page 64: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

64

En este apartado se expondrán las características, requisitos y topología de cada

una de los escenarios. A partir de ahí, se explicará muy detalladamente paso a paso todo

lo necesario para una correcta instalación y puesta en marcha de Apache Spark para poder

crear un clúster y ejecutar un algoritmo distribuido.

5.1. Máquinas virtuales

Aquí se describirán las características y requisitos que tendrán las máquinas

virtuales junto con su topología de red. También se hará un tutorial paso a paso de la

instalación de máquinas virtuales con estas características y el sistema operativo

acordado.

5.1.1. Características y requisitos

Las máquinas virtuales tendrán Ubuntu 17.04 como sistema operativo virtualizadas

con Oracle VM VirtualBox. Las principales características de Hardware son:

MASTER

o Memoria RAM: 1024 MB.

o Número de CPUs : 1 CPU.

o Disco duro: Disco duro virtual VDI (VirtualBox Disc Image) de tamaño fijo de

20 GB.

o Red: Adaptador en puente, Intel PRO/1000 MT Desktop.

SLAVES

o Memoria RAM: 1024 MB.

o Número de CPUs : 1 CPU.

o Disco duro: Disco duro virtual VDI (VirtualBox Disc Image) de tamaño fijo de

20 GB.

Page 65: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

65

o Red: Adaptador en puente, Intel PRO/1000 MT Desktop.

Para el funcionamiento correcto del clúster de servidores, Apache Spark necesita

la siguiente lista de software instalada:

Oracle VM VirtualBox.

Java: Versión 8

Spark: Versión 2.2.1-bin-hadoop.2.7.

Hadoop: Versión hadoop-2.9.0

OpenSSH: para permitir el acceso remoto por SSH entre las máquinas.

Python con anaconda: versión 2.7.14 :: Anaconda custom (64bit)

Jupyter Notebook

FindSpark: Biblioteca Python

Py4J para que los programas de Python accedan directamente a los objetos Java.

5.1.2. Topología de red

Para la creación del clúster de servidores con Apache Spark, se han utilizado tres

máquinas virtuales. Una de las máquinas será el servidor principal (Spark-Master) y el resto

servidores esclavos (Spark-WorkerN). Las máquinas utilizadas son:

Hostname IP Función

master 192.168.1.117 Servidor principal master

Worker1 192.168.1.113 Servidor esclavo

Worker2 192.168.1.115 Servidor esclavo

Tabla 1. Topología de red máquinas virtuales

Page 66: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

66

Ilustración 30. Instalación máquina virtual

Ilustración 31. Instalación máquina virtual, tamaño de memoria

Ilustración 32. Instalación máquina virtual, disco duro

5.1.3. Instalación máquina virtual

1º Descargar VM VirtualBox e instalar en el equipo

http://www.oracle.com/technetwork/server-

storage/virtualbox/downloads/index.html#vbox

2º Descargar la imagen .iso del sistema operativo Linux. En este caso ubuntu-17.04-

desktop-amd64

3º Crear máquina virtual en VirtualBox e instalar Linux en ella.

a) Crear la máquina virtual

Page 67: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

67

Ilustración 33. Instalación máquina virtual, tipo almacenamiento.

Ilustración 34. Instalación máquina virtual, tipo disco duro.

Ilustración 35. Instalación máquina virtual, ubicación y tamaño

Ilustración 36. Instalación máquina virtual, crear disco duro virtual

Ilustración 37. Arranque Ubuntu

b) Agregar arranque de Ubuntu en la máquina virtual creada.

Page 68: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

68

Ilustración 39. Arranque Ubuntu, selección de ISO del sistema operativo

Ilustración 38. Arranque Ubuntu cargado

Ilustración 40. Install Ubuntu

Ilustración 41. Entrada Dispositivo CD/DVD vacía

c) Iniciar máquina virtual e instalar Ubuntu 17.04.

d) Una vez instalado, asegurarse de que la entrada del dispositivo CD/DVD está

vacía para que no vuelva a iniciar la instalación e inicie el sistema operativo

directamente.

Page 69: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

69

Ilustración 42. Clonar Ilustración 43. Clonar, nombre

Ilustración 44. Clonación Ilustración 45. Clonar, tipo de clonación

4º Clonar tantas veces en función del número de esclavos que queramos.

5º Hacer update y upgrade de cada máquina virtual para actualizar.

$ sudo apt-get update

$ sudo apt-get upgrade

Page 70: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

70

5.2. Computadores físicos

Aquí se describirán las características y requisitos que tendrán los computadores físicos

junto con su topología de red.

5.2.1. Características y requisitos

En este escenario se utilizó una nueva versión del sistema operativo (Ubuntu

17.10). Las principales características de Hardware son:

MASTER

o Memoria RAM: 8 GB.

o Procesador: Intel Core i7

o Red: Conexión de área local, Gigabit Ethernet

SLAVES

o Memoria RAM: 8GB

o Procesador: Intel Core i7

o Red: Conexión de área local, Gigabit Ethernet

Para el funcionamiento correcto del clúster de servidores, Apache Spark necesita la

siguiente lista de software instalada:

Java: Versión 8

Spark: Versión 2.2.1-bin-hadoop.2.7.

Hadoop: Versión hadoop-2.9.0

OpenSSH: para permitir el acceso remoto por SSH entre las máquinas.

Python con anaconda: versión 2.7.14 :: Anaconda custom (64bit)

Jupyter Notebook

FindSpark: Biblioteca Python

Py4J para que los programas de Python accedan directamente a los objetos Java.

Page 71: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

71

5.2.2. Topología de red

Siguiendo el mismo procedimiento que en máquinas virtuales, para la creación de

un clúster en las computadoras físicas se han utilizado cinco máquinas, una de ellas será

el servidor principal (Master) y las cuatro restantes serán slaves (workers). La topología es

la siguiente:

Tabla 2. Tabla topología de red ordenadores físicos

5.3. Preparación entorno

Con todos los conocimientos que se han adquirido de Spark, es la hora de preparar

un entorno de trabajo. En este apartado se explicarán las instalaciones necesarias a llevar

a cabo para el correcto funcionamiento de Spark. Para ello es necesario tener unos previos

componentes como son Java y Anaconda instalada con la distribución de Python que

proporcionará paquetes importantes para el tratamiento de datos y el acceso al notebook

web de IPython llamado Jupyter.

Una vez teniendo la base, se procederá a instalar Spark junto con unas bibliotecas

de soporte y proporcionar a cada máquina el acceso SSH con el master.

Hostname IP Función

master 192.168.67.334 Servidor principal master

Worker1 192.168.67.333 Servidor esclavo

Worker2 192.168.67.332 Servidor esclavo

Worker3 192.168.67.331 Servidor esclavo

Worker4 192.168.67.330 Servidor esclavo

Page 72: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

72

Ilustración 46. Java version

5.3.1. Instalación Java

1º Instalar última versión de Java

$ sudo apt-get install openjdk-8-jdk

2º Comprobar versión actual en el sistema

$ java -version

5.3.2. Instalación Anaconda (Pyhon)

Anaconda se caracteriza por ser una suite libre de código abierto, que abarca

aplicaciones y librerías diseñados para el desarrollo de datos con Python. Instala los

paquetes más importantes para tratamiento de grandes volúmenes de datos, cálculos

científicos y análisis de predicciones. Funciona como gestor de entorno y gestor de

paquetes.

1º Descargar anaconda de su página https://www.anaconda.com/download/ para

Linux la versión Python 2.7 e ir en el terminal al directorio /Descargas:

$ pwd

$ cd /Descargas

2º Instalar y confirmar ubicación:

$ bash ./ Anaconda2-5.0.1-Linux-x86_64.sh

Page 73: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

73

Ilustración 49. Python version

Ilustración 47. Instalar Anaconda

Ilustración 48. Anaconda .bashrc

Una vez instalado, en el archivo .bashrc añadir lo siguiente manualmente si no pide

el instalador permiso para añadirlo:

export PATH=/home/master/anaconda2/bin:$PATH”

3º Comprobar la versión de Python.

$ python --version

Si nos devuelve el siguiente mensaje : El programa Python puede encontrarse en

los siguientes paqutes (Python-minimal, python3)

Page 74: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

74

Ilustración 50. Version Pyhton con Anaconda

Ilustración 51. Versión conda

Instalar python2:

$ sudo apt install python-minimal

Cerrar el terminal y abrir otro nuevo

4º Hacer update y upgrade y actualizar conda.

$ sudo apt-get update

$ sudo apt-get upgrade

$ conda update --all --yes

5º Comprobar versión de Python con Anaconda una vez instalado.

$ python --version

Cerrar el terminal y volver a abrir otro.

6º Configurar anaconda:

a) Comprobar la versión de conda:

$ conda --version

b) Actualizar:

$ conda update conda

c) Instalar nb_conda_kernels

$ conda install nb_conda_kernels

Page 75: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

75

Ilustración 52. Spark Download

d) Comprobar que aparece en la lista de conda:

$ conda list

e) Hacer update y upgrade:

$ sudo apt-get update

$ sudo apt-get upgrade

5.3.3. Instalación Spark

1º Ir a la página oficial de Spark y descargar https://Spark.apache.org/downloads.html

2º Descomprimir y mover a la carpeta home.

$ cd Descargas/

$ mv Spark-2.2.1-bin-hadoop2.7 ~

$ cd ~

$ tar -zxvf Spark-2.2.1-bin-hadoop2.7.tgz

$ rm Spark-2.2.1-bin-hadoop2.7.tgz

3º Establecer la variable de entorno necesaria SPARK_HOME

a) Ir a el directorio home y abrir con el editor de textos el archivo .bashrc.

Page 76: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

76

Ilustración 53. Archivo .bashrc Spark

Ilustración 54. Verificación instalación Spark

$ cd ~

$ sudo nano .bashrc

b) Editar el archivo .bashrc y añadir las siguientes líneas al final del archivo:

# Spark

export SPARK_HOME="/home/<your_username>/Spark-2.2.1-bin-

hadoop2.7/"

4º Verificar instalación de Spark.

$ cd Spark-2.2.1-bin-hadoop2.7

$ bin/pySpark

Page 77: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

77

Ilustración 55. Hadoop Download

5.3.4. Instalación Hadoop (opcional)

Aclarar que este paso es opcional porque el clúster funcionará igualmente, pero

hace algunas mejoras en el rendimiento del uso de Hadoop nativo sobre algún tipo de

adaptadores.

1º Descargar de la página de Apache Hadoop:

http://apache.rediris.es/hadoop/common/hadoop-2.9.0/

2º Descomprimir y mover a la carpeta home.

$ cd Descargas/

$ mv hadoop-2.9.0.tar.gz ~

$ cd ~

$ tar -zxvf hadoop-2.9.0.tar.gz

$ rm hadoop-2.9.0.tar.gz

3º Añadir líneas al final del archivo .bashrc Editar el archivo .bashrc y añadir las

siguientes líneas al final del archivo:

# Hadoop

export HADOOP_HOME="/home/master/hadoop-2.9.0"

export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native:$LD_LIBRARY_PATH

Page 78: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

78

Ilustración 56. Archivo .bashrc Hadoop

Ilustración 57. Verificación instalación Spark con Hadoop

4º Verificar de nuevo la instalación de Spark y Comprobar que desaparece el mensaje:

“WARN NativeCodeLoader: Unable to load native-hadoop library for your platform...

using builtin-java classes where applicable".

$ cd Spark-2.2.0-bin-hadoop2.7

$ bin/pySpark

5.3.5. Acceso SSH

1º. Verificar IP. Como al inicio no está instalado “ifconfig” hacer en ambas máquinas:

$ sudo apt install net-tools

$ ifconfig

Page 79: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

79

Ilustración 58. SSH clave RSA

2º. Copiar la dirección ip de cada máquina para trabajar con ellas.

IP master: 192.168.1.117

IP slave1: 192.168.1.113

IP slave2: 192.168.1.115

3º. En las máquinas slave instalar ssh server.

$ sudo apt-get install openssh-server

4º. En la máquina master, generar clave RSA para el acceso remoto de los slaves.

$ ssh-keygen

5º. En la máquina master, copiar en cada uno de los slaves la clave RSA generada en

el master siguiendo el patrón del siguiente comando:

$ ssh-copy-id –i ~/.ssh/id_rsa.pub usuario_slave_1@IPslave1

$ ssh-copy-id –i ~/.ssh/id_rsa.pub usuario_slave_2@IPslave2

En mi caso es:

$ ssh-copy-id –i ~/.ssh/id_rsa.pub [email protected]

$ ssh-copy-id –i ~/.ssh/id_rsa.pub [email protected]

Page 80: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

80

Ilustración 59. Copiar RSA a slaves

5.3.6. FindSpark

FindSpark es una biblioteca de Python que permite importar y usar PySpark

automáticamente. Creando un perfil de jupyter para Spark sería una opción alternativa a

utilizar FindSpark pero utilizando esta herramienta es más rápido y más simple.

Para instalar FindSpark ejecutar el siguiente comando:

$ pip install findSpark

5.3.7. Py4j

Instalar Py4J para que los programas de Python se ejecuten y accedan

directamente a los objetos Java.

$ pip install py4j

5.3.8. Jupyter Notebook

Jupyter es un notebook interactivo con el que se podrá escribir código y permitirá

ver los archivos de una forma más entendible e interactiva. Soporta lenguajes como

Python, R y Matlab entre otros. No es necesario instalarlo ya que viene con Anaconda.

Page 81: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

81

Ilustración 62. Entorno jupyter en navegador

Ilustración 60. Lanzar jupyter notebook con spark Ilustración 61. Lanzar jupyter notebook

Para lanzar jupyter notebook se puede hacer de dos maneras:

1º Directamente lanzar jupyter notebook:

$ jupyter notebook

Será necesario en el código incluir FindSpark explicado a continuación.

2º Lanzar jupyter notebook con Spark:

$ PYSPARK_DRIVER_PYTHON=ipython

PYSPARK_DRIVER_PYTHON_OPTS=”notebook” Spark-2.2.1-bin-

hadoop2.7/bin/pyspark

Ver que está correctamente instalado porque al ejecutar ese comando, se nos abre

el navegador con la dirección localhost:8888/tree#notebooks.

Page 82: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

82

Ilustración 63. Configuración red

5.4. Configuración y puesta en marcha

Teniendo el entorno completamente listo, se procederá a configurar cada nodo para

que estén conectados entre sí. Aquí comienza la creación del clúster, iniciando el servidor

maestro en primer lugar y conectando a este servidor los nodos slaves que desempeñarán

el trabajo.

Con el clúster listo y funcionando, se explica cómo comenzar un código para

utilizarlo con Spark y crear el SparkContext para trabajar con los diferentes nodos que

componen el clúster.

5.4.1. Iniciar el servidor maestro

1º En computadores físicos simplemente hay que tener las máquinas conectadas en la

misma red y en virtualbox, con las máquinas apagadas, configurar la red en bridge

(modo puente).

2º En la máquina master, se inicia el servidor maestro. (En el directorio donde esté la

instalación de Spark, en este caso /home/master/ Spark-2.2.1-bin-hadoop2.7).

$ ./sbin/start-master.sh -h 192.168.1.117

Page 83: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

83

Ilustración 64. Iniciar servidor maestro

Ilustración 65. Interfaz de usuario web, localhost

Ilustración 66. Interfaz de usuario web, otro dispositivo

Devolverá el mensaje mostrado a continuación.

3º Comprobar acceso a la interfaz de usuario web del servidor maestro:

Si es en la misma máquina del servidor maestro: localhost:8080

Si es desde cualquier otro dispositivo de la red: 192.168.1.108:8080

Page 84: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

84

Ilustración 67. Iniciar Slave

Ilustración 68. Interfaz de usuario web, slaves conectados

Se puede apreciar en la interfaz de usuario una dirección que será nuestra

“dirección master”, ya que será la que se va a necesitar para conectar los esclavos al

clúster. (Spark://192.168.1.117:7077)

5.4.2. Conectar esclavos

Teniendo el servidor maestro ejecutándose, iniciar esclavo. Desde la carpeta de

instalación de Spark: $ ./sbin/start-slave.sh spark://192.168.1.117:7077

Como vemos a continuación, nos devuelve algo similar al maestro.

Para cada esclavo que se quiera conectar al master realizar la misma operación

siguiendo estos pasos.

Comprobar en la interfaz maestro que el esclavo se ha ejecutado como worker.

¡Hasta aquí hay un clúster Spark funcionando completamente!

Page 85: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

85

Ilustración 69. Script ejecutado python prueba1

5.4.3. Crear primera aplicación Spark

1. Ejecutar el siguiente script en un nuevo código python:

import findSpark

findSpark.init()

import pySpark

sc = pySpark.SparkContext(master='Spark://192.168.1.117:7077 ',

appName='prueba1')

sc

PySpark puede importar una biblioteca y crear una instancia de Spark Context con

los parámetros URL maestra y el nombre de la aplicación (cualquiera, en este caso

le he llamado prueba1).

Al hacer click en el enlace, se accede a la interfaz web de la aplicación.

Page 86: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

86

Ilustración 70. Interfaz web de la aplicación (ejecutores)

Ilustración 71. Interfaz web con running applications

2. Comprobar en la interfaz web del servidor maestro que hay una nueva fila en

Running Applications.

3. Al finalizar la aplicación, se puede ver que ya no hay aplicaciones corriendo y esta

se traslada a aplicaciones completadas

Page 87: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

87

Ilustración 72. Interfaz web, completed Applications

Ilustración 73. Apagar slave

5.5. Concluir sesiones

Una vez que el trabajo esté listo y se desee finalizar el clúster, se apagará cada

nodo slave y el servidor maestro. Para ello se deben seguir los siguientes pasos:

1º Para apagar nodos esclavos:

Acceder a cada una de las máquinas mediante ssh, ir al directorio de Spark y

ejecutar el siguiente comando.

$ ./sbin/stop-slave.sh

Si se desea también se puede hacer directamente en la propia máquina sin

necesidad de acceder por ssh.

Page 88: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

88

Ilustración 74. Apagar servidor maestro

2º Para apagar el servidor maestro acceder al directorio de Spark y ejecutar el siguiente

comando:

$ ./sbin/stop-master.sh

5.6. Resumen de pasos para iniciar y finalizar clúster

En este apartado se hace un resumen de los pasos necesarios para inicializar un

clúster añadiendo los nodos deseados, quitar nodos a conveniencia y finalizarlo por

completo. Realizando todo desde la máquina máster:

INICIAR CLÚSTER

Desde el directorio /home/master/Spark_2.2.1-bin-hadoop2.7:

$ ./sbin/start-master.sh –h 192.168.1.117 (IP del master)

$ ssh ‘[email protected]’ (IP del slave)

Ir nuevamente al directorio /home/master/Spark_2.2.1-bin-hadoop2.7

$ ./sbin/start-slave.sh spark://192.168.1.117:7077

$ exit

Repetir proceso de ssh en cada slave que tengamos y queramos integrar en el

clúster.

Ahora que están las dos máquinas conectada se inicia el entorno jupyter de

cualquiera de estas dos formas:

- $ jupyter notebook

- $ PYSPARK_DRIVER_PYTHON=ipython

PYSPARK_DRIVER_PYTHON_OPTS=”notebook” Spark-2.2.1-bin-

hadoop2.7/bin/pyspark

Page 89: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

89

FINALIZAR CLÚSTER

Detener todas las máquinas del clúster

$ ssh ‘[email protected]’ (IP del slave que se desee quitar del clúster)

Ir al directorio /home/master/Spark_2.2.1-bin-hadoop2.7

$ ./sbin/stop-slave.sh

$ exit

Repetir proceso de ssh en cada slave que tengamos activo.

Desde el directorio /home/master/Spark_2.2.1-bin-hadoop2.7:

$ ./sbin/stop-master.sh

6. PRUEBAS Y RESULTADOS

En este capítulo servirá para concluir a base de pruebas un comportamiento de

Spark en varias situaciones para poder conocer hasta donde deja de ser útil y productiva

esta tecnología y además conocerla un poco más para poder sacarle el máximo partido.

Con el objetivo de demostrar todo lo dicho a lo largo del desarrollo del proyecto y el

correcto funcionamiento de las instalaciones, se han realizado unas pruebas en

computadores. Para poder obtener un resultado de calidad y fiable, se ha ejecutado un

algoritmo con una alta carga de trabajo y para conseguir que el clúster trabajara con fluidez

eran necesarios varios computadores con buen procesador y mínimo 8GB de RAM.

La prueba consiste en ejecutar un algoritmo de Regresión lineal que utiliza librerías

de machine learning “ml”, para la clasificación de artículos de noticias leyendo un fichero

que está incorporado en todos y cada uno de los nodos del clúster. Spark ML se usa para

referirse a la API basada en MLlib DataFrame. En este caso se utilizan los siguientes

módulos pertenecientes a la librería ml:

pyspark.ml. Import pipeline: API de aprendizaje automático basado en DataFrame

que permite ensamblar y configurar rápidamente pipelines de machine learning.

pyspark.ml.classification import LogisticRegression: Se utiliza para la regresión

logística, ya sea binomial o multinomial.

Page 90: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

90

Ilustración 75. Lectura datos TextClassificationmini

pyspark.ml.tuning import ParamGridBuilder, CrossValidator: ParamGridBuilder

construye una grilla de parámetros para buscar y CrossValidator evalua varios

modelos en la misma operación identificando el mejor modelo basándose en

estadísticas.

pyspark.ml.evaluation import BinaryClassificationEvaluator: Evaluador para la

clasificación binaria, con dos columnas de entrada.

pyspark.ml. feature import HashingTF,StopWordsRemover,IDF,Tokenizer:

StopWordsRemover es un transformador de funciones que filtra palabras de parada

de entrada, Tokenizer convierte la cadena de entrada en minúsculas y luego la

divide en espacios en blanco, IDF calcula la frecuencia inversa del documento (IDF)

dada una colección de documentos, lo que expresa cuán relevante es una palabra

y HashingTF utilizando el hashing trick convierte valores arbitrarios en vectores.

Para este algoritmo también se hace uso de pyspark.sql donde se incluyen los

siguientes módulos y clases:

pyspark.sql import SQLContext; para trabajar con datos estructurados. Sirve para

crear DataFrames, registrar DataFrames como tablas y ejecutar SQL sobre tablas.

pyspark.sql import Row: Crea una fila de datos (row) en un DataFrame.

En el clúster se ejecutará un mismo código de dos maneras diferentes:

1. La primera será leyendo un archivo de datos de 4.8 MB que consta de 2000

documentos. Tendrá 2.8 GB de procesado. Se le ha llamado

“TextClassificationmini”.

2. La segunda será leyendo un archivo de datos de 46.6 MB que consta de 19997

documentos (prácticamente 10 veces mayor) con 32.3 GB de procesado. Se le ha

llamado “TextClassificationmaxi”.

Page 91: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

91

Ilustración 77. Web gestión de clústers

Ilustración 76. Lectura de datos TextClassificationmaxi

En ambas, se ejecutará con diferente número de nodos para observar cómo trabaja

Spark y distribuye el trabajo y poder sacar conclusiones.

El código lee un archivo, un dataset obtenido de la página

“https://archive.ics.uci.edu/ml/datasets.html?area=&att=&format=&numAtt=&numIns=&sor

t=nameUp&task=&type=text&view=table. ”. Lo que varía de una prueba a otra será el

dataset introducido.

Esta prueba se hará en 4 partes, comenzando con un clúster compuesto por un

nodo maestro y 4 nodos workers y reduciendo en cada parte un nodo worker. La gestión

del trabajo la realiza el nodo maestro y los workers son los que realizan las operaciones

que se distribuyen en el clúster.

Para entender mejor la ejecución interna de Spark, se pueden observar a través de

la web de gestión del clúster las tareas activas y completadas con los nodos que tenemos

conectados. En el caso mostrado a continuación se puede apreciar la web de gestión con

3 workers activos.

Page 92: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

92

Ilustración 78. Interfaz de aplicación

Ilustración 79. Descripción detallada de uno de los trabajos de la aplicación

Una vez esté la aplicación corriendo, tenemos la oportunidad de entrar dentro de la

interfaz de la aplicación donde es posible ver los trabajos que están llevando a cabo junto

con sus etapas, las características del entorno de trabajo y los ejecutores.

Dentro de cada uno de los trabajos, hay una descripción muy detallada del propio

trabajo:

Page 93: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

93

Ilustración 80. Grafo de una tarea perteneciente a una aplicación

Y además se puede ver de forma esquemática el grafo de cada tarea.

Lo más interesante es poder apreciar en la parte de ejecutores los nodos activos,

cuantas tareas están ejecutando, los RDD que tiene cada nodo en un momento

determinado y la carga total de trabajo.

En las siguientes imágenes, se muestran los ejecutores en varias fases a lo largo

de la ejecución de la aplicación, desde que empieza a correr hasta que termina, donde se

puede comprobar que hay una paralelización de las tareas entre nodos:

Page 94: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

94

Ilustración 81. Ejecutores aplicación corriendo(I)

Ilustración 82. Ejecutores aplicación corriendo (II)

Page 95: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

95

Ilustración 83. Aplicación finalizada

6.1. Prueba “TextClassificationmini”

En primer lugar, se ha ejecutado el algoritmo con una carga de datos menor. Se le

ha llamado “TextClassificationmini” Son 4.8 MB, 2000 noticias repartidas en 20 carpetas

de 100 elementos cada una. Tendrá 2.8 GB de procesado.

Para poder apreciar el reparto de tareas y paralelización de Spark, en cada una de

las celdas en las que está divido el código se ha mostrado el tiempo de ejecución para

poder hacer un estudio lo más exacto posible.

Page 96: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

96

Ilustración 84. Time código

Nodos/Celdas 16 17 18 19 20 21 22 23 24 25 26 27 28 Tiempo total

1 Nodo 20,4 0,0758 0,00037 0,00218 4,9E-05 18,6 24,8 12,4 7,06 4,3E-05 0,00047 463 13,7 659,7722057

2 Nodos 18,6 0,0736 0,00049 0,00299 4,5E-05 17 23,9 12,2 6,44 6,8E-05 0,00021 425 12,5 609,1775549

3 Nodos 18,7 0,0796 0,00031 0,00246 2,1E-05 16,6 23,8 12,3 6,74 6,8E-05 0,00031 425 12,3 610,5689349

4 Nodos 18,8 0,188 0,00055 0,00195 2,5E-05 17,2 24,7 12,5 6,45 6,5E-05 0,0004 427 12,5 617,2375301

Nodos/Celdas 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1 Nodo 0,445 0,000495 0,0318 0,167 2,52 18,9 13,8 13,5 13,5 0,219 7,29 1,97 7,75 7,34 12,3

2 Nodos 0,429 0,000354 0,0278 0,182 2,79 17,9 12,7 12,4 12,3 0,221 6,93 2,01 7,19 6,78 11,6

3 Nodos 0,467 0,000565 0,0296 0,179 2,73 18,1 13,9 12,5 12,1 0,21 6,51 2,03 6,94 6,95 12,4

4 Nodos 0,336 0,000741 0,0288 0,186 2,72 18,1 13,9 14,1 12,4 0,215 6,86 2,01 7,33 7,21 12,5

Se ha proyectado en las siguientes tablas (Tablas 3 y 4) cada una de las celdas de

este algoritmo (un total de 28 celdas) y sus tiempos expresados en segundos. Estas tablas

se han representado en un gráfico (Ilustración 85).

Tabla 3. TextClassification mini (1)

Tabla 4. TextClassification mini (2)

Page 97: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

97

Ilustración 85. Gráfico total TextClassificationmini

Ilustración 86. Gráfico segundos TextClassificationmini

0

100

200

300

400

500

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28Tie

mp

o e

n s

egu

nd

os

Celdas

Text Classificationmini4,8 MB de archivos, 2,8 Gb de procesado, 2000 documentos

(Total)

1 Nodo 2 Nodos 3 Nodos 4 Nodos

0

5

10

15

20

25

30

5 6 7 8 9 11 12 13 14 15 16 21 22 23 24 28Tie

mp

o e

n s

egu

nd

os

Celdas

TextClassificationmini 4,8 MB de archivos, 2,8 Gb de procesado, 2000 documentos

(Tareas segundos)

1 Nodo 2 Nodos 3 Nodos 4 Nodos

Como los tiempos de cada celda son muy desiguales abarca un rango muy grande

y en el gráfico total no se aprecia muy bien la diferencia entre tiempos, por lo que se ha

decidido hacer dos tipos de gráficos, uno que incluya las celdas de segundos y otro con las

celdas que tengan un tiempo de ejecución superior a un minuto, que en este caso es

únicamente la 27.

No se han representado tiempos inferiores a un segundo ya que es cifra muy

insignificante, aunque si se ha tenido en cuenta para la suma total de tiempos. Por último,

se muestra un gráfico de tiempo total.

Page 98: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

98

Ilustración 87. Gráfico minutos TextClassificationmini Ilustración 88. Gráfico tiempos totales TextClassificationmini

580

590

600

610

620

630

640

650

660

670

Tiempo total

Tie

mp

o e

n s

egu

nd

os

TextClassificationmini 4,8 MB de archivos, 2,8 Gb

de procesado, 2000 documentos (Tiempo total)

1 Nodo 2 Nodos 3 Nodos 4 Nodos

400

410

420

430

440

450

460

470

27

Tie

mp

o e

n s

egu

nd

os

Celdas

TextClassificationmini 4,8 MB de archivos, 2,8 Gb

de procesado, 2000 documentos (Celdas

minutos)

1 Nodo 2 Nodos 3 Nodos 4 Nodos

En esta prueba, lo que se puede apreciar es que cuando el algoritmo es ejecutado

con 2 nodos disminuye considerablemente el tiempo de ejecución, pero conforme se va

aumentando el número de nodos el tiempo aumenta también.

6.2. Prueba “TextClassificationmaxi”

En esa ocasión se ha ejecutado el mismo algoritmo, en las mismas condiciones,

pero con una carga de datos mucho mayor. Se le ha llamado “TextClassificationmaxi”. Son

46.6 MB, 19997 noticias repartidas en 20 carpetas. Tendrá 32.3 GB de procesado

Al igual que en la prueba anterior, se ha proyectado en las siguientes tablas (Tablas

5 y 6) cada una de las celdas de este algoritmo (un total de 28 celdas) y sus tiempos

expresados en segundos. Las tablas se han representado en un gráfico (Ilustración 89).

Page 99: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

99

Ilustración 89. Gráfico total TextClassificationmaxi

0

500

1000

1500

2000

2500

3000

3500

4000

4500

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

Tie

mp

o e

n s

egu

nd

os

Celdas

TextClassificationmaxi 46,6 MB de archivos, 32,3 GB de procesado, 19997

documentos(Total)

1 Nodo 2 Nodos 3 Nodos 4 Nodos

Nodos/Celdas 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1 Nodo 0,273 0,00577 0,0538 0,207 2,82 172 134 134 134 0,261 67 2,32 68 68 19,7

2 Nodos 0,0904 0,00049 0,0287 0,175 2,72 167 122 121 121 0,259 61 2,08 62 62 19,4

3 Nodos 0,333 0,00071 0,0284 0,177 2,78 166 118 120 116 0,28 62 2,04 59,9 62 18,3

4 Nodos 0,199 0,00071 0,0304 0,188 2,89 177 118 127 124 0,252 57,6 2,19 62 62 18,3

Nodos/Celdas 16 17 18 19 20 21 22 23 24 25 26 27 28 Tiempo total

1 Nodo 202 0,0998 0,00027 0,00388 2,12E-05 147 123 61 68 0,00011 0,00037 4052 135 5590,745017

2 Nodos 182 0,0716 0,00066 0,00251 3,41E-05 134 115 58 62 4,79E-05 0,00023 3691 122 5104,828673

3 Nodos 179 0,0795 0,00035 0,00228 3,48E-05 134 118 59,2 62 7,80E-05 0,00023 3671 124 5075,121573

4 Nodos 179 0,0843 0,00046 0,00291 5,29E-05 134 117 58,4 58,4 4,79E-05 0,0003 3636 121 5055,538168

Tabla 5. TextClassificationmaxi (1)

Tabla 6. TextClassificationmaxi (2)

De la misma forma que sucede en la prueba de TextClassificationmini, al ser los

tiempos tan desiguales en el gráfico total no se aprecia muy bien la diferencia entre

tiempos, por lo que se ha decidido hacer dos tipos de gráficos. Esta vez, uno incluirá las

celdas con segundos y minutos y otro gráfico mostrará los tiempos de celdas superiores a

una hora.

Page 100: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

100

Ilustración 90. Gráfico segundos-minutos TextClassificationmini

0

50

100

150

200

250

5 6 7 8 9 11 12 13 14 15 16 21 22 23 24 28

Tie

mp

o e

n s

egu

nd

os

Celdas

TextClassificationmaxi 46,6 MB de archivos, 32,3 GB de procesado, 19997

documentos(Celdas segundos-minutos)

1 Nodo 2 Nodos 3 Nodos 4 Nodos

3400

3500

3600

3700

3800

3900

4000

4100

27

Tie

mp

o e

n s

egu

nd

os

Celdas

TextClassificationmaxi 46,6 MB de archivos,

32,3 GB de procesado, 19997 documentos

(Celdas horas)

1 Nodo 2 Nodos 3 Nodos 4 Nodos

4700

4800

4900

5000

5100

5200

5300

5400

5500

5600

5700

Tiempo total

Tie

mp

o e

n s

egu

nd

os

TextClassificationmaxi 46,6 MB de archivos, 32,3 GB de procesado, 19997

documentos(Tiempo total)

1 Nodo 2 Nodos 3 Nodos 4 Nodos

Ilustración 91. Gráfico horas TextClassificationmaxi Ilustración 92. Gráfico tiempos totales TextClassificationmaxi

No se han representado tiempos inferiores a un segundo ya que es cifra muy

insignificante, aunque si se ha tenido en cuenta para la suma total de tiempos. Por último,

se muestra un gráfico de tiempo total.

Page 101: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

101

1 2 3 4

TextClassificationmini 100,00% 92,33% 92,54% 93,55%

TextClassificationmaxi 100,00% 91,31% 90,78% 90,42%

ALGORITMO

TAMAÑO

ARCHIVO

TAMAÑO

DE

NODO

WORKER CORES

TIEMPO DE EJECUCIÓN

(segundos)

4.8 MB 2.8 GB 1 8 659,7722057

4.8 MB 2.8 GB 2 16 609,1775549

4.8 MB 2.8 GB 3 24 610,5689349

4.8 MB 2.8 GB 4 32 617,2375301

46.6 MB 32.3 GB 1 8 5590,745017

46.6 MB 32.3 GB 2 16 5104,828673

46.6 MB 32.3 GB 3 24 5075,121573

46.6 MB 32.3 GB 4 32 5055,538168

TextClassificationmini

TextClassificationmaxi

Tabla 8. Resultados tiempos finales escala porcentual

En contraposición, en esta prueba los tiempos de ejecución disminuyen bastante

más que en la prueba anterior y van siendo más bajos conforme se va aumentando el

número de nodos.

6.3. Resultados

Basándose en los tiempos totales de cada ejecución, se ha realizado una tabla de

resultados.

Tabla 7. Resultados tiempos finales

Para poder obtener una gráfica en la que sea visualmente comparable el

funcionamiento de Spark dependiendo de la carga de trabajo introducida en este algoritmo

concreto, se ha decidido convertir los valores de tiempos de ejecución a una escala

porcentual, siendo el 100% el funcionamiento con 1 nodo.

Page 102: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

102

84,00%

86,00%

88,00%

90,00%

92,00%

94,00%

96,00%

98,00%

100,00%

102,00%

1 2 3 4

Tiem

po

s en

esc

ala

Número de nodos

Tiempos finales (escala porcentual)

TextClassificationmini TextClassificationmaxi

Ilustración 93. Gráfico tiempos finales en escala porcentual

Con esta escala, se ha realizado el siguiente gráfico:

Como ya se había observado antes, no se obtiene el mismo resultado en cada tipo

de prueba ya que en la prueba en la que se introduce una pequeña carga de datos

(TextClassificationmini), en contraposición a lo esperado, aumenta el tiempo de ejecución

a partir del tercer nodo.

El hecho de que aumente el tiempo aunque tenga más computadores trabajando

se debe a la sobrecarga por paralelismo, en la que el nodo maestro debe distribuir el trabajo

cada vez a un mayor número de nodos y resulta más costoso que la propia naturaleza de

la aplicación que necesita poco tiempo para ejecutarse lo que hace que no se compense

la sobrecarga.

En la prueba TextClassificationmaxi se ha podido comprobar el correcto y buen

funcionamiento de Spark, compensando la sobrecarga por paralelismo y obteniendo muy

buenos tiempos en los resultados en los que se minimiza el tiempo de ejecución conforme

se integra un nodo más en el clúster.

Page 103: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

103

6.4. Problemas a lo largo del trabajo

Trabajando con máquinas virtuales han surgido varios problemas:

- Las IP de master y slave a veces cambiaban por alguna circunstancia y se

ha tenido que reconfigurar constantemente para las ips nuevas.

- Cuando se hacía Update y Upgrade, a veces aparecía el siguiente

problema: ”E: No se pudo bloquear /var/lib/dpkg/lock - open (11: Recurso no

disponible temporalmente) E: No se pudo bloquear el directorio de

administración (/var/lib/dpkg/), ¿quizás haya algún otro proceso

utilizándolo?”

Para ello la solución han sido los siguientes comandos:

$ sudo fuser -vki /var/lib/dpkg/lock

$ sudo rm -f /var/lib/dpkg/lock

$ sudo dpkg --configure –a

$ “el proceso que estaba haciendo (sudo apt-get update/upgrade)”

$ sudo apt-get autoremove

Durante la utilización de Spark aparecían errores internos con la creación del

SparkContext si antes se había estado trabajando desde la Shell. No se podía

detener el SparkContext que se crea desde la Shell y había que reiniciar todo.

6.5. Conclusiones

En este trabajo se presentó un estudio comparativo en una de las principales

herramientas de procesamiento distribuido y en paralelo de datos de la actualidad. Fueron

realizadas dos pruebas en un clúster con entradas de datos de tamaños variados y

aumentando el número de nodos de uno en uno.

Page 104: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

104

Este trabajo tenía el objetivo de demostrar que Apache Spark es un buen framework

para la manipulación de Big Data, y así ha sido. Es fácil de configurar, dispone de varias

funciones para manipular los datos y tiene muy buen desempeño lo que lo hace adecuado

para el uso en sistemas de machine learning.

Según los resultados obtenidos, se muestra la necesidad de un sistema distribuido

y paralelo para la eficacia del procesamiento de grandes cantidades de datos. También se

concluye que no merece la pena la utilización de un clúster cuando el algoritmo que se

ejecuta tiene una naturaleza de corto tiempo de ejecución y la cantidad de datos a procesar

es poca.

Además de ejecutar un solo algoritmo en varios casos, también se ha podido

comprobar el correcto funcionamiento ejecutando otros algoritmos de machine learning y

optimización.

Este capítulo ha sido sin duda el más gratificante de realizar ya que se ha visto el

fruto de meses de investigación y de trabajo.

7. ESTUDIO ECONÓMICO

En este capítulo se llevará a cabo un estudio económico para determinar el coste

que supondría poder implementar este trabajo con el objetivo de realizar unas bases para

la orientación de personas que puedan estar interesadas.

Se harán los costes en función de los materiales que se han utilizado , sin tener en

cuenta el ordenador portátil y las máquinas virtuales ya que es un coste que se puede omitir

haciéndolo todo directamente en ordenadores físicos.

Se va a subdividir en varios apartados con costes de Hardware, Software,

Honorarios y un resumen con los costes totales.

Page 105: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

105

Tabla 9. Costes Hardware

Tabla 10. Costes Software

Unidades Concepto Precio unitario

(IVA 21% incluido)

Subtotal

1 Monitor Acer AL1702 40,00 € 40,00 €

5 Ordenador de mesa

- Procesador Intel Core i7-7700 3.6Ghz

- Memoria RAM 1x8GB DDR4 2400MHz

- Disco duro 1TB Western

- Tarjeta gráfica GeForce GT 730 2GB

- Tarjeta de red Asus PCE-N15 WiFi 11n 300Mbps

620,00 € 3.100,00 €

1 Conmutador CS1308 8-Port PS/2-USB VGA KVM 149,90 € 149,90 €

1 Teclado y ratón 20,00 € 20,00 €

Total 3.309,90 €

Unidades Concepto Precio unitario

(IVA 21% incluido)

Subtotal

1 Sistema Operativo

Linux, distribución

Ubuntu 17.10

- € - €

1 Software Apache

Spark

- € - €

Total - €

7.1. Costes de Hardware

En este apartado se detallan en la siguiente tabla (Tabla 9) los costes de los

materiales que se han necesitado para implementar este trabajo.

7.2. Costes de Software

En este apartado se detallarán los costes del software que se utiliza para el

desarrollo del proyecto en la siguiente tabla (Tabla 10).

Page 106: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

106

Tabla 11. Honorarios

Tabla 12. Costes totales

Horas Concepto Precio/hora

(IVA 21% incluido)

Subtotal

480 Honorario ingeniero Telec. 12,30 € 5.904,00 €

Total 5.904,00 €

Unidades Concepto Precio unitario

(IVA 21% incluido)

Subtotal

1 Costes de Hardware 3.309,90 € 3.309,90 €

1 Costes de Software - € - €

1 Costes de Honorarios

5.904,00 € 5.904,00 €

Total 9.213,90 €

7.3. Honorarios

Se estima que la duración del desarrollo del trabajo es aproximadamente 3 meses,

de los cuales laborables son 20 días al mes con un total de 8 horas de trabajo por jornada.

Esto resulta en un total de: 20 días x 3 meses x 8 horas = 480 horas de trabajo

totales. El coste medio por hora de trabajo se estima en 12,30€.

7.4. Resumen con costes totales

Recopilando los costes de las distintas partes del estudio económico se llega a un

presupuesto final mostrado en la siguiente tabla (Tabla 12):

Page 107: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

107

8. CONCLUSIONES SOBRE EL TFG Y TRABAJOS

FUTUROS

A lo largo de este trabajo se observa que Spark presenta propiedades interesantes

que ya existían en Hadoop como la tolerancia a fallos, y además de estas, otras nuevas

como la posibilidad del uso de más lenguajes de programación y optimizaciones de

procesamiento.

Teniendo en cuenta las pruebas realizadas en un clúster Spark, cuando se habla

de procesar grandes cantidades de datos se torna necesaria la utilización de un sistema

distribuido donde todos los nodos trabajen en paralelo.

Con el estudio realizado, se concluye que Spark es realmente muy interesante y

tiene todo para cada día ser más utilizado en el mundo Big Data ya que es fácil de

configurar, ofrece diversas funciones para manipular datos y tiene muy buen desempeño.

Sin embargo, no se puede olvidar que todavía es un sistema menos maduro en vías de

desarrollo con necesidad de evolucionar en algunos puntos como en la seguridad.

Como trabajos futuros, en el desarrollo de este proyecto surgió la idea de buscar

formas de predecir de una manera anticipada el tiempo que un algoritmo en concreto

consumiría al ser ejecutado con un determinado tamaño de datos y una determinada

configuración del sistema. Esto podría servir de ayuda para la mejor elección del tipo de

clúster decidiendo cuantos nodos integrar.

9. BIBLIOGRAFÍA

9.1. Referencias

• [1] KWON, O. et al. Data quality management, data usage experience and

acquisition intention of Big Data analytics. International Journal of Information

Management. 2014. [en línea].

Page 108: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

108

Disponible en:

https://pdfs.semanticscholar.org/f199/83b3e9b7fe8106c0375ebbd9f73a53295a28.

pdf

• [2] DI MARTINO, B. et al. Big Data (lost) in the cloud. International Journal of Big

Data Intelligence., v. 1, n. 1/2, 2014. [en línea].

Disponible en:

https://www.researchgate.net/publication/264156665_Big_Data_lost_in_the_Cloud

• [3] RAJESH, K,V,N. Big Data Analytics: Applications and Benefits. The IUP Journal

of Information Technology, Vol. IX, n. 4, 2013 – introduction [en línea].

Disponible en:

https://search.proquest.com/openview/eab6d70f0b8a2c27dca5e2fd093a582b/1?p

q-origsite=gscholar&cbl=2029987

• [4] Chester Curme, Tobias Preis, Eugene Stanley, Helen Susannah Moat,

―Quantifying the semantics of search behavior before stock market moves‖;

CrossMark, December 2013 [en línea].

Disponible en: http://www.pnas.org/content/pnas/111/32/11600.full.pdf

• [5] Ruchi Verma, Sathyan Ramakrishna Mani. Using Analytics for insurance fraud

detection. Páginas 7 – 8. [en línea].

Disponible en: https://www.the-digital-insurer.com/wp-content/uploads/2013/12/53-

insurance-fraud-detection.pdf

• [6] IBM Watson Analytics for Social Media. [en línea].

Disponible en: http://www-01.ibm.com/software/analytics/solutions/customer-

analytics/social-media-analytics/

• [7] BATRA, S. Big Data Analytics and its Reflections on DIKW Hierarchy. Review of

Management. 4, ½, June 2014 – Introduction. [en línea].

Disponible en:

https://search.proquest.com/openview/3fef4fe0a59039ae439fb4185fcd7671/1?pq-

origsite=gscholar&cbl=906340

• [8] NONAKA, I.; TAKEUCHI, H. The knowledge-creating company”. Oxford

University Press, nueva york. 1997 [en línea].

Disponible en:

https://books.google.es/books?hl=es&lr=&id=tmziBwAAQBAJ&oi=fnd&pg=PA3&dq

=Nonaka,+I.+y+Takeuchi,+H.+(1997):+%E2%80%9CThe+knowledge-

Page 109: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

109

creating+company%E2%80%9D.+Oxford+University+Press,+nueva+york&ots=pS

4iCK2GHx&sig=V61q8figJkm44COKHB5qUJUer9M#v=onepage&q&f=false

• [9] ALAVI, M.; LEIDNER, D.E. Review: knowledge management and knowledge

management systems: conceptual foundations and research issues. MIS Quarterly,

v. 25, n. 1, 2001. [en línea].

Disponible en:

https://moodle.ufsc.br/pluginfile.php/950622/mod_resource/content/1/MISQ%2020

01%20Vol%2025%20No.%201%20page%20107%20Alavi%20Leidner.pdf

• [10] HANSEN, M. T. et al. The search-transfer problem: The Role of weak ties in

sharing knowledge across organization subunits. Administrative Science Quarterly,

1999. [en línea].

Disponible en:

https://www.jstor.org/stable/pdf/2667032.pdf?refreqid=excelsior%3A573383e1ed1

1cde1297dffe508f3e155

• [11] ERICKSON, S.; ROTHBERG, H. Big Data and Knowledge Management:

Establishing a Conceptual Foundation. Electronic Journal Of Knowledge

Management. [en línea].

Disponible en: www.ejkm.com/issue/download.html?idArticle=565

[12] Pablo L. Belly. Niveles de conocimiento del capital humano. [en línea].

Disponible en: https://www.gestiopolis.com/niveles-conocimiento-capital-humano/

• [13] Información página oficial de Apache Hadoop. [en línea]. Disponible en:

http://hadoop.apache.org/

• [14] El valor de la gestión de datos. ¿Qué es el Apache Hadoop? [en línea].

Disponible en:

https://blog.powerdata.es/el-valor-de-la-gestion-de-datos/bid/397377/qu-es-el-

apache-hadoop

• [15] Análisis de medidas no supervisadas de calidad en clústers obtenidos por K-

means y Particle Swarm Optimization – Andrea Villagra, Ana Guzmán, Daniel

Pandolfi y Guillermo Leguizamón. [en línea].

Disponible en:

http://dspace.palermo.edu/dspace/bitstream/handle/10226/454/20.pdf?sequence=

1&isAllowed=y

Page 110: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

110

• [16] Documentación SQL Apache Spark. [en línea]. Disponible en:

http://spark.apache.org/sql/

• [17] Documentación Streaming Apache Spark. [en línea]. Disponible en:

http://spark.apache.org/streaming/

• [18] Documentación MLlib Apache Spark. [en línea]. Disponible en:

http://spark.apache.org/mllib/

• [19] Documentación Graphx Apache Spark. [en línea]. Disponible en:

http://spark.apache.org/graphx/

• [20] Guía de programación Spark SQL, DataFrames y Datasets. [en línea].

Disponible en: https://spark.apache.org/docs/latest/sql-programming-

guide.html#datasets-and-dataframes

9.2. Otras fuentes consultadas

9.2.1. Enlaces

• International Journal of Advanced Research in Computer and Communication

Engineering Vol. 5, Issue 2, February 2016. [en línea].

Disponible en: https://www.ijarcce.com/upload/2016/february-

16/IJARCCE%2015.pdf

• Bernard Marr, How Big Data Is Changing Healthcare. [en línea].

Disponible en: http://www.forbes.com/sites/bernardmarr/2015/04/21/how-big-data-

is-changing-healthcare/

• Sundar Ram, Why Big Data is the booster shot the healthcare industry needs. [en

línea].

Disponible en: http://www.firstpost.com/business/big-data-booster-shot-healthcare-

industry-needs-2160271.html

• Derek Klobucher, Sentiment Analysis with Big Data, September 20, 2013. [en línea].

Disponible en: http://www.news-sap.com/sentiment-analysis-with-big-data/

• Gil Allouche, The Impact of Big Data on the Food Industry. [en línea].

Page 111: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

111

Disponible en: https://datafloq.com/read/big-datas-impact-food-industry/96

• José David Jurado Alonso, Apache Hadoop: Introducción a HDFS. 29 enero, 2013.

[en línea].

Disponible en: http://www.happyminds.es/apache-hadoop-introduccion-a-hdfs/

• Tutorials point Simply Easy Learning, Hadoop – Introducción. [en línea].

Disponible en:

https://www.tutorialspoint.com/es/hadoop/hadoop_introduction_to_hadoop.htm

• Alberto Lorenzo. Arquitectura Hadoop. [en línea].

Disponible en: https://elentornodehadoop.wordpress.com/2015/04/06/arquitectura-

hadoop/

• Sachin P Bappalige. An introduction to Apache Hadoop for Big Data. [en línea].

Disponible en: https://opensource.com/life/14/8/intro-apache-hadoop-big-data

• Documentación Hadoop. Setting up a Single Node Cluster. [en línea].

Disponible en: https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-

common/SingleClúster.html#Standalone_Operation

• El valor de la gestión de datos. Spark vs Hadoop, ¿quién saldrá vencedor? [en

línea].

Disponible en: https://blog.powerdata.es/el-valor-de-la-gestion-de-datos/Spark-vs-

hadoop-quien-saldra-vencedor

• Manuel Zaforas. Spark: un destello en el universo Big Data. Blog tecnología para

Desarrollo. [en línea].

Disponible en: https://www.paradigmadigital.com/dev/Spark-un-destello-en-el-

universo-big-data/

• Sinnexus, Business Intelligence Informática Estragégica. Datamining (minería de

datos) [en línea].

Disponible en: http://www.sinnexus.com/business_intelligence/datamining.aspx

• Baoss. Técnicas de análisis Big Data. 2 junio 2015 [en línea].

Disponible en: https://www.baoss.es/tecnicas-de-analisis-big-data/

• Microsoft Neural Network Algorith [en línea].

Disponible en: https://docs.microsoft.com/es-es/sql/analysis-services/data-

mining/microsoft-neural-network-algorithm

• Redes Neuronales. ¿Qué son y cómo funcionan? 17 noviembre 2016. [en línea].

Page 112: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

112

Disponible en: donaldre.com/redes-neuronales-que-son-y-como-funcionan/

• Ana Teresa Freitas. Técnicas de data mining, redes neuronales. [en línea].

Disponible en:

http://web.tecnico.ulisboa.pt/ana.freitas/bioinformatics.ath.cx/bioinformatics.ath.cx/i

ndex0717.html?id=109

• Scientia et Technica Año XI, No 27, abril 2005. UTP. ISSN 0122-1701 67 LAS

MÁQUINAS DE SOPORTE VECTORIAL (SVMs) [en línea].

Disponible en: http://www.redalyc.org/pdf/849/84911698014.pdf

• Ad tech & analytics. El algoritmo K-NN y su importancia en el modelado de datos.

20 julio 2017. [en línea].

Disponible en: http://www.analiticaweb.es/algoritmo-knn-modelado-datos/

• Algoritmos de aprendizaje: knn & kmeans, CG Cambronero, IG Moreno - Intelgencia

en Redes de Comunicación, 2006 [en línea].

Disponible en: http://www.it.uc3m.es/jvillena/irc/practicas/08-09/06.pdf

• Gil Monserrate, árbol de decisiones. [en línea].

Disponible en: http://slideplayer.es/slide/3612396/

• Todo sobre árboles de decisión. Lucidchart. [en línea].

Disponible en: https://www.lucidchart.com/pages/pt/tudo-sobre-%C3%A1rvores-

de-decis%C3%A3o

• José Luis López. Algoritmo de Regresión lineal – Inteligencia Artificial. 28 diciembre

2017. [en línea].

Disponible en: https://planetachatbot.com/algoritmo-de-regresi%C3%B3n-lineal-

inteligencia-artificial-a3afd24eeb2f

• Algoritmo de regresión lineal de Microsoft. [en línea].

Disponible en: https://msdn.microsoft.com/es-es/library/ms174824(v=sql.120).aspx

• Alberto Coronado. Formación machine learning: Algoritmos de machine learning

por tipo de aplicación. 4 enero 2017. [en línea].

Disponible en: https://www.albertcoronado.com/2017/01/04/formacion-machine-

learning-algoritmos-de-machine-learning-por-tipo-de-aplicacion/

• Paloma Recuero. Las 9 tareas del Machine Learning. 13 noviembre 2017. [en línea].

Diponible en: https://blogthinkbig.com/tareas-machine-learning

• Algoritmos Genéticos, ÁK Morales, JG Casas. [en línea].

Page 113: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

113

Disponible en:

https://b35e8169-a-62cb3a1a-s-

sites.googlegroups.com/site/unamfcienciascomputoevolutivo/materials/Kuri-

Galaviz-AG.pdf

• Andrés A. García. Métodos de optimización: Algoritmos genéticos. Trandingsys. 16

febrero 2012 [en línea].

Disponible en: http://www.tradingsys.org/metodos-de-optimizacion-algoritmos-

geneticos

• Haupt, R. L. y Haupt, S. E., (2004): “Practical genetic algorithms”. Ed. Wiley (Second

Edition). [en línea].

Disponible en: http://www.csbdu.in/csbdu-old/pdf/Practical_Genetic_Algorithms.pdf

• Mario A. Muñoz, Jesús A. López y Eduardo F. Caicedo. Inteligencia de enjambres:

sociedades para la solución de problemas (una revisión). Revista ingeniería e

investigación vol. 28 no. 2, agosto de 2008 (119-130) [en línea].

Disponible en: http://www.redalyc.org/html/643/64328216/

• Andrea Villagra, Ana Guzman, Daniel Pandolfi, Guillermo Leguizamón. Analisis de

medidas no-supervisadas de calidad en clusters obtenidos por K-means y Particle

Swarm Optimization. [en línea].

Disponible en:

http://dspace.palermo.edu/dspace/bitstream/handle/10226/454/20.pdf?sequence=

1&isAllowed=y

• Fernando Sancho Caparrini. PSO: Optimización por enjambres de partículas. 18

noviembre 2016. [en línea].

Disponible en: http://www.cs.us.es/~fsancho/?e=70

• Jaume Bacardit Peñarroya. Pittsburgh genetic-based machine learning in the data

mining era. [en línea].

Disponible en: https://dialnet.unirioja.es/servlet/tesis?codigo=19529

• Genetic Fuzzy Systems: Evolutionary Tuning And Learning Of Fuzzy Knowledge

Bases, Cordon Oscar, Herrera Francisco, Hoffmann Frank, World Scientific, 13 jul.

2001 - 488 páginas [en línea].

Disponible en:

https://books.google.es/books?id=w2zVCgAAQBAJ&printsec=frontcover&dq=Gen

etic+Fuzzy+Systems:+Evolutionary+Tuning+And+Learning+Of+Fuzzy+Knowledge

Page 114: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

114

+Bases,+Cordon+Oscar,&hl=es&sa=X&ved=0ahUKEwj2w6nkjZTZAhULuxQKHeiv

Dg4Q6AEIKzAA#v=onepage&q=Genetic%20Fuzzy%20Systems%3A%20Evolutio

nary%20Tuning%20And%20Learning%20Of%20Fuzzy%20Knowledge%20Bases

%2C%20Cordon%20Oscar%2C&f=false

• Martín De Lima. Introducción a sistemas fuzzy en Matlab y uso de Simulink. [en

línea].

Disponible en: http://slideplayer.com.br/slide/297529/

• ESCOM. Reglas difusas. 21 septiembre 2009. [en línea].

Disponible en: https://es.slideshare.net/mentelibre/5-introduccin-a-los-sistemas-

basados-en-reglas-difusas

Karlijn Willems. Apache Spark in Python: Beginner's Guide. 28 Marzo 2017. [en

línea].

Disponible en: https://www.Datacamp.com/community/tutorials/apache-Spark-

python

Página oficial Apache Zeppelin. [en línea].

Disponible en: https://zeppelin.apache.org/

• Jupyter/IPython Notebook Quick Start Guide. What is the Jupyter Notebook? [en

línea].

Disponible en:

http://jupyter-notebook-beginner-

guide.readthedocs.io/en/latest/what_is_jupyter.html

• APACHE ZEPPELIN, What Zeppelin Does. [en línea].

Disponible en: https://es.hortonworks.com/apache/zeppelin/

• María Botón Fernández. Introducción a Jupyter. 29 Octubre 2015. [en línea].

Disponible en: https://cetatech.ceta-ciemat.es/2015/10/introduccion-a-jupyter/

• Jacek Laskowski. Mastering Apache Spark 2 (Spark 2.2+), Spark Notebook [en

línea].

Disponible en: https://jaceklaskowski.gitbooks.io/mastering-apache-

spark/interactive-notebooks/spark-notebook.html

• Documentación Spark. Cluster Mode Overview [en línea].

Disponible en: https://spark.apache.org/docs/latest/clúster-overview.html

• Robin Moffatt. Linux cluster sysadmin -- SSH keys. 9 Diciembre 2014. [en línea].

Page 115: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

115

Disponible en: https://www.rittmanmead.com/blog/2014/12/linux-clúster-sysadmin-

ssh-keys/

• Documentación Apache Spark. Spark configuration. [en línea].

Disponible en: http://Spark.apache.org/docs/latest/configuration.html

• Documentación Apache Spark. Spark Security. [en línea].

Disponible en: https://spark.apache.org/docs/latest/security.html

• Reynold Xin, Michael Armbrust and Davies Liu. Introducing DataFrames in Apache

Spark for Large Scale Data Science. in ENGINEERING BLOG. 17 Febrero 2015 [en

línea].

Disponible en: https://databricks.com/blog/2015/02/17/introducing-dataframes-in-

spark-for-large-scale-data-science.html

• BBVAOPEN4U. Apache Spark: las ventajas de usar al nuevo ‘rey’ de Big Data. 25

septiembre 2015. [en línea].

Disponible en: https://bbvaopen4u.com/es/actualidad/apache-spark-las-ventajas-

de-usar-al-nuevo-rey-de-big-data

• 7 razones por las que deberías usar Apache Spark. El blog de ASPgems. 31 Julio

2015. [en línea].

Disponible en: https://aspgems.com/blog/apache-Spark/7-razones-por-las-que-

deberias-usar-apache-Spark

9.2.2. Videotutoriales

InformaticaCV. Visión general y estado del arte del Big Data. [en línea].

Disponible en: https://www.youtube.com/watch?v=C6L4pIU5bQ8&t=792s

Analytics centro de recursos: Logicalis Spain. Cómo planificar con éxito un proyecto

de Big Data Por Lantares. [en línea].

Disponible en: https://www.youtube.com/watch?v=u-a9xwJ4AR4&t=12s

MundoGEO. Big Data e Cidades Inteligentes [en línea].

Disponible en: https://www.youtube.com/watch?v=oOe9ma--Gps

KeepCoding®. Big Data en Python con PySpark - KeepCoding Webinar [en línea].

Disponible en: https://www.youtube.com/watch?v=SRBih5LwDZw

Page 116: Trabajo Fin de Grado - Trabajos Academicos de la ...tauja.ujaen.es/bitstream/10953.1/8380/1/MEMORIA.pdf · 2 Trabajo Fin de Grado Curso 2017 – 2018 ANÁLISIS DE DATOS Y EXTRACCIÓN

116

Michael Galarnyk. Install Anaconda on Ubuntu (Python) [en línea].

Disponible en: https://www.youtube.com/watch?v=jo4RMiM-ihs

Michael Galarnyk. Install Spark on Ubuntu (PySpark) + Configure Jupyter Notebook

[en línea].

Disponible en: https://www.youtube.com/watch?v=uhVYTNEe_-A&t=16s