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.
0 comentarios:
Publicar un comentario
Gracias por participar en esta página.