El software Apache Hadoop es un framework de código abierto que admite el almacenamiento y el procesamiento distribuidos de conjuntos de datos grandes en clústeres de computadoras que usan modelos de programación simples. Hadoop está diseñado para escalar verticalmente desde una computadora hasta miles de computadoras agrupadas en clústeres, y cada máquina ofrece procesamiento y almacenamiento local. De esta manera, Hadoop puede almacenar y procesar de manera eficiente conjuntos de datos grandes que varían en tamaño desde gigabytes hasta petabytes de datos.
Obtén más información para usar Dataproc a fin de ejecutar clústeres de Apache Hadoop en Google Cloud de una manera integrada, simple y rentable.
Hadoop tiene sus orígenes en los inicios de la World Wide Web. A medida que la Web creció hasta llegar a millones y luego miles de millones de páginas, la tarea de buscar y devolver resultados de la búsqueda se convirtió en uno de los desafíos más notorios. Startups como Google, Yahoo y AltaVista comenzaron a crear frameworks para automatizar los resultados de la búsqueda. Los expertos informáticos Doug Cutting y Mike Cafarella crearon un proyecto llamado Nutch en función del primer trabajo de Google sobre MapReduce (más adelante) y Google File System. Con el tiempo, Nutch se trasladó a la base de software de código abierto Apache y se dividió entre Nutch y Hadoop. Yahoo, donde Cutting comenzó a trabajar en 2006, Hadoop de código abierto en 2008.
Si bien Hadoop suele llamarse como el acrónimo de “High Availability Distributed Object Oriented Platform”, originalmente se llama así por el elefante de juguete del hijo de Cutting.
Hadoop es un framework de código abierto basado en Java que administra el almacenamiento y el procesamiento de grandes cantidades de datos para las aplicaciones. Hadoop usa almacenamiento distribuido y procesamiento paralelo para manejar trabajos de análisis y macrodatos, ya que divide las cargas de trabajo en más pequeñas que se pueden ejecutar al mismo tiempo.
El framework principal de Hadoop consta de cuatro módulos que funcionan en conjunto para formar el ecosistema de Hadoop:
Sistema de archivos distribuidos de Hadoop (HDFS): Como componente principal del ecosistema de Hadoop, HDFS es un sistema de archivos distribuido en el que los nodos individuales de Hadoop operan en datos que residen en su almacenamiento local. Esto quita la latencia de red, lo que proporciona acceso de alta capacidad de procesamiento a los datos de la aplicación. Además, los administradores no necesitan definir esquemas por adelantado.
Yet another resource negotiator (YARN): YARN es otra plataforma de administración de recursos que se encarga de administrar los recursos de procesamiento en clústeres y usarlos para programar las aplicaciones de los usuarios. Programa y asigna recursos en el sistema Hadoop.
MapReducee: Es un modelo de programación para el procesamiento de datos a gran escala. En el modelo MapReduce, los subconjuntos de conjuntos de datos más grandes y las instrucciones para procesar los subconjuntos se despachan a múltiples nodos diferentes, donde un nodo procesa cada subconjunto en paralelo con otros trabajos 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 usan y comparten otros módulos de Hadoop.
El ecosistema de código abierto de Hadoop continúa creciendo más allá de HDFS, YARN y MapReduce e incluye muchas herramientas y aplicaciones para ayudarte a recolectar, almacenar, procesar, analizar y administrar macrodatos. Entre estas se incluyen Apache Pig, Apache Hive, Apache HBase, Apache Spark, Presto y Apache Zeppelin.
Hadoop permite la distribución de conjuntos de datos en un clúster de hardware básico. El procesamiento se realiza en paralelo en varios servidores de forma simultánea.
Los clientes de software ingresan datos en Hadoop. HDFS maneja los metadatos y el sistema de archivos distribuido. Luego, MapReduce procesa y convierte los datos. Por último, YARN divide los trabajos entre los clústeres de procesamiento.
Todos los módulos de Hadoop están diseñados con la suposición fundamental de que las fallas de hardware de máquinas individuales o en bastidores son comunes y que el framework debe administrarlas de forma automática en el software.
Escalabilidad
Hadoop es una herramienta fundamental para almacenar y procesar grandes cantidades de datos con rapidez. Para ello, usa un modelo de computación distribuido que permite un procesamiento rápido de datos que pueden escalarse con rapidez mediante la adición de nodos de procesamiento.
Bajo costo
Hadoop es un framework de código abierto que puede ejecutarse en hardware básico y tiene un gran ecosistema de herramientas, por lo que es una opción de bajo costo para el almacenamiento y la administración de macrodatos.
Flexibilidad
Hadoop permite la flexibilidad en el almacenamiento de datos, ya que los datos no requieren procesamiento previo antes de almacenarlos, lo que significa que una organización puede almacenar tantos datos como desee y luego usarlos.
Resiliencia
Como modelo de computación distribuido, Hadoop permite la tolerancia a errores y la resiliencia del sistema, lo que significa que si uno de los nodos de hardware falla, los trabajos se redireccionan a otros nodos. Los datos almacenados en un clúster Hadoop se replican en otros nodos dentro del sistema para fortificarlos contra la posibilidad de fallas de hardware o software.
Dado que es un sistema que requiere muchos archivos, MapReduce puede ser una herramienta difícil de usar para trabajos complejos, como las tareas analíticas interactivas. Las funciones de MapReduce también deben estar escritas en Java y pueden requerir una curva de aprendizaje empinada. El ecosistema de MapReduce es bastante grande, con muchos componentes para diferentes funciones que pueden dificultar la determinación de qué herramientas usar.
La sensibilidad y la protección de los datos pueden ser problemas, ya que Hadoop maneja conjuntos de datos tan grandes. Surgió un ecosistema de herramientas de autenticación, encriptación, auditoría y aprovisionamiento para ayudar a los desarrolladores a proteger los datos en Hadoop.
Hadoop no tiene muchas herramientas sólidas para la administración de datos ni para la estandarización y calidad de los datos.
Como muchas áreas de programación, Hadoop tiene una falta de talento reconocida. Puede ser difícil encontrar desarrolladores con las habilidades combinadas necesarias en Java para programar MapReduce, sistemas operativos y hardware. Además, MapReduce tiene una curva de aprendizaje muy pronunciada, lo que dificulta lograr que los programadores nuevos se pongan al día con las prácticas recomendadas y el ecosistema.
La firma de investigación IDC estimó que se crearon o replicaron 62.4 zettabytes de datos en 2020, impulsados por la Internet de las cosas, las redes sociales, el procesamiento perimetral y los datos creados en la nube. La empresa predijo que se esperaba un crecimiento de los datos del 23% por año de 2020 a 2025. Aunque no se guardan todos los datos (se borran después del consumo o se reemplazan), las necesidades de datos del mundo siguen creciendo.
Hadoop tiene un gran ecosistema de herramientas de código abierto que pueden aumentar y extender las capacidades del módulo principal. Algunas de las principales herramientas de software que se usan con Hadoop incluyen las siguientes:
Apache Hive: Es 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: Es una base de datos distribuida no relacional de código abierto que a menudo se vincula con Hadoop.
Apache Pig: Es una herramienta que se usa como capa de abstracción sobre MapReduce para analizar grandes conjuntos de datos y habilita funciones como filtrar, ordenar, cargar y unir
Apache Impala: Motor de consultas en SQL de código abierto y de procesamiento paralelo masivo, que se suele usar con Hadoop
Apache Sqoop: Es una aplicación de interfaz de línea de comandos para transferir con eficiencia datos masivos entre bases de datos relacionales y Hadoop.
Apache ZooKeeper: servidor de código abierto que permite una coordinación distribuida confiable en Hadoop. Un servicio para “mantener información de configuración, asignar nombres, proporcionar sincronización distribuida y proporcionar servicios de grupo”
Apache Oozie: Es un programador de flujos de trabajo para trabajos de Hadoop.
Estos son algunos casos de uso comunes de Apache Hadoop:
Estadísticas y macrodatos
Una gran variedad de empresas y organizaciones usan Hadoop para investigaciones, procesamiento de datos de producción y estadísticas que requieren procesar terabytes o petabytes de macrodatos, almacenar diversos conjuntos de datos y procesar datos en paralelo.
Almacenamiento y archivo de datos
Debido a que Hadoop habilita el almacenamiento masivo en hardware básico, es útil como una opción de almacenamiento de bajo costo 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 el procesamiento previo, se puede usar como complemento de los data lakes, en los que se almacenan grandes cantidades de datos sin procesar.
Estadísticas de marketing
Los departamentos de marketing suelen usar Hadoop para almacenar y analizar datos de administración de relaciones con clientes (CRM).
Administración de riesgos
Los bancos, las empresas de seguros y otras empresas de servicios financieros usan Hadoop para crear modelos de análisis y administración de riesgos.
IA y aprendizaje automático
Los ecosistemas de Hadoop ayudan con el procesamiento de datos y las operaciones de entrenamiento de modelos para aplicaciones de aprendizaje automático.
Comienza a desarrollar en Google Cloud con el crédito gratis de $300 y los más de 20 productos del nivel Siempre gratuito.