martes, 5 de enero de 2016

Big Data II.Ecosistema de Hadoop.

Introducción.



Como ya dijimos en el anterior artículo, Hadoop actúa sobre los datos contenidos en su HDFS mediante las operaciones MapReduce. Ahora voy a contaros una cosa. Antes de empezar a tratar sobre dichos datos debe volcarlos a  ficheros y para ellos , requiere de herramientas externas para realizar lo que se llama E.T.L. (Extraction , Transformation ,Loading).



Extraction: Extrae datos de diferentes origenes. Si se dispone de conectores o drivers específicos sobre BBDD Hadoop y su ecosistema admite la conexión a fuentes de datos via ODBC o similares para el proceso.
Transformation: Valida, normaliza los datos para evitar errores
Loading: Vuelca los datos al HDFS (o a otros sistemas de BigData).

Para ello se introduce aquí el concepto de “ecosistema de hadoop”, es decir aquellas herramientas y utilidades que complementan a Hadoop para realizar las tareas de procesamiento masivo de datos.



Hadoop es el “motor” del vehículo. Las herramientas de ecosistema se pueden ejemplarizar como los neumáticos, la suspensión,..etc



Para realizar dichas operaciones ETL tenemos herramientas como scoop (http://sqoop.apache.org/), que permite la transferencia de datos de E.T.L.  de manera eficiente e integrada con Hadoop. Está también desarrollada por la Apache Software Foundation. Aquí hago un paréntesis para indicar que Hadoop es capaz de tratar tanto con datos estructurados (las clásicas tablas de BBDD organizadas en columnas ) como con no estructurados (XML).



Flujo de Scoop y Hadoop.


Scoop permite 
  • Volcar todas las tablas de BBDD que encuentre en una conexión a la misma (indicando por ejemplo que los datos están separados por un carácter especial como un tabulador). 

  • Importar solo una columna de una tabla o varias ,incluso indicando un criterio de selección. 

  • Re-importar a la BBDD en el HDFS los nuevos registros que se añadan tras la primera importación.Aunque esto requiere que hay campos que registren el momento de creación de cada campo, para poderlo hacer de manera eficiente,sin reimportar de nuevo campos ya existentes.   
También admite el proceso inverso de exportación. Recordemos que el sistema de ficheros de Hadoop (HDFS)  distribuye los datos entre los ficheros con redundancia y seguridad.



Hemos de indicar que aunque parezca un proceso estático ,es decir , sólo se añaden campos ya existentes o creados  tras un proceso E.T.L. , este proceso puede ser online, importando los registros a medida que las BBDD o fuentes se van actualizando en el momento.



El tratamiento de datos requiere capacidad de procesador , memoria y debe ser resistente a fallos causados por la caída de nodos o corrupción del dato.


Aquí entra también el concepto de “Machine Learning” asimilable a Business Inteligence. Hadoop usa varios algoritmos de Machine Learning, entre los que destacamos
  •  Kmeans
  •  Canopy
  •  NLineInputFrame
Es decir, indicamos qué manera de tratar los datos se usará como método de agrupar y consolidar los datos que posteriormente serán usados para el análisis e informes.

También podemos incluir dentro del Ecosistema herramientas como


  • Zookeeper: Servidor de aplicaciones distribuidas
  • HBASE y Cassandra: BBDD NoSQL
  • PIG – HIVE. Capas de abstracción de nivel superior para tratamiento de datos y consulta.
  • MAHOUT: Librería para descubrimiento de origen de datos.

Caso de Uso. 



Ejemplificaremos el flujo de tratamiento de los datos y su procesamiento .Imaginemos un fichero ETL que contiene los datos segmentados de clientes de una compañía de seguros . Dicho fichero se ha construido en base a los ya existentes en las bases de datos de negocio e incluso, recopilando información de otras fuentes, como formularios de contacto, mensajes en redes sociales , encuestas…etc.

Estableceremos dichos segmentos en base a ingresos, edad para ofrecer descuentos, fidelizaciones y ofertas específicas para cada uno.

Seleccionamos como algoritmo de machine learning KMeans, que establecerá los segmentos en base a promedios y medianas alrededor de valores de edad e ingresos, con rangos que inicialmente serán escogidos por el programador(¿programador? ¿quién sabia esto, que es otro gasto de personal, ¡hombre!).

KMeans agrupará y reducirá los datos alrededor de cada”K”.

KMeans, grupos iniciales

El objetivo será crear ficheros más pequeños ordenados para cada segmento(Map)  sobre los que se podamos agrupar y consolidar datos de manera menos costosa computacionalmente, aplicando el Reduce.

Esto generará un proceso iterativo de operaciones para ajustar los segmentos en base a los valores iniciales , estableciendo una condición de parada , que puede ser una regla de coste.
KMeans.Datos tras MapReduce


Y aquí es donde hay que ver la tarea del programador; estas operaciones requieren instancias o implementar código Java que medias sacados en el fichero. Es decir, hay que crear código para instanciar las operaciones de Map y Reduce ajustadas según el algoritmo y los datos sobre los que se va a tratar

Eclipse se ha impuesto como IDE de referencia para los desarrolladores de Hadoop , integrándose directamente mediante un plugin con Hadoop y sus job MapReduce, proporcionando ayuda para la implementación de código.



Apache Spark.


Esta herramienta del ecosistema está dirigida a facilitar todo el proceso de trabajo de Hadoop. Es un framework de computación en cluster de software libre, diferenciándose hadoop en que el dato no se trabaja en batch, sino en streaming.
Spark permite trabajar con


  • Datos estructurados(SQL)       
  • Datos en streaming (Spark Streaming)
  • Machine Learning (MLib)
  • Computación sobre grafos (GraphX)

Spark coordina el procesamiento en el cluster Hadoop mediante SparkContext, ejecutando las tareas distribuyéndose entre los nodos.


Spark utiliza conjuntos distribuidos y flexibles de datos llamados RDD (Resilient Distributed Dataset)  sobre los que trabaja en paralelo. Dependiendo del origen de los datos, se distinguen


  •  Colecciones basadas en Scala
  •  Dataset de Hadoop.

Sobre un RDD se ejecutan dos tipos de operaciones:


  •  Transformaciones (Map)
  •  Acción (Reduce)

Scala nos permite reducir la implementación de código necesaria , ya que incluye multitud de clases y métodos asociados para tratar con los ficheros ETL de manera directa para su tratamiento estadístico y análisis . Así puede instanciar se una clase sobre la que se carguen los datos del fichero e invocar métodos como count() o filter() .
Apache Spark  utiliza todas las clases y métodos ya predefinidos en nuestro código para tareas Hadoop. Es decir, que podemos usar instancias ya creadas de Map() y Reduce() que se ajusten a nuestras necesidades.



Hive.

Es otro framework que facilita por consultas SQL la generación de operaciones MapReduce. En realidad usa un lenguaje asimilable a SQL llamado HiveQL.
Hive genera tareas paralelizables MapReduce en entornos distribuidos.




Pig

Al igual que Spark/Scala es una alternativa para reducir el código a escribir, estando especilizado en la unión y transformación de datos.
Se puede instalar un cliente Pig en una máquina cliente ,que traduce los PigLatin scripts (no me miréis así , yo no le pongo los nombres) a Jobs MapReduce y los envía al cluster Hadoop.




Apache Oozie

Permite a los desarrolladores gestionar el flujo de trabajo , coordinando la ejecución y control de los Jobs individuales. Oozie gestiona muchas de las operaciones del flujo de trabajo, integrando scripts de Hive o Pig, Java , manipulando datos por comandos HDFS, enviando correos…
Por supuesto, hay muchas más que nos dejamos en el tintero como Cassandra, FlockDB, Horton. Pero esto es una aproximación y desde ahí se puede investigar.

Herramientas de visualización.

Una vez generado todo el trabajo sobre los datos, queda la parte del análisis ,extrapolación y representación de informes. Para ello ,se han desarrollado herramientas específicas sobre las que vamos a indicar las más populares.

Tableau.
Visualiza y trata datos de manera intuitiva, dispone de un modelo de detección de datos y extrapolación . Permite combinar múltiples fuentes de datos de manera heteregonea.
Permite también conectar a archivos ya existentes. Entre otros de productos como SaS,SPSS o “R”.

ClipView es usado también como herramienta de visualización y análisis de Big Data.

Google Fussion Table. Herramienta propia de Google (los creadores de buena parte de estos conceptos) https://support.google.com/fusiontables

Estas herramientas suelen ser usadas por las personas vinculadas a dirección, marketing ..etc, tratando sobre los datos ya gestionados, creando diversos "cuadros de mando" sobre los que hacer presentaciones y tomar acciones ,que es el propósito final de toda la metodologia Big Data.


Aplicaciones en el dia a dia


Como ya dijimos en el artículo anterior , el uso que se le da en el BigData puede tratar
  • Análisis de la experiencia de venta, indagando y estableciendo correlaciones en la actividad de los clientes , los productos vendidos , información geográfica, ..etc.
  • Detección de riesgos y fraudes. Se pueden descubrir patrones sospechosos de movimientos bancarios , gastos e ingresos…
  • Detección de problemas en sistemas:  Analizando y correlacionando la información de monitorización, logs e históricos de servidores se pueden establecer posibles cuellos de botella , memory leaks..etc

Por ejemplo, también podríamos analizar los datos obtenidos de una herramienta de gestión de incidencias software para establecer qué tipo de problemas se presentan en la resolución de incidencias asociadas al código, qué proveedores obtienen mejores resultados en sus códigos , mejoras en el procedimiento ,como reducción de pasos en la atención o mejores métodos de helpdesk para solventar problemas…

Si os habéis fijado estos dos útimos  usos tienen una relación directa con la calidad del software que se trata habitualmente en este blog (os dije que  había relación , gente de poca fé).

Como esto se está extendiendo, continuaremos otro día con algunas recomendaciones de uso y monitorización. Así como cualquier  aclaración o corrección que nos sugieran nuestros lectores y que podamos incluir en este blog.

 

2 comentarios:

  1. Hola Antonio te veo muy adentrado en el tema de big data, es un campo muy interesante, enhorabuena!

    ResponderEliminar
  2. Thank you for your comment!!. We hope to continue sharing information about performance testing.

    ResponderEliminar