Hadoop es un marco de trabajo de código abierto basado en Java que se utiliza para almacenar y procesar big data. Los datos se almacenan en servidores de bajo coste que funcionan como clústeres. Su sistema de archivos distribuido permite el procesamiento concurrente y la tolerancia a fallos. Desarrollado por Doug Cutting y Michael J. Cafarella, Hadoop utiliza el modelo de programación MapReduce para un almacenamiento y recuperación más rápidos de los datos de sus nodos. El marco de trabajo está gestionado por la Apache Software Foundation y cuenta con la licencia Apache 2.0.
Desde hace años, mientras la potencia de procesamiento de los servidores de aplicaciones se ha multiplicado, las bases de datos se han quedado atrás debido a su limitada capacidad y velocidad. Sin embargo, hoy en día, dado que muchas aplicaciones están generando big data para ser procesado, Hadoop juega un papel importante en proporcionar un cambio de imagen muy necesario para el mundo de las bases de datos.
Descargue Hadoop y Data Lakes ahora.
Lea ahora
Desde el punto de vista empresarial, también hay beneficios directos e indirectos. Al utilizar la tecnología de código abierto en servidores baratos que están en su mayoría en la nube (y a veces en las instalaciones), las organizaciones logran un importante ahorro de costes.
Además, la capacidad de recopilar datos masivos, y los conocimientos derivados del análisis de estos datos, se traducen en mejores decisiones empresariales en el mundo real, como la capacidad de centrarse en el segmento de consumidores adecuado, eliminar o corregir procesos erróneos, optimizar las operaciones de la planta, ofrecer resultados de búsqueda relevantes, realizar análisis predictivos, etc.
- Cómo mejora Hadoop las bases de datos tradicionales
- Capacidad: Hadoop almacena grandes volúmenes de datos.
- Velocidad: Hadoop almacena y recupera los datos más rápidamente.
- 5 beneficios de Hadoop para Big Data
- El ecosistema Hadoop: Componentes principales
- HDFS: Mantenimiento del sistema de archivos distribuido
- YARN: Yet Another Resource Negotiator
- MapReduce
- El ecosistema Hadoop: Componentes complementarios
- Hive: Almacenamiento de datos
- Pig: Reduce MapReduce Functions
- Hive Versus Pig
- Flume: Big Data Ingestion
- Sqoop: Ingestión de datos para bases de datos relacionales
- Zookeeper: Coordinación de Aplicaciones Distribuidas
- Kafka: Transferencias de datos más rápidas
- HBase: Base de datos no relacional
- Desafíos de Hadoop
- Curva de aprendizaje pronunciada
- Diferentes conjuntos de datos requieren diferentes enfoques
- Limitaciones de MapReduce
- Seguridad de los datos
- Hadoop vs Apache Spark
- Un futuro con muchas posibilidades
Cómo mejora Hadoop las bases de datos tradicionales
Hadoop resuelve dos retos clave de las bases de datos tradicionales:
Capacidad: Hadoop almacena grandes volúmenes de datos.
Al utilizar un sistema de archivos distribuido llamado HDFS (Hadoop Distributed File System), los datos se dividen en trozos y se guardan en clusters de servidores básicos. Como estos servidores básicos están construidos con configuraciones de hardware sencillas, son económicos y fácilmente escalables a medida que los datos crecen.
Velocidad: Hadoop almacena y recupera los datos más rápidamente.
Hadoop utiliza el modelo de programación funcional MapReduce para realizar un procesamiento paralelo a través de conjuntos de datos. Así, cuando se envía una consulta a la base de datos, en lugar de manejar los datos de forma secuencial, las tareas se dividen y se ejecutan de forma concurrente en los servidores distribuidos. Finalmente, la salida de todas las tareas se coteja y se envía de vuelta a la aplicación, mejorando drásticamente la velocidad de procesamiento.
5 beneficios de Hadoop para Big Data
Para el big data y la analítica, Hadoop es un salvavidas. Los datos recogidos sobre las personas, los procesos, los objetos, las herramientas, etc. sólo son útiles cuando surgen patrones significativos que, a su vez, dan lugar a mejores decisiones. Hadoop ayuda a superar el reto de la inmensidad de los big data:
- Resiliencia – Los datos almacenados en cualquier nodo también se replican en otros nodos del clúster. Esto asegura la tolerancia a fallos. Si un nodo se cae, siempre hay una copia de seguridad de los datos disponible en el clúster.
- Escalabilidad – A diferencia de los sistemas tradicionales que tienen una limitación en el almacenamiento de datos, Hadoop es escalable porque opera en un entorno distribuido. A medida que surge la necesidad, la configuración puede ampliarse fácilmente para incluir más servidores que puedan almacenar hasta varios petabytes de datos.
- Bajo coste – Como Hadoop es un marco de trabajo de código abierto, sin necesidad de adquirir ninguna licencia, los costes son significativamente menores en comparación con los sistemas de bases de datos relacionales. El uso de hardware básico de bajo coste también juega a su favor para mantener la solución económica.
- Velocidad – El sistema de archivos distribuido de Hadoop, el procesamiento concurrente y el modelo MapReduce permiten ejecutar consultas complejas en cuestión de segundos.
- Diversidad de datos – HDFS tiene la capacidad de almacenar diferentes formatos de datos, como los no estructurados (por ejemplo, vídeos), los semiestructurados (por ejemplo, archivos XML) y los estructurados. Al almacenar los datos, no es necesario validarlos con un esquema predefinido. Más bien, los datos pueden volcarse en cualquier formato. Más tarde, cuando se recuperan, los datos se analizan y se ajustan a cualquier esquema según sea necesario. Esto proporciona la flexibilidad necesaria para obtener diferentes conocimientos utilizando los mismos datos.
Lea ahora
El ecosistema Hadoop: Componentes principales
Hadoop no es sólo una aplicación, sino que es una plataforma con varios componentes integrales que permiten el almacenamiento y procesamiento de datos distribuidos. Estos componentes en conjunto forman el ecosistema Hadoop.
Algunos de ellos son componentes centrales, que forman la base del marco de trabajo, mientras que otros son componentes complementarios que aportan funcionalidades añadidas al mundo Hadoop.
Los componentes centrales de Hadoop son:
HDFS: Mantenimiento del sistema de archivos distribuido
HDFS es el pilar de Hadoop que mantiene el sistema de archivos distribuido. Permite almacenar y replicar datos en múltiples servidores.
HDFS tiene un NameNode y un DataNode. Los DataNodes son los servidores básicos donde se almacenan realmente los datos. El NameNode, por su parte, contiene metadatos con información sobre los datos almacenados en los diferentes nodos. La aplicación sólo interactúa con el NameNode, que se comunica con los nodos de datos según sea necesario.
YARN: Yet Another Resource Negotiator
YARN son las siglas de Yet Another Resource Negotiator. Gestiona y programa los recursos, y decide lo que debe ocurrir en cada nodo de datos. El nodo maestro central que gestiona todas las solicitudes de procesamiento se llama Gestor de Recursos. El Gestor de Recursos interactúa con los Gestores de Nodos; cada nodo de datos esclavo tiene su propio Gestor de Nodos para ejecutar tareas.
MapReduce
MapReduce es un modelo de programación que fue utilizado por primera vez por Google para indexar sus operaciones de búsqueda. Es la lógica utilizada para dividir los datos en conjuntos más pequeños. Funciona sobre la base de dos funciones -Map() y Reduce() – que analizan los datos de una manera rápida y eficiente.
En primer lugar, la función Map agrupa, filtra y ordena múltiples conjuntos de datos en paralelo para producir tuplas (pares clave, valor). A continuación, la función Reduce agrega los datos de estas tuplas para producir la salida deseada.
El ecosistema Hadoop: Componentes complementarios
Los siguientes son algunos componentes complementarios que se utilizan ampliamente en el ecosistema Hadoop.
Hive: Almacenamiento de datos
Hive es un sistema de almacenamiento de datos que ayuda a consultar grandes conjuntos de datos en el HDFS. Antes de Hive, los desarrolladores se enfrentaban al reto de crear complejos trabajos MapReduce para consultar los datos de Hadoop. Hive utiliza HQL (Hive Query Language), que se asemeja a la sintaxis de SQL. Dado que la mayoría de los desarrolladores vienen de un fondo SQL, Hive es más fácil de conseguir a bordo.
La ventaja de Hive es que un controlador JDBC/ODBC actúa como una interfaz entre la aplicación y el HDFS. Expone el sistema de archivos de Hadoop como tablas, convierte HQL en trabajos MapReduce y viceversa. Así, mientras los desarrolladores y administradores de bases de datos obtienen el beneficio de procesar por lotes grandes conjuntos de datos, pueden utilizar consultas simples y familiares para lograrlo. Originalmente desarrollado por el equipo de Facebook, Hive es ahora una tecnología de código abierto.
Pig: Reduce MapReduce Functions
Pig, inicialmente desarrollado por Yahoo!, es similar a Hive en el sentido de que elimina la necesidad de crear funciones MapReduce para consultar el HDFS. Al igual que HQL, el lenguaje utilizado – aquí, llamado «Pig Latin» – es más cercano a SQL. «Pig Latin» es una capa de lenguaje de flujo de datos de alto nivel sobre MapReduce.
Pig también tiene un entorno de ejecución que interactúa con HDFS. También se pueden incrustar scripts en lenguajes como Java o Python dentro de Pig.
Hive Versus Pig
Aunque Pig y Hive tienen funciones similares, uno puede ser más efectivo que el otro en diferentes escenarios.
Pig es útil en la etapa de preparación de datos, ya que puede realizar uniones y consultas complejas fácilmente. También funciona bien con diferentes formatos de datos, incluyendo los semiestructurados y los no estructurados. Pig Latin está más cerca de SQL, pero también varía de SQL lo suficiente como para tener una curva de aprendizaje.
Hive, sin embargo, funciona bien con datos estructurados y, por lo tanto, es más eficaz durante el almacenamiento de datos. Se utiliza en el lado del servidor del clúster.
Los investigadores y programadores tienden a utilizar Pig en el lado del cliente de un clúster, mientras que los usuarios de inteligencia de negocios, como los analistas de datos, encuentran Hive como el ajuste adecuado.
Flume: Big Data Ingestion
Flume es una herramienta de ingestión de big data que actúa como servicio de mensajería entre múltiples fuentes de datos y el HDFS. Recoge, agrega y envía enormes cantidades de datos en flujo (por ejemplo, archivos de registro, eventos) generados por aplicaciones como sitios de medios sociales, aplicaciones de IoT y portales de comercio electrónico al HDFS.
Flume es rico en características, es:
- Tiene una arquitectura distribuida.
- Asegura una transferencia de datos fiable.
- Es tolerante a fallos.
- Tiene la flexibilidad de recoger datos por lotes o en tiempo real.
- Puede escalarse horizontalmente para manejar más tráfico, según sea necesario.
- Mantener la información de la configuración (estado compartido de los datos de configuración)
- Servicio de denominación (asignación de nombre a cada servidor)
- Servicio de sincronización (gestiona los bloqueos, las condiciones de carrera y la inconsistencia de los datos)
- Elegir al líder (elige a un líder entre los servidores a través del consenso)
Las fuentes de datos se comunican con los agentes de Flume – cada agente tiene una fuente, un canal y un sumidero. La fuente recoge los datos del emisor, el canal almacena temporalmente los datos y, finalmente, el sumidero transfiere los datos al destino, que es un servidor Hadoop.
Sqoop: Ingestión de datos para bases de datos relacionales
Sqoop («SQL», para Hadoop) es otra herramienta de ingestión de datos como Flume. Mientras que Flume trabaja con datos no estructurados o semiestructurados, Sqoop se utiliza para exportar datos desde e importar datos a bases de datos relacionales. Como la mayoría de los datos empresariales se almacenan en bases de datos relacionales, Sqoop se utiliza para importar esos datos a Hadoop para que los analistas los examinen.
Los administradores y desarrolladores de bases de datos pueden utilizar una sencilla interfaz de línea de comandos para exportar e importar datos. Sqoop convierte estos comandos en formato MapReduce y los envía al HDFS utilizando YARN. Sqoop también es tolerante a fallos y realiza operaciones concurrentes como Flume.
Zookeeper: Coordinación de Aplicaciones Distribuidas
Zookeeper es un servicio que coordina las aplicaciones distribuidas. En el framework Hadoop, actúa como una herramienta de administración con un registro centralizado que tiene información sobre el cluster de servidores distribuidos que gestiona. Algunas de sus funciones clave son:
El clúster de servidores en el que se ejecuta el servicio Zookeeper se llama «ensemble». El ensemble elige un líder entre el grupo, y el resto se comporta como seguidores. Todas las operaciones de escritura de los clientes deben pasar por el líder, mientras que las operaciones de lectura pueden ir directamente a cualquier servidor.
Zookeeper proporciona una alta fiabilidad y resistencia a través de la sincronización a prueba de fallos, la atomicidad y la serialización de los mensajes.
Kafka: Transferencias de datos más rápidas
Kafka es un sistema de mensajería distribuido de publicación-suscripción que se utiliza a menudo con Hadoop para transferencias de datos más rápidas. Un clúster de Kafka consiste en un grupo de servidores que actúan como intermediarios entre los productores y los consumidores.
En el contexto de big data, un ejemplo de productor podría ser un sensor que recoge datos de temperatura para retransmitirlos al servidor. Los consumidores son los servidores Hadoop. Los productores publican mensajes en un tema y los consumidores extraen mensajes escuchando el tema.
Un único tema puede dividirse además en particiones. Todos los mensajes con la misma clave llegan a una partición específica. Un consumidor puede escuchar una o más particiones.
Al agrupar los mensajes bajo una misma clave y hacer que un consumidor atienda a particiones específicas, muchos consumidores pueden escuchar en el mismo tema al mismo tiempo. Así, un tema se paraleliza, aumentando el rendimiento del sistema. Kafka es ampliamente adoptado por su velocidad, escalabilidad y robusta replicación.
HBase: Base de datos no relacional
HBase es una base de datos no relacional orientada a columnas que se asienta sobre HDFS. Uno de los retos de HDFS es que sólo puede hacer procesamiento por lotes. Por lo tanto, para las consultas interactivas simples, los datos todavía tienen que ser procesados en lotes, lo que lleva a una alta latencia.
HBase resuelve este desafío al permitir consultas para filas individuales a través de tablas enormes con baja latencia. Para ello, utiliza internamente tablas hash. Está modelado según las líneas de Google BigTable que ayuda a acceder al Sistema de Archivos de Google (GFS).
HBase es escalable, tiene soporte de fallos cuando un nodo se cae, y es bueno con datos no estructurados así como semi-estructurados. Por lo tanto, es ideal para consultar grandes almacenes de datos con fines analíticos.
Descargue el informe O’Reilly: Moviendo Hadoop a la Nube ahora.
Lea ahora
Desafíos de Hadoop
Aunque Hadoop ha sido ampliamente visto como un habilitador clave de big data, todavía hay algunos desafíos a considerar. Estos retos se derivan de la naturaleza de su complejo ecosistema y de la necesidad de conocimientos técnicos avanzados para realizar las funciones de Hadoop. Sin embargo, con la plataforma y las herramientas de integración adecuadas, la complejidad se reduce significativamente y, por lo tanto, también facilita el trabajo con él.
Curva de aprendizaje pronunciada
Para consultar el sistema de archivos de Hadoop, los programadores tienen que escribir funciones MapReduce en Java. Esto no es sencillo, e implica una curva de aprendizaje pronunciada. Además, hay demasiados componentes que conforman el ecosistema, y lleva tiempo familiarizarse con ellos.
Diferentes conjuntos de datos requieren diferentes enfoques
No hay una solución de «talla única» en Hadoop. La mayoría de los componentes complementarios comentados anteriormente se han construido en respuesta a una carencia que era necesario abordar.
Por ejemplo, Hive y Pig proporcionan una forma más sencilla de consultar los conjuntos de datos. Además, las herramientas de ingestión de datos, como Flume y Sqoop, ayudan a recopilar datos de múltiples fuentes. Hay otros numerosos componentes también y se necesita experiencia para hacer la elección correcta.
Limitaciones de MapReduce
MapReduce es un excelente modelo de programación para procesar por lotes conjuntos de big data. Sin embargo, tiene sus limitaciones.
Su enfoque de uso intensivo de archivos, con múltiples lecturas y escrituras, no es muy adecuado para el análisis de datos interactivos en tiempo real o para tareas iterativas. Para este tipo de operaciones, MapReduce no es lo suficientemente eficiente y conduce a altas latencias. (Hay soluciones a este problema. Apache es una alternativa que está llenando el vacío de MapReduce.)
Seguridad de los datos
A medida que los big data se trasladan a la nube, los datos sensibles se vuelcan en los servidores Hadoop, creando la necesidad de garantizar la seguridad de los datos. El vasto ecosistema tiene tantas herramientas que es importante garantizar que cada una de ellas tenga los derechos de acceso correctos a los datos. Es necesario que haya una autenticación adecuada, un aprovisionamiento, un cifrado de datos y una auditoría frecuente. Hadoop tiene la capacidad de abordar este reto, pero es cuestión de tener la experiencia y ser meticuloso en la ejecución.
Aunque muchos gigantes de la tecnología han estado utilizando los componentes de Hadoop discutidos aquí, todavía es relativamente nuevo en la industria. La mayoría de los retos se derivan de este nacimiento, pero una plataforma robusta de integración de big data puede resolver o aliviar todos ellos.
Hadoop vs Apache Spark
El modelo MapReduce, a pesar de sus muchas ventajas, no es eficiente para las consultas interactivas y el procesamiento de datos en tiempo real, ya que depende de las escrituras en disco entre cada etapa de procesamiento.
Spark es un motor de procesamiento de datos que resuelve este reto utilizando el almacenamiento de datos en memoria. Aunque comenzó como un subproyecto de Hadoop, tiene su propia tecnología de clústeres.
A menudo, Spark se utiliza sobre HDFS para aprovechar sólo el aspecto de almacenamiento de Hadoop. Para el algoritmo de procesamiento, utiliza sus propias bibliotecas que soportan consultas SQL, streaming, aprendizaje automático y gráficos.
Los científicos de datos utilizan Spark ampliamente por su velocidad de vértigo y sus elegantes APIs ricas en funciones que facilitan el trabajo con grandes conjuntos de datos.
Si bien Spark puede parecer tener una ventaja sobre Hadoop, ambos pueden trabajar en conjunto. Dependiendo de los requisitos y del tipo de conjuntos de datos, Hadoop y Spark se complementan. Spark no tiene un sistema de archivos propio, por lo que tiene que depender de HDFS, u otras soluciones de este tipo, para su almacenamiento.
La verdadera comparación es en realidad entre la lógica de procesamiento de Spark y el modelo MapReduce. Cuando la RAM es una restricción, y para trabajos nocturnos, MapReduce es un buen ajuste. Sin embargo, para transmitir datos, acceder a bibliotecas de aprendizaje automático y para operaciones rápidas en tiempo real, Spark es la opción ideal.
Un futuro con muchas posibilidades
En sólo una década, Hadoop se ha hecho notar a lo grande en la industria de la informática. Esto se debe a que finalmente ha hecho real la posibilidad de la analítica de datos. Desde el análisis de las visitas al sitio web hasta la detección de fraudes o las aplicaciones bancarias, sus aplicaciones son diversas.
Con Talend Open Studio for Big Data es fácil integrar su configuración de Hadoop en cualquier arquitectura de datos. Talend proporciona más conectores de datos incorporados que cualquier otra solución de gestión de datos, lo que le permite construir flujos de datos sin fisuras entre Hadoop y cualquier formato de archivo importante (CSV, XML, Excel, etc.), sistema de base de datos (Oracle, SQL Server, MySQL, etc.), aplicación empresarial empaquetada (SAP, SugarCRM, etc.), e incluso servicios de datos en la nube como Salesforce y Force.com.