LAD01147_Introduccion_Big_Data_U3_S3
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Introducción al big data – Arquitecturas tecnológicas big data<br />
3. ECOSISTEMA HADOOP (III)<br />
3.1 Capa analítica y de visualización<br />
3.1.1. R<br />
R es un entorno y un lenguaje de programación con un enfoque al análisis<br />
estadístico. Parte de una implementación libre del lenguaje S, desarrollado por<br />
Robert Gentleman y Ross Ihaka del Departamento de Estadística de la Universidad<br />
de Auckland en 1993.<br />
Este lenguaje forma parte de GNU y se distribuye bajo licencia GNU GLP.<br />
Sus principales características son:<br />
• R al estar orientado a las estadísticas, proporciona un amplio abanico de<br />
herramientas. o Entre otras características de R, podemos nombrar su<br />
capacidad gráfica, que permite generar gráficos con alta calidad, con sólo<br />
utilizar las funciones para generar gráficos.<br />
• R también puede usarse como herramienta de cálculo numérico y a la vez<br />
ser útil para la minería de datos.<br />
R viene con su propio entorno de desarrollo interactivo que nos permiten ver los<br />
resultados a medida que vamos trabajando con los datos.<br />
27 © Structuralia
Introducción al big data – Arquitecturas tecnológicas big data<br />
Figura 10: RStudio<br />
R contiene infinidad de paquetes estadísticos para identificar correlaciones, estimar<br />
predicciones, rankings, desviaciones, distribuciones etc. Cuenta además con un<br />
poderoso paquete de dibujo para visualizar nuestros resultados.<br />
© Structuralia 28
Introducción al big data – Arquitecturas tecnológicas big data<br />
Figura 11: Ejemplo de gráfico en R<br />
R puede integrarse dentro de entornos BIG DATA a través de Spark o Hadoop.<br />
3.1.2. Python<br />
Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en<br />
una sintaxis que favorezca un código legible.<br />
Python es un lenguaje de programación multiparadigma. Esto significa que más que<br />
forzar a los programadores a adoptar un estilo particular de programación, permite<br />
varios estilos: programación orientada a objetos, programación imperativa y<br />
programación funcional. Otros paradigmas están soportados mediante el uso de<br />
extensiones.<br />
No se trata de un lenguaje específico para estadística como es R, sino que es un<br />
lenguaje genérico que por su filosofía se ha hecho un hueco importante en el<br />
mundo analítico, por lo que se basa en herramientas específicas para realizar el<br />
trabajo analítico y estadístico, algunas de ellas son:<br />
29 © Structuralia
Introducción al big data – Arquitecturas tecnológicas big data<br />
• Numpy<br />
Una extensión de Python, que le agrega mayor soporte para vectores y<br />
matrices, constituyendo una biblioteca de funciones matemáticas de alto<br />
nivel para operar con esos vectores o matrices.<br />
• Pandas<br />
Pandas es una librería open source que aporta a Python unas estructuras<br />
de datos fáciles de user y de alta performance, junto con un gran número<br />
de funciones esenciales para el análisis de datos. Con la ayuda de<br />
Pandas podemos trabajar con datos estructurados de una forma más<br />
rápida y expresiva.<br />
• Sci-py<br />
Conjunto de paquetes donde cada uno ellos ataca un problema distinto<br />
dentro de la computación científica y el análisis numérico. Algunos de los<br />
paquetes que incluye, son:<br />
o<br />
o<br />
o<br />
o<br />
o<br />
o<br />
scipy.integrate: que proporciona diferentes funciones<br />
para resolver problemas de integración numérica.<br />
scipy.linalg: que proporciona funciones para resolver<br />
problemas de álgebra lineal.<br />
scipy.optimize: para los problemas de optimización y<br />
minimización.<br />
scipy.signal: para el análisis y procesamiento de<br />
señales.<br />
scipy.sparse: para matrices dispersas y solucionar<br />
sistemas lineales dispersos<br />
scipy.stats: para el análisis de estadística y probabilidades.<br />
• Scikit-learn<br />
Librería especializada en algoritmos para data mining y machine learning.<br />
Algunos de los problemas que podemos resolver utilizando las<br />
herramientas de Scikit-learn, son:<br />
© Structuralia 30
Introducción al big data – Arquitecturas tecnológicas big data<br />
o<br />
o<br />
o<br />
o<br />
o<br />
o<br />
Clasificaciones: Identificar las categorías a que cada<br />
observación del conjunto de datos pertenece.<br />
Regresiones: Predecir el valor continuo para cada nuevo<br />
ejemplo.<br />
Agrupaciones: Agrupación automática de objetos similares en<br />
un conjunto.<br />
Reducción de dimensiones: Reducir el número de<br />
variables aleatorias a considerar.<br />
Selección de Modelos: Comparar, validar y elegir parámetros<br />
y modelos.<br />
Preprocesamiento: Extracción de características a analizar<br />
y normalización de datos.<br />
• Maptolib<br />
La librería más popular en Python para visualizaciones y gráficos.<br />
Matplotlib puede producir gráficos de alta calidad dignos de cualquier<br />
publicación científica.<br />
• Ipython<br />
Entorno de trabajo interactivo en contraposición al tradicional modelo de<br />
desarrollo de software de editar-compilar-ejecutar<br />
• Tensorflow<br />
Biblioteca de código abierto para aprendizaje automático a través de un<br />
rango de tareas, y desarrollado por Google para satisfacer sus<br />
necesidades de sistemas capaces de construir y entrenar redes<br />
neuronales para detectar y descifrar patrones y correlaciones, análogos al<br />
aprendizaje y razonamiento usados por los humanos.<br />
Podemos trabajar en entornos BIG DATA con Python directamente con trabajos<br />
MapReduce o a través de Spark y su librería PySpark, con la que tendremos<br />
acceso a todos los algoritmos y la capacidad de computo de Spark.<br />
31 © Structuralia
Introducción al big data – Arquitecturas tecnológicas big data<br />
3.1.3. Scala<br />
Scala es un lenguaje de programación multi-paradigma diseñado para expresar<br />
patrones comunes de programación en forma concisa, elegante y con tipos<br />
seguros. Integra sutilmente características de lenguajes funcionales y orientados a<br />
objetos. La implementación actual corre en la máquina virtual de Java y es<br />
compatible con las aplicaciones Java existentes.<br />
Scala no es un lenguaje tradicionalmente asociado a entornos estadísticos y/o<br />
analíticos, no obstante, su importancia es clave en el mundo BIG DATA porque<br />
muchas de las herramientas con las que vamos a trabajar están desarrolladas<br />
utilizando este lenguaje y por tanto se ejecutarán de forma más rápida y tendremos<br />
acceso a toda la funcionalidad si utilizamos este lenguaje.<br />
3.1.4. Notebooks<br />
El concepto de “notebook” fue introducido por iPython, que permitía trabajar sobre<br />
un interfaz web en lugar de sobre una Shell.<br />
© Structuralia 32
Introducción al big data – Arquitecturas tecnológicas big data<br />
Figura 12: Ejemplo de notebook<br />
El notebook permite compartir tus procesos con otros, de modo que estos puedan<br />
entenderlos, modificarlos y adaptarlos a sus necesidades.<br />
Siguiendo con iPython, IPython 3 fue rearquitecturado y se creó Jupyter que ofrece<br />
una gran cantidad de lenguajes (Scala, R, Python, Spark, F#, …)<br />
Estos notebooks son entornos que permiten realizar un análisis / procesado de<br />
datos interactivo y visualizar los resultados utilizando librerías como maptolib<br />
(python) o ggplot2(R).<br />
33 © Structuralia
Introducción al big data – Arquitecturas tecnológicas big data<br />
Dentro del ecosistema Hadoop podemos encontrar su propio notebook llamado<br />
Zeppelin. Zeppelin es una implementación del concepto de web notebook, centrado<br />
en la analítica de datos interactivo mediante lenguajes y tecnologías como Shell,<br />
Spark, SparkSQL, Hive, Elasticsearch, R, etc.<br />
Figura 13: Zeppelin<br />
Mientras que Jupyter surgió antes de Hadoop y necesita de cierta integración para<br />
poder trabajar con entornos Hadoop, Apache Zeppelin está completamente<br />
integrada, proporcionando, además:<br />
• Simplicidad<br />
• Agnóstico del lenguaje<br />
• Permite crear notebooks en varios lenguajes<br />
• Integrado a la perfección con Hadoop y Spark, por ejemplo<br />
© Structuralia 34
Introducción al big data – Arquitecturas tecnológicas big data<br />
3.1.5. Herramientas comerciales<br />
Muchas de las herramientas analíticas del mercado permiten conectar con Hadoop<br />
y realizar analítica y visualización de datos, entre ellas destacan las siguientes:<br />
• SAS Visual Analytics<br />
SAS Visual Analytics ofrece una plataforma completa para la visualización<br />
analítica, lo que permite identificar los patrones y las relaciones de los<br />
datos que antes no eran evidentes. Las capacidades interactivas de<br />
Business Intelligence y reportes de autoservicio se combinan con la<br />
analítica avanzada para que todos puedan descubrir conocimientos de<br />
cualquier tamaño y tipo de datos, incluyendo texto.<br />
• Tableau<br />
Tableau es una herramienta de análisis perfecta para una empresa, fácil<br />
de usar y muy potente, convierte los datos de múltiples fuentes en<br />
información de valor para la toma de decisiones. Sus funcionalidades y<br />
características la convierten en una potente y versátil herramienta para las<br />
empresas.<br />
• Qlik<br />
QlikView y Qlik Sense estaban destinados a ser productos diferentes,<br />
aunque en este último se gana en versatilidad y funcionalidad de cara a<br />
los usuarios, consiguiendo que construyan cuadros de mando, informes,<br />
métricas, gráficas con un clic o arrastrando y soltando ítems determinados<br />
en la aplicación (tablas, mapas, embudos).<br />
3.1.6. Otras herramientas de visualización<br />
A parte de las anteriores herramientas ad-hoc, que tienen integraciones específicas<br />
para facilitar el acceso a los datos almacenados en Hadoop, siempre podremos<br />
realizar una integración propia con cualquier herramienta del mercado como, por<br />
ejemplo:<br />
35 © Structuralia
Introducción al big data – Arquitecturas tecnológicas big data<br />
• D3js<br />
D3.js (o simplemente D3 por las siglas de <strong>Data</strong>-Driven Documents) es una<br />
librería de JavaScript para producir, a partir de datos, infogramas<br />
dinámicos e interactivos en navegadores web. Hace uso de tecnologías<br />
bien sustentadas como SVG, HTML5, y CSS.<br />
Figura 12: D3js<br />
• TimelineJS<br />
Timeline JS es una herramienta en abierto que nos permite crear líneas<br />
del tiempo muy atractivas e interactivas siguiendo unos pasos muy<br />
sencillos.<br />
Figura 13: Timelinejs<br />
© Structuralia 36
Introducción al big data – Arquitecturas tecnológicas big data<br />
3.2 IA & Machine Learning<br />
Aunque en Hadoop podemos crear y utilizar algoritmos de machine learning / Deep<br />
learning a través de librerías de Python / R, debido al paralelismo de Hadoop puede<br />
que no tengamos disponible toda su potencia, por lo que Hadoop viene con sus<br />
propias herramientas de IA para aprovechar el paralelismo y su arquitectura.<br />
No obstante, y aunque nombraremos aquí alguna, en áreas como Machine / Deep<br />
Learning e Inteligencia Artificial las herramientas más potentes se desarrollan para<br />
arquitecturas Spark.<br />
3.2.1. Mahout<br />
Apache Mahout es una librería de software libre que ofrece implementaciones<br />
escalables de algoritmos de machine learning. Está desarrollada en Java, y se<br />
orienta a tres líneas principales:<br />
• Clasificación<br />
• Clustering<br />
• Sistemas de recomendación<br />
Mahout se apoya en Hadoop, implementación open-source del paradigma<br />
MapReduce que se ha convertido en una referencia en el ámbito de <strong>Big</strong> <strong>Data</strong>. El<br />
logo de Hadoop es un elefante amarillo. Y en la India, un mahout es la persona que<br />
maneja un elefante. Aunque la intención de Apache Mahout es la de soportar<br />
algoritmos escalables no necesariamente desarrollados sobre Hadoop.<br />
La lista de algoritmos soportados por esta librería hasta el momento incluye:<br />
• Clasificación: regresión logística (SGD), Bayes, random forests…<br />
• Clustering: k-means, LDA…<br />
• Búsqueda de conjuntos frecuentes y coocurrencias de términos<br />
• Factorización de matrices sparse para reducción de dimensionalidad: SVD,<br />
SSVD<br />
• Filtrado colaborativo<br />
• Algoritmos evolutivos<br />
37 © Structuralia
Introducción al big data – Arquitecturas tecnológicas big data<br />
No obstante, desde 2014 Mahout trabaja intensamente en la integración con Spark<br />
por lo que el código que trabaja con MapReduce está bastante obsoleto.<br />
3.2.2. H2O<br />
H2O es una plataforma Machine Learning open-source desarrollada en Java.<br />
Ofrece un gran conjunto de algoritmos ML y un UI de procesamiento (H2o Flow).<br />
Permite desarrollar aplicaciones ML en diversos lenguajes: Java, Scala, Python y R<br />
y ofrece interfaces con Spark, HDFS, Amazon <strong>S3</strong> y BD NoSQL.<br />
Figura 14: H2O<br />
© Structuralia 38