Es una nueva forma para las empresas de almacenar y analizar datos.
Apache Hadoop es un framework multiplataforma de software que soporta aplicaciones distribuidas bajo una licencia libre. Se trata de una Multiplataforma implementada en Java que permite trabajar con miles de nodos y volúmenes de datos del orden de petabytes. Además su diseño permite pasar de pocos a miles de nodos de forma ágil. Hadoop es un sistema distribuido usando una arquitectura Master-Slave, usando para almacenar su Hadoop Distributed File System (HDFS) y algoritmos de MapReduce para hacer cálculos.
Actualmente las empresas recogen y generan más datos que nunca. Las bases de datos Relacionales y Datawarehouse destacan en las cargas de trabajo OLTP (On-Line Transactional Processing) y OLAP (On-Line Analytical Processing) de datos estructurados. Hadoop, sin embargo, fue diseñado para resolver un problema diferente: el análisis rápido y fiable tanto de los datos estructurados como de datos complejos. Como resultado, muchas empresas implementan Hadoop junto con su legado de los sistemas de TI, lo que les permite combinar un conjunto de datos antiguos y actuales de forma potente.
Técnicamente, Hadoop consta de dos servicios principales: almacenamiento de datos fiable utilizando el Sistema de Archivos Distribuidos de Hadoop (HDFS) y un procesamiento de datos en paralelo de alto rendimiento, que usa una técnica llamada MapReduce.
¿Por qué es bueno Hadoop?
En el entorno tecnológico que actualmente se mueven todas las organizaciones, donde los sistemas no sólo son capaces de generar e ingestar los datos rápidamente sobre formatos estructurados (SQL), también, cada vez más, se generan datos que no son estructurados (NoSQL).
Hadoop es capaz de almacenar toda clase de datos: estructurados, no estructurados, semiestructurados; archivos de registro, imágenes, video, audio, comunicación, etc.
Por otra parte Hadoop también destaca por tener una arquitectura con capacidad de asegurar una alta disponibilidad y recuperación de los datos que ingesta.
Arquitectura principal de Hadoop
MapReduce
MapReduce es un proceso batch, creado para el proceso distribuido de los datos. Permite de una forma simple, paralelizar trabajo sobre los grandes volúmenes de datos, como combinar web logs con los datos relacionales de una base de datos OLTP, de tal forma que se logre ver como los usuarios interactúan con el website.
El modelo de MapReduce simplifica el procesamiento en paralelo, abstrayéndonos de la complejidad que hay en los sistemas distribuidos. Básicamente las funciones Map transforman un conjunto de datos a un número de pares key/value. Cada uno de estos elementos se encontrarán ordenados por su clave, y la función reduce es usada para combinar los valores (con la misma clave) en un mismo resultado.
Un programa en MapReduce, se suele conocer como Job, la ejecución de un Job empieza cuando el cliente manda la configuración de Job al JobTracker, ésta configuración especifica las funciones Map, Combine (shuttle) y Reduce, además de la entrada y salida de los datos.
HDFS
HDFS es el sistema de almacenamiento, un sistema de archivos distribuidos. Fue creado a partir del Google File System (GFS). HDFS se encuentra optimizado para grandes flujos y trabajar con archivos grandes en sus lecturas y escrituras. Su diseño reduce la E/S en la red. La escalabilidad y disponibilidad son otras de sus claves, gracias a la replicación de los datos y tolerancia a los fallos. Los elementos importantes del cluster son:
• NameNode: Sólo hay uno en el clúster. Regula el acceso a los archivos por parte de los clientes. Mantiene en memoria la meta data del sistema de archivos y control de los bloques de fichero que tiene cada DataNode.
• DataNode: Son los responsables de leer y escribir las peticiones de los clientes. Los archivos están formados por bloques, estos se encuentran replicados en diferentes nodos.
Chukwa (http://incubator.apache.org/chukwa/)
Chukwa es un sistema de captura de datos y framework de análisis que trabaja con Hadoop para procesar y analizar grandes volúmenes de logs. Incluye herramientas para mostrar y monitorizar los datos capturados.
Apache Flume
Apache Flume es un sistema distribuído para capturar de forma eficiente, agregar y mover grandes cantidades de datos, log de diferentes servidores a un depósito central, simplificando el proceso de recolectar estos datos para almacenarlos en Hadoop y poder analizarlos. Flume y Chukwa son proyectos parecidos, la principal diferencia es que Chukwa está pensado para ser usado en Batch.
Hive
Hive es un sistema de Data Warehouse para Hadoop que facilita el uso de la agregación de los datos, ad-hoc queries, y el análisis de grandes datasets almacenados en Hadoop. Hive proporciona métodos de consulta de los datos usando un lenguaje parecido al SQL, llamado HiveQL. Además permite usar los tradicionales Map/Reduce cuando el rendimiento no es el correcto. Tiene interfaces JDBC/ODBC, por lo que empieza a funcionar su integración con herramientas de BI.
Apache HBase
HBase, se trata de la base de datos de Hadoop. HBase es el componente de Hadoop a usar, cuando se requiere escrituras/lecturas en tiempo real y acceso aleatorio para grandes conjuntos de datos. Es una base de datos orientada a la columna, eso quiere decir que no sigue el esquema relacional. No admite SQL.
Apache Mahout (
Apache Mahout, es un proyecto para crear aprendizaje automático y data mining usando Hadoop. Es decir, Mahout nos puede ayudar a descubrir patrones en grandes datasets. Tiene algoritmos de recomendación, clustering y clasificación.
Apache Sqoop
Apache Sqoop (“SQL-to-Hadoop”), es una herramienta diseñada para transferir de forma eficiente bulk data entre Hadoop y sistemas de almacenamiento con datos estructurados, como bases de datos relacionales. Algunas de sus características son:
• Permite importar tablas individuales o bases de datos enteras a HDFS.
• Genera clases Java que permiten interactuar con los datos importados.
• Además, permite importar de las bases de datos SQL a Hive.
Apache ZooKeeper
Zookeeper es un proyecto de Apache que proporciona una infraestructura centralizada y de servicios que permiten la sincronización del cluster. ZooKeeper mantiene objetos comunes que se necesiten en grandes entornos de cluster. Algunos ejemplos de estos objetos son información de la configuración jerarquía de nombres.
Apache Lucene
Lucene, se trata de una librería escrita en Java, para buscar textos. Lucene permite indexar cualquier texto que deseemos, permitiéndonos después encontrarlos basados en cualquier criterio de búsqueda. Aunque Lucene sólo funciona en texto plano, hay plugins que permite la indexación y búsqueda de contenido en documentos Word, Pdf, XML o páginas HTML.
Apache Pig
Apache Pig, inicialmente desarrollado por Yahoo, permite a los usuarios de Hadoop centrarse más en el análisis de los datos y menos en la creación de programas MapReduce. Para simplificar el análisis proporciona un lenguaje procedural de alto nivel. Su nombre viene de la siguiente analogía al igual que los cerdos comen de todo, el lenguaje de programación Pig está pensado para poder trabajar en cualquier tipo de datos. Pig consta de dos componentes:
• El lenguaje en si, llamado PigLatin.
• El entorno de ejecución, donde los programas PigLatin se ejecutan.
Jaql
Jaql es un lenguaje de consulta funcional y declarativo que facilita la explotación de información organizada en formato JSON (JavaScript Object Notation), e incluso en archivos semi-estructurados de texto plano. Diseñado inicialmente por IBM. Jaql permite hacer select, join, group y filtrar datos almacenados en HDFS. El objetivo de Jaql es que el desarrollador de aplicaciones de Hadoop pueda concentrarse en qué quiere obtener, y no en cómo lo tenga que obtener. Jaql analiza la lógica y la distribuye en Map y Reduce según sea necesario.
Apache Avro
Avro, es un sistema de serialización de datos. En los proyectos en Hadoop, suele haber grandes cuantidades de datos, la serialización se usa para procesarlos y almacenar estos datos, de forma que el rendimiento en tiempo sea efectivo. Esta serialización puede ser texto en plano, JSON, en formato binario. Con Avro podemos almacenar y leer los datos fácilmente desde diferentes lenguajes de programación. Está optimizado para minimizar el espacio en disco necesario para nuestros datos.
Apache UIMA
UIMA (Unstructured Information Management Applications) es un framework para analizar grandes volúmenes de datos no estructurados, como texto, video, datos de audio, etc… y obtener conocimiento que sea relevante para el usuario final. Por ejemplo a partir de un fichero plano, poder descubrir que entidades son personas, lugares, organizaciones, etc…
Referencias:
http://www.ticout.com/blog/2013/04/02/introduccion-a-hadoop-y-su-ecosistema/
http://bigdata-hadoop.pragsis.com/sites/default/files/documentacion/Que%CC%81%20es%20Hadoop.pdf
http://momentotic.wordpress.com/2013/05/16/que-es-hadoop/