El software Apache Hadoop es un framework de código abierto que permite usar modelos sencillos de programación para almacenar y procesar de forma distribuida grandes conjuntos de datos de distintos clústeres de ordenadores. Hadoop se ha diseñado para facilitar el escalado vertical de un solo ordenador a miles de ordenadores agrupados en clústeres, cada uno de ellos con funciones locales de computación y almacenamiento. Gracias a ese diseño, Hadoop puede almacenar y procesar conjuntos de datos de muchos gigabytes o incluso petabytes de manera eficiente.
Aprende a utilizar Dataproc para ejecutar clústeres de Apache Spark en Google Cloud de forma más sencilla, integrada y más rentable.
Hadoop tiene sus orígenes en los primeros años de la era de la World Wide Web. A medida que la Web crecía hasta alcanzar millones y luego miles de millones de páginas, la tarea de buscar y devolver los resultados de búsqueda se convirtió en uno de los desafíos más destacados. Empresas emergentes como Google, Yahoo y AltaVista empezaron a crear frameworks para automatizar los resultados de búsqueda. Los informáticos Doug Cutting y Mike Cafarella crearon un proyecto llamado Nutch a partir del primer trabajo de Google en MapReduce (más información sobre este tema más adelante) y en Google File System. Con el tiempo, Nutch se trasladó a la base de software libre Apache y se dividió en Nutch y Hadoop. Yahoo, donde Cutting comenzó a trabajar en el 2006, liberó el código de Hadoop en el 2008.
Aunque en ocasiones Hadoop se considera un acrónimo de plataforma orientada a objetos distribuidos de alta disponibilidad, en sus inicios se llamó así en honor al elefante de juguete del hijo de Cutting.
Hadoop es un framework de código abierto basado en Java que gestiona el almacenamiento y el procesamiento de grandes cantidades de datos para las aplicaciones. Hadoop utiliza el almacenamiento distribuido y el procesamiento en paralelo para gestionar las tareas de Big Data y analíticas, lo que permite dividir las cargas de trabajo en cargas de trabajo más pequeñas que puedan ejecutarse al mismo tiempo.
El framework principal de Hadoop consta de cuatro módulos que funcionan de manera conjunta para constituir el ecosistema de Hadoop:
Sistema de archivos distribuidos de Hadoop (HDFS): como componente principal del ecosistema de Hadoop, HDFS es un sistema de archivos distribuidos en el que cada uno de los nodos de Hadoop opera en los datos que se encuentran en su almacenamiento local. De este modo, se elimina la latencia de la red y se proporciona acceso de alto rendimiento a los datos de las aplicaciones. Además, los administradores no tienen que definir los esquemas de antemano.
Yet Another Resource Negotiator (YARN): esta plataforma gestiona los recursos de computación de los clústeres y los utiliza para programar las aplicaciones de los usuarios. Se encarga de programar y asignar los recursos de todo el sistema de Hadoop.
MapReduce: este modelo de programación permite tratar datos a gran escala. En el modelo de MapReduce, los subconjuntos de conjuntos de datos más grandes y las instrucciones para procesarlos se envían a varios nodos diferentes, donde un nodo procesa cada subconjunto en paralelo con otras tareas de procesamiento. Después de procesar los resultados, los subconjuntos individuales se combinan en un conjunto de datos más pequeño y manejable.
Hadoop Common: incluye las bibliotecas y las utilidades que emplean y comparten otros módulos de Hadoop.
Más allá de HDFS, YARN y MapReduce, el ecosistema de código abierto de Hadoop se amplía continuamente. Además, incluye infinidad de herramientas y aplicaciones para recoger, almacenar, procesar, analizar y gestionar Big Data, como Apache Pig, Apache Hive, Apache HBase, Apache Spark, Presto y Apache Zeppelin.
Hadoop permite distribuir conjuntos de datos en un clúster de hardware básico. El procesamiento se hace en paralelo en varios servidores a la vez.
Los clientes de software introducen datos en Hadoop. HDFS gestiona los metadatos y el sistema de archivos distribuidos. A continuación, MapReduce procesa y convierte los datos. Por último, YARN divide las tareas entre el clúster de computación.
El diseño de todos los módulos de Hadoop parte del supuesto de que, en algún momento, el hardware de las máquinas o los bastidores de máquinas falla, y de que el framework debe solucionarlo automáticamente en el software.
Escalabilidad
Hadoop es importante porque es una de las principales herramientas para almacenar y procesar rápidamente enormes cantidades de datos. Para ello, usa un modelo de computación distribuida que permite el procesamiento rápido de datos que se pueden escalar rápidamente añadiendo nodos de computación.
Bajo coste
Hadoop es un framework de código abierto que se puede ejecutar en hardware básico y cuenta con un amplio ecosistema de herramientas, por lo que es una opción de bajo coste para el almacenamiento y la gestión de Big Data.
Flexibilidad
Hadoop permite almacenar los datos de forma flexible, ya que no es necesario preprocesarlos antes de almacenarlos, lo que significa que una empresa puede almacenar tantos datos como quiera y utilizarlos más adelante.
resistencia,
Al ser un modelo de computación distribuida, Hadoop permite la tolerancia a fallos y la resiliencia del sistema, lo que significa que, si uno de los nodos de hardware falla, las tareas se redirigen a otros nodos. Los datos almacenados en un clúster de Hadoop se replican en otros nodos dentro del sistema para reforzarlo ante la posibilidad de que se produzcan fallos de hardware o de software.
Dado que es un sistema que requiere un uso intensivo de archivos, MapReduce puede ser una herramienta difícil de usar para tareas complejas como, por ejemplo, tareas analíticas interactivas. Las funciones de MapReduce también deben escribirse en Java y pueden requerir una fase de aprendizaje intensa. El ecosistema de MapReduce es bastante grande, con muchos componentes para distintas funciones que pueden dificultar la elección de las herramientas que se deben usar.
La protección y la sensibilidad de los datos pueden suponer un problema, ya que Hadoop gestiona estos conjuntos de datos de gran tamaño. Se ha creado un ecosistema de herramientas para la autenticación, el encriptado, la auditoría y el aprovisionamiento que ayuda a los desarrolladores a proteger los datos en Hadoop.
Hadoop no cuenta con muchas herramientas sólidas de gestión y gobierno de datos, ni de calidad y estandarización de datos.
Al igual que en muchas áreas de la programación, Hadoop ha reconocido que tiene una brecha de talento. Encontrar desarrolladores que combinen los requisitos de Java para programar MapReduce, sistemas operativos y hardware puede ser difícil. Además, MapReduce tiene una fase de aprendizaje intensa, lo que dificulta que los nuevos programadores se pongan al día con sus prácticas recomendadas y ecosistema.
La empresa de investigación IDC estimó que en el 2020 se crearon o replicaron 62,4 zettabytes de datos gracias al Internet de las cosas, las redes sociales, la informática perimetral y los datos creados en la nube. La empresa prevé que los datos crecieron entre el 2020 y el 2025 en un 23 % al año. Aunque no todos esos datos se guardan (se eliminan después de consumirse o se sobrescriben), las necesidades de datos en el mundo siguen creciendo.
Hadoop cuenta con un gran ecosistema de herramientas de software libre que pueden aumentar y ampliar las funciones del módulo principal. Estas son algunas de las principales herramientas de software que se utilizan con Hadoop:
Apache Hive: un almacén de datos que permite a los programadores trabajar con datos en HDFS mediante un lenguaje de consulta llamado HiveQL, que es similar a SQL
Apache HBase: base de datos distribuida y no relacional de código abierto que se suele emparejar con Hadoop
Apache Pig: una herramienta que se utiliza como capa de abstracción sobre MapReduce para analizar grandes conjuntos de datos y que habilita funciones como filtrar, ordenar, cargar y realizar uniones
Apache Impala: motor de consultas de SQL de código abierto con procesamiento masivo en paralelo que se suele utilizar con Hadoop
Apache Sqoop: aplicación de interfaz de línea de comandos para transferir de forma eficiente datos en bloque entre bases de datos relacionales y Hadoop
Apache ZooKeeper: un servidor de código abierto que permite una coordinación distribuida fiable en Hadoop. Un servicio para "mantener información de configuración, asignar nombres, proporcionar sincronización distribuida y proporcionar servicios de grupo"
Apache Oozie: un programador de flujos de trabajo para tareas de Hadoop
Estos son algunos de los usos más habituales de Apache Hadoop:
Analíticas y Big Data
Hadoop permite que empresas de toda clase hagan investigaciones o analíticas y traten los datos de producción, es decir, tareas que exigen procesar terabytes o petabytes de Big Data, a veces en paralelo, y almacenar conjuntos de datos diversos.
Almacenamiento y archivado de datos
Dado que Hadoop habilita el almacenamiento masivo en hardware básico, resulta útil como opción de almacenamiento de bajo coste para todo tipo de datos, como transacciones, flujos de clics o datos de sensores y máquinas.
Data lakes
Dado que Hadoop puede ayudar a almacenar datos sin necesidad de procesarlos previamente, se puede utilizar para complementar los data lakes, donde se almacenan grandes cantidades de datos sin depurar.
Analíticas de marketing
Los departamentos de marketing suelen utilizar Hadoop para almacenar y analizar los datos de gestión de relaciones con clientes (CRM).
Gestión de riesgos
Los bancos, las empresas de seguros y otras empresas de servicios financieros utilizan Hadoop para crear modelos de análisis y gestión de riesgos.
IA y aprendizaje automático
Los ecosistemas de Hadoop ayudan al procesamiento de datos y a las operaciones de entrenamiento de modelos para las aplicaciones de aprendizaje automático.
Empieza a crear en Google Cloud con 300 USD en crédito gratis y más de 20 productos Always Free.