Searching...
lunes, 22 de mayo de 2017

Componentes Principales del Ecosistema Hadoop

En este artículo voy a hablar de varias herramientas diferentes que se utilizan en la parte superior del framework Hadoop. Con la evolución de la tecnología informática, ahora es posible gestionar volúmenes masivos de datos que anteriormente sólo podíamos tratar con super-computadoras, y de una manera prohibitivamente cara. Ahora los precios de los sistemas han caído, dando lugar a que aparezcan resultados con las nuevas técnicas de computación distribuida, que de hecho se han convertido en tendencia. El verdadero avance sucedió cuando empresas como Yahoo, Google y Facebook llegaron a la conclusión de que tenían que hacer algo para monetizar estas enormes cantidades de datos que estaban recopilando. Aquí es donde todas estas aplicaciones han evolucionado con el tiempo en todas estas organizaciones.
Ecosistema Apache Hadoop

Hablemos en primer lugar de Apache Sqoop. Sqoop significa SQL para Hadoop. Es una herramienta sencilla de línea de comandos que tiene varias capacidades diferentes. Nos permite importar tablas individuales o bases de datos enteras en nuestro sistema HDFS. Y genera clases Java que nos permiten interactuar e importar datos, con todos los datos que hemos importado. Proporciona la capacidad de importar bases de datos SQL directamente en el almacén de datos de alta que se encuentra dentro del sistema HDFS. Después de configurar un scoop de importación, podemos empezar a trabajar con los datos copiados de las bases de datos SQL en nuestro entorno Hadoop y a utilizar Map-Reduce para iniciar todo tipo de trabajos con estos datos.

Lo siguiente es Hbase. Hbase es un componente clave de la pila Hadoop, ya que su diseño atiende a aplicaciones que requieren un acceso aleatorio muy rápido a un conjunto significativo de datos. Recordemos que HBase está basado en el BigTable de Google y puede gestionar tablas masivas de datos que combinan mil billones de filas y millones de columnas.

La próxima parada de la que voy a hablar es Pig. Es un lenguaje de scripting, es en realidad una plataforma de alto nivel para crear programas MapReduce usando Hadoop. Este lenguaje se llama Pig Latin, y destaca en que describe los problemas de análisis de datos como flujos de datos. Pig es completo en el sentido de que podemos hacer toda la manipulación requerida dentro de Apache Hadoop solamente usando Pig.

Además, para las funciones definidas por el usuario y los servicios de Pig, podemos incorporar código Pig en muchos lenguajes diferentes, como JRuby, JPython y Java. Y a la inversa, podemos ejecutar secuencias de comandos PIG en otros lenguajes. Así que el resultado es realmente que podemos utilizar PIG como un componente para construir aplicaciones mucho más grandes y complejas que pueden abordar algunos problemas reales de negocios.

Pig para ETL
Un buen ejemplo de aplicaciones PIG es el modelo de transacción ETL que describe cómo un proceso extrae los datos de una fuente, transformándolos de acuerdo con un conjunto de reglas que especificamos y luego los carga en un almacén de datos. PIG puede ingerir datos de archivos, flujos o de cualquier otra fuente usando las UDF (o lo que mencionamos anteriormente, funciones definidas por el usuario que podemos escribir nosotros mismos). Cuando tenemos todos los datos que se pueden ejecutar, seleccionamos, iteramos y hacemos todo tipo de transformaciones. Sobre esos datos, de nuevo las características de UDF pueden permitirnos pasar datos a algoritmos más complejos para transformaciones más complejas, y podemos coger todas estas transformaciones y almacenarlas de nuevo en el sistema de archivos.

Ahora voy a hablar un poco sobre Hive. El software de data warehouse Apache Hive facilita la consulta y la gestión de datos masivos que residen en nuestro almacenamiento distribuido de archivos. Proporciona realmente un mecanismo para proyectar la estructura por encima de todos estos datos y nos permite usar consultas SQL para acceder a los datos que hemos almacenado en este data warehouse. Este lenguaje de consulta se denomina Hive QL. Al mismo tiempo, este lenguaje también nos permite aparcar programas tradicionales Map-Reduce dentro de los mappers y reducers personalizados cuando sea inconveniente, complejo o muy ineficiente expresar la lógica que queremos expresar al procesar nuestros datos en lenguaje Hive.

Ahora voy a hablar de Oozie. Oozie es un sistema de planificación de flujos de trabajo que gestiona todos nuestros jobs en Apache Hadoop. Los trabajos del flujo de trabajo de Oozie son lo que llamamos DAGs o Directed Graphs (grafos acíclicos dirigidos). Los jobs del planificador de Oozie son jobs recurrentes del flujo de trabajo de Oozie que son accionados por la frecuencia o la disponibilidad de datos. Está integrado con el resto de la pila de Hadoop y soporta directamente diferentes jobs de Hadoop. Podemos icorporar programas Java MapReduce, o streaming MapReduce. Podemos ejecutar Pig, Hive y Sqoop y muchos otros jobs específicos en el propio sistema. Es muy escalable y fiable y un sistema bastante extensible.

Lo siguiente es el Zookeeper. Bueno, ya tenemos el gran zoológico de animales salvajes locos y tenemos que cuidarlos y organizarlos de alguna manera. Eso es lo que hace el Zookeeper, un parche Zookeeper proporciona servicios operativos para el clúster Hadoop. Proporciona un servicio de configuración distribuida y un servicio de sincronización para que podamos sincronizar todos estos jobs y un registro de nombres para todo el sistema distribuido. Las aplicaciones distribuidas utilizan el zookeeper para almacenar actualizaciones inmediatas de información importante de configuración sobre el propio clúster.


Y por último pero no menos importante, Flume es un servicio disponible distribuido y fiable para recopilar, agregar y mover eficientemente grandes cantidades de datos. Tiene una arquitectura simple y muy flexible basada en flujos de datos en streaming. Es bastante robusto y tolerante a fallos, y es muy parametrizable para optimizar los mecanismos de fiabilidad, tolerancia a fallos, recuperación y todos los demás mecanismos que mantienen el cluster seguro y confiable. Utiliza un modelo de datos simple extensible que nos permite aplicar todo tipo de aplicaciones analíticas en línea.

Hasta ahora he hablado un poco sobre los componentes de Hadoop Cloudera y acabo de cubrir la mayoría de ellos. Hay muchos más, aunque pienso que estos son los básicos que nos permitirán hacer la mayoría de los trabajos y las aplicaciones concretas que queramos realizar. Hay otras dos pequeñas piezas, pequeños componentes de Cloudera Hadoop que todavía me gustaría plantear, aunque tal vez no se consideran necesariamente que formen parte de los componentes principales. El primero es Impala.

Impala
Cloudera Impala fue diseñado específicamente en Cloudera, y es un motor de consulta que funciona sobre la parte superior de la pila de Apache Hadoop. Creo que el proyecto fue anunciado oficialmente a finales de 2012, y se convirtió en una distribución de código abierto disponible públicamente. Impala ofrece una tecnología de base de datos paralela escalable a Hadoop. Y permite a los usuarios enviar consultas de baja latencia a los datos que se almacenan en HDFS o en Hbase sin adquirir una tonelada de movimientos y manipulación de datos. Impala está integrado en Hadoop, y funciona dentro del mismo sistema, dentro de los mismos metadatos de formato,con todos los recursos de seguridad y confiabilidad y flujos de trabajo de administración.

Lleva esa tecnología escalable de base de datos paralela a la parte superior de Hadoop. De hecho, nos permite enviar consultas de tipo SQL a velocidades mucho más rápidas con mucho menos latencia.
Distribución Hadoop Cloudera
El componente adicional que todavía no he mencionado es Spark. Aunque Hadoop capta la mayor parte de la atención para el análisis de datos distribuidos, ahora hay una serie de alternativas que ofrecen algunas ventajas interesantes sobre la plataforma tradicional de Hadoop. Spark es una de ellas. Spark es una plataforma escalable de análisis de datos que incorpora primitivas para la computación en memoria y por lo tanto, permite ejercer algunas ventajas de rendimiento diferentes sobre la técnica de sistema de almacenamiento en clúster tradicional de Hadoop. Implementa y soporta algo llamado lenguaje Scala, y proporciona un entorno único para el procesamiento de datos. Spark es realmente excelente para tipos de análisis más complejos, y es ideal para soportar bibliotecas de aprendizaje automático (machine learning).

Es otro framework más de computación de código abierto que se desarrolló originalmente en los laboratorios de MP de la Universidad de California en Berkeley y más tarde fue donado a la fundación de software Apache, donde continúa estando también hoy. En contraste con el paradigma Map-Reduce basado en disco de dos etapas de Hadoop, Spark es una primitiva de etapa múltiple en memoria que proporciona un rendimiento hasta 100 veces más rápido en ciertas aplicaciones. Al permitir al usuario cargar datos en la memoria de los clústeres y consultarlos repetidamente, Spark es especialmente adecuado para estos tipos de aplicaciones de aprendizaje automático que suelen tener clasificación iterativa en tipos de procesamiento en memoria.

Spark requiere una gestión de clúster y un sistema de almacenamiento distribuido. Por lo tanto, para la gestión de clústeres, Spark admite clústeres autónomos Spark nativos, o podemos ejecutar Spark en la parte superior de un hadoop yarn, o mediante parches mesos. Para el almacenamiento distribuido, Spark puede interactuar con cualquier variedad de sistemas de almacenamiento, incluyendo el HDFS, Amazon S3 o alguna solución personalizada de BI en la que esté dispuesta a invertir nuestra organización.

Ahora que entendemos bien la pila entera y todas las aplicaciones que tenemos ubicadas en la parte superior de una pila típica Hadoop, en el próximo artículo voy a hacer un recorrido por la VM de inicio rápido de Cloudera para entender cómo se relacionan cada una de estas aplicaciones, lo que se ofrece dentro de la VM, y los tipos de jobs que podemos ejecutar.

0 comentarios:

Publicar un comentario

Gracias por participar en esta página.

 
Back to top!