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).
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.
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
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
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.
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.
Hola Antonio te veo muy adentrado en el tema de big data, es un campo muy interesante, enhorabuena!
ResponderEliminarThank you for your comment!!. We hope to continue sharing information about performance testing.
ResponderEliminar