Apache Hadoop | ||
---|---|---|
Información general | ||
Tipo de programa | Sistema de archivos distribuido | |
Autor |
| |
Desarrollador | Apache Software Foundation | |
Lanzamiento inicial | 1 de abril de 2006 | |
Licencia | Apache License 2.0 | |
Estado actual | Activo | |
Idiomas | inglés | |
Información técnica | ||
Programado en | Java | |
Plataformas admitidas | Java | |
Versiones | ||
Última versión estable | 3.4.0 ( 17 de marzo de 2024 (9 meses y 28 días)[1]) | |
Enlaces | ||
Apache Hadoop es un entorno de trabajo para software, bajo licencia libre, para programar aplicaciones distribuidas que manejen grandes volúmenes de datos (big data).[2] Permite a las aplicaciones trabajar con miles de nodos en red y petabytes de datos. Hadoop se inspiró en los documentos de Google sobre MapReduce y Google File System (GFS).
Apache Hadoop es un entorno de trabajo de software de código abierto que permite el procesamiento y análisis distribuido de grandes volúmenes de datos. Hadoop se ha convertido en un proyecto colaborativo dentro de la comunidad de desarrollo de Apache, con Yahoo! destacando como uno de los mayores contribuyentes y usuarios de esta tecnología.
A medida que la World Wide Web creció a finales de los 1990 y principios de los 2000, se crearon buscadores (o motores de búsqueda) e índices para ayudar a localizar información relevante dentro de contenido basado en texto. En sus primeros años, los resultados de las búsquedas eran entregados por humanos. Pero a medida que la Web creció de docenas a millones de páginas, se requirió de la automatización. Se crearon los rastreadores Web, muchos como proyectos dirigidos por universidades, y entonces se iniciaron las primeras compañías de buscadores (Yahoo, AltaVista, etc.).
Uno de estos proyectos fue un buscador Web de código abierto llamado Nutch – idea original de Doug Cutting y Mike Cafarella. Deseaban generar resultados de búsquedas en la Web a mayor velocidad distribuyendo datos y cálculos en diferentes computadoras de modo que se pudieran procesar múltiples tareas de manera simultánea. Durante este tiempo, estaba en progreso otro proyecto de buscador llamado Google. Éste se basaba en el mismo concepto –almacenar y procesar datos de manera distribuida y automatizada de modo que se pudieran generar resultados de búsquedas en la Web a mayor velocidad.
En 2006, Cutting se unió a Yahoo y se llevó con él el proyecto Nutch, así como también ideas basadas en los trabajos iniciales de Google con la automatización del almacenaje y procesamiento de datos distribuidos. El proyecto Nutch fue dividido – la parte del rastreador Web se mantuvo como Nutch y la parte de cómputo y procesamiento distribuido se convirtió en Hadoop.
En 2008, Yahoo presentó Hadoop como proyecto de código abierto. Hoy día, la estructura y el ecosistema de tecnologías de Hadoop son gestionados y mantenidos por la Apache Software Foundation (ASF) sin fines de lucro, que es una comunidad global de programadores de software y otros contribuyentes. Foundation (ASF) puso Hadoop a disposición del público en noviembre de 2012 como Apache Hadoop.
Hadoop fue creado por Doug Cutting,[3] que lo nombró así por el elefante de juguete de su hijo.[4] Fue desarrollado originalmente para apoyar la distribución del proyecto de motor de búsqueda, denominado Nutch.[5]
Hadoop consiste básicamente en el Hadoop Common, que proporciona acceso a los sistemas de archivos soportados por Hadoop. El paquete de software The Hadoop Common contiene los archivos .jar y los scripts necesarios para ejecutar Hadoop. El paquete también proporciona código fuente, documentación, y una sección de contribución que incluye proyectos de la Comunidad Hadoop.
Una funcionalidad clave es que para la programación efectiva de trabajo, cada sistema de archivos debe conocer y proporcionar su ubicación: el nombre del rack (más precisamente, del switch) donde está el nodo trabajador. Las aplicaciones Hadoop pueden usar esta información para ejecutar trabajo en el nodo donde están los datos y, en su defecto, en el mismo rack/switch, reduciendo así el tráfico de red troncal (backbone traffic). El sistema de archivos HDFS usa esto cuando replica datos, para intentar conservar copias diferentes de los datos en racks diferentes. El objetivo es reducir el impacto de un corte de energía de rack o de fallo de interruptor de modo que incluso si se producen estos eventos, los datos todavía puedan ser legibles.[6]
Un clúster típico Hadoop incluye un nodo maestro y múltiples nodos esclavo. El nodo maestro consiste en jobtracker (rastreador de trabajo), tasktracker (rastreador de tareas), namenode (nodo de nombres), y datanode (nodo de datos). Un esclavo o compute node (nodo de cómputo) consisten en un nodo de datos y un rastreador de tareas. Hadoop requiere tener instalados entre nodos en el clúster JRE 1.6 o superior, y SSH.
La estructura básica de Hadoop consta de cuatro módulos que juntos forman el ecosistema de Hadoop:
El Hadoop Distributed File System (HDFS) es un sistema de archivos distribuido, escalable y portátil escrito en Java para el framework Hadoop. Cada nodo en una instancia Hadoop típicamente tiene un único nodo de datos; un clúster de datos forma el clúster HDFS. La situación es típica porque cada nodo no requiere un nodo de datos para estar presente. Cada nodo sirve bloques de datos sobre la red usando un protocolo de bloqueo específico para HDFS. El sistema de archivos usa la capa TCP/IP para la comunicación; los clientes usan RPC para comunicarse entre ellos. El HDFS almacena archivos grandes (el tamaño ideal de archivo es de 128 MB[7]), a través de múltiples máquinas. Consigue fiabilidad mediante replicado de datos a través de múltiples hosts, y no requiere almacenamiento RAID en ellos. Con el valor de replicación por defecto, 3, los datos se almacenan en 3 nodos: dos en el mismo rack, y otro en un rack distinto. Los nodos de datos pueden hablar entre ellos para reequilibrar datos, mover copias, y conservar alta la replicación de datos. HDFS no cumple totalmente con POSIX porque los requerimientos de un sistema de archivos POSIX difieren de los objetivos de una aplicación Hadoop, porque el objetivo no es tanto cumplir los estándares POSIX sino la máxima eficacia y rendimiento de datos. HDFS fue diseñado para gestionar archivos muy grandes.[7] HDFS no proporciona Alta disponibilidad.
A junio de 2010, la lista de sistemas de archivos soportados incluye:
Hadoop puede trabajar directamente con cualquier sistema de archivos distribuido, el cual puede ser montado por el sistema operativo subyacente simplemente usando la URL file://, sin embargo esto tiene un precio: la pérdida de la localidad. Para reducir el tráfico de red, Hadoop necesita saber qué servidores están más próximos a los datos; esta información la pueden proporcionar los puentes específicos del sistema de archivos específico de Hadoop.
La configuración por defecto incluye Amazon S3, y el almacén de archivos CloudStore, a través de las URLs s3:// y kfs://.
Se han escrito varios puentes de sistema de archivos de terceros, ninguno de los cuales están actualmente en las distribuciones de Hadoop. Estas pueden ser más de propósito general que HDFS, el cual está muy sesgado hacia grandes archivos y solo ofrece un subconjunto de la semántica esperada de sistema de archivos Posix Filesystem: no se puede bloquear o escribir en cualquier parte salvo la cola de un archivo.
Aparte del sistema de archivos, está el motor MapReduce, que consiste en un Job Tracker (rastreador de trabajos), para el cual las aplicaciones cliente envían trabajos MapReduce.
El rastreador de trabajos (Job Tracker) impulsa el trabajo fuera a los nodos Task Tracker disponibles en el clúster, intentando mantener el trabajo tan cerca de los datos como sea posible. Con un sistema de archivos consciente del rack en el que se encuentran los datos, el Job Tracker sabe qué nodo contiene la información, y que otras máquinas están cerca. Si el trabajo no puede ser almacenado en el nodo actual donde residen los datos, se da la prioridad a los nodos del mismo rack. Esto reduce el tráfico de red en la red principal backbone. Si un Task Tracker (rastreador de tareas) falla o no llega a tiempo, la parte de trabajo se reprograma. El TaskTracker en cada nodo genera un proceso separado JVM para evitar que el propio TaskTracker mismo falle si el trabajo en cuestión tiene problemas. Se envía información desde el TaskTracker al JobTracker cada pocos minutos para comprobar su estado. El estado del Job Tracker y el TaskTracker y la información obtenida se pueden ver desde un navegador web proporcionado por Jetty.
Si el Job Tracker fallaba en Hadoop 0.20 o anterior, todo el trabajo en curso se perdía. Hadoop versión 0.21 añadió algunos autoguardados al proceso; el rastreador de trabajo graba lo que está en el sistema de archivos. Cuando un Job Tracker comienza, busca datos para recomenzar el trabajo donde lo dejó. En versiones anteriores, todo el trabajo activo se perdía cuando se reiniciaba el Job Tracker.
Las limitaciones de esto son:
Por defecto Hadoop usa el método FIFO para programar la realización de trabajos desde una cola de trabajo. En la versión 0.19 el job scheduler (programador de trabajos) fue refactorizado fuera de Hadoop, lo cual añadió la habilidad de usar un programador alternativo.[8]
El fair scheduler (planificador justo o limpio) fue desarrollado por Facebook. El objetivo del planificador es proporcionar rápida respuesta para trabajos pequeños y calidad de servicio (QOS, en sus siglas en inglés) para trabajos de producción. El fair scheduler se basa en 3 conceptos básicos:[9]
Por defecto, los trabajos que están sin categorizar van a un pool por defecto. Las pools tienen que especificar el n.º mínimo de slots de mapa, los reduce slots, y un límite en el número de trabajos ejecutándose.
El programador de capacidad fue desarrollado por Yahoo. Soporta varias funciones similares a las del fair scheduler.[10]
No es posible la expropiación de recursos cuando se está ejecutando un trabajo.
Dentro de los proyectos de Apache, Hadoop es un gran sustento en dichos proyectos. algunos de estos proyectos de Apache:
El proyecto Apache Ambari tiene como objetivo simplificar la administración de Hadoop mediante el desarrollo de software para el aprovisionamiento, la administración y el monitoreo de clústeres de Apache Hadoop. Ambari proporciona una interfaz de usuario web de administración de Hadoop intuitiva y fácil de usar respaldada por sus API RESTful.
La medicina de precisión es un enfoque médico que utiliza información genómica y otros datos de salud personalizados para ofrecer diagnósticos más precisos y tratamientos personalizados. Un nuevo y emocionante campo de aplicación para Hadoop es su uso en la medicina de precisión, donde puede ayudar a procesar y analizar grandes conjuntos de datos genómicos y clínicos. Procesamiento eficiente de datos genómicos: Explica cómo Hadoop se utiliza para procesar y analizar secuencias genómicas completas y variantes genéticas en grandes conjuntos de pacientes. Destaca su capacidad para realizar cálculos paralelos y distribuidos, lo que permite una mayor velocidad y escalabilidad en el análisis de datos genómicos.
Integración de datos clínicos y genómicos: Describe cómo Hadoop se utiliza para integrar datos clínicos y genómicos de diferentes fuentes, como registros médicos electrónicos y bancos de datos genómicos. Muestra cómo esta integración permite un análisis más completo y una comprensión más profunda de las relaciones entre los factores genéticos y las enfermedades.
Análisis de datos a gran escala: Explica cómo Hadoop permite el análisis de grandes conjuntos de datos genómicos y clínicos, lo que facilita la identificación de patrones, marcadores genéticos y asociaciones de enfermedades. Destaca cómo el procesamiento distribuido y paralelo de Hadoop acelera el descubrimiento de información relevante y mejora la precisión de los análisis.
Privacidad y seguridad de los datos: Menciona cómo Hadoop se utiliza para abordar los desafíos de privacidad y seguridad en el contexto de la medicina de precisión. Destaca las técnicas de anonimización de datos y control de acceso que se pueden implementar en un entorno de Hadoop para proteger la confidencialidad de los datos sensibles de los pacientes.
Apache Cassandra es una base de datos distribuida NoSQL de código abierto en la que confían miles de empresas para la escalabilidad y la alta disponibilidad sin comprometer el rendimiento. La escalabilidad lineal y la tolerancia a fallos comprobada en hardware básico o infraestructura en la nube lo convierten en la plataforma perfecta para datos de misión crítica.
Apache Ozone es un almacenamiento distribuido altamente escalable para aplicaciones analytics, big data y cloud native. Ozone admite API de objetos compatibles con S3, así como una implementación de sistema de archivos compatible con Hadoop. Está optimizado tanto para operaciones eficientes de almacenamiento de objetos como de sistema de archivos.
Se basa en una capa de almacenamiento en bloque replicada de alta disponibilidad llamada Hadoop Distributed Data Store (HDDS).
Apache Spark
Apache Spark es un motor multilingüe para ejecutar ingeniería de datos, ciencia de datos y aprendizaje automático en máquinas o clústeres de un solo nodo.
ZooKeeper es un servicio centralizado para mantener la información de configuración, nombrar, brindar sincronización distribuida y brindar servicios grupales. Todos estos tipos de servicios son utilizados de una forma u otra por aplicaciones distribuidas.
El sistema de archivos HDFS no se restringe a MapReduce jobs. Puede usarse para otras aplicaciones, muchas de las cuales están bajo desarrollo en Apache. La lista incluye la base de datos HBase, el sistema de aprendizaje automático Apache Mahout, y operaciones de matriz. Hadoop puede usarse en teoría para cualquier tipo de trabajo orientado a lotes, en lugar de tiempo real, el cual es muy intensivo en datos, y ser capaz de trabajar en piezas de datos en paralelo. En octubre de 2009, entre las aplicaciones comerciales de Hadoop[11] se incluían:
La mayor diferencia entre Hadoop 1 y Hadoop 2 es la adición de YARN (Yet Another Resource Negotiator), que reemplazó al motor MapReduce en la primera versión de Hadoop. YARN se esfuerza por asignar recursos a varias aplicaciones de manera efectiva. Ejecuta dos demonios, que se encargan de dos tareas diferentes: el administrador de recursos, que realiza el seguimiento de trabajos y la asignación de recursos a las aplicaciones, el maestro de aplicaciones, que supervisa el progreso de la ejecución.
Hay funciones importantes proporcionadas por Hadoop 3. Por ejemplo, mientras que hay un solo nodo de nombre en Hadoop 2, Hadoop 3 permite tener múltiples nodos de nombre, lo que resuelve el problema del punto único de falla.
En Hadoop 3, hay contenedores que funcionan según el principio de Docker, lo que reduce el tiempo dedicado al desarrollo de aplicaciones.
Uno de los mayores cambios es que Hadoop 3 reduce la sobrecarga de almacenamiento con la codificación de borrado.
Además, Hadoop 3 permite el uso de hardware de GPU dentro del clúster, lo que es un beneficio muy importante para ejecutar algoritmos de aprendizaje profundo en un clúster de Hadoop.
El 19 de febrero de 2008, Yahoo! Inc. lanzó lo que pretendía era la más grande aplicación de producción Hadoop. El Yahoo! Search Webmap es una aplicación de Hadoop que se ejecuta en más de 10 000 núcleos Linux Clusters de racimo y produce datos que se utilizan actualmente en todos los resultados de búsqueda de Yahoo!. En junio de 2009, Yahoo! hizo disponible el código fuente de la versión de Hadoop que usa en producción.[12]
Aparte de Yahoo!, otras organizaciones usan Hadoop para ejecutar cómputos enormes distribuidos. Algunas de éstas empresas incluyen:[13]
Hadoop puede usarse también en granjas de computadoras y entornos de alto rendimiento. La integración con Sun Grid Engine fue lanzada, y ejecutar Hadoop en Sun Grid (el servicio bajo demanda de utility computing) es posible.[16] En la implementación inicial de la integración, el programador de tiempo de CPU no sabe la localización de los datos. Desafortunadamente, esto significa que el procesado no es hecho siempre en el mismo rack donde están los datos; esto era una característica principal de la Rutin Hadoop. Una mejor integración con localización de datos se anunció durante la Sun HPC Software Workshop '09.[17]
Sun también tiene el proyecto Hadoop Live CD OpenSolaris, que permite ejecutar un clúster Hadoop completamente funcional usando un live CD.[18]
Por su parte, la tecnología de Nutanix, también es capaz de soportar plataformas Hadoop, aportando las grandes ventajas de su arquitectura (redundancia, rendimientos, enorme facilidad de gestión, etc), sin las dependencias de storage habituales en estas infraestructuras Cloud.
Las cosas en IoT necesitan saber qué comunicar y cuándo actuar. En el centro de IoT hay un torrente de datos en transición siempre activo. Hadoop se utiliza a menudo como el almacén de datos de millones o miles de millones de transacciones. Las capacidades masivas de almacenaje y procesamiento le permiten también usar Hadoop como caja de arena para el descubrimiento y la definición de patrones cuya instrucción prescriptiva deberá ser monitoreada. Luego puede mejorar continuamente estas instrucciones, ya que Hadoop se actualiza de manera constante con nuevos datos que no concuerdan con patrones definidos con anterioridad.
20. Cyttek Group http://cyttek.com/consultoria/cyttek-big-data-manager/ (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
21[4]¿Qué es Hadoop? (s. f.). SAS. Recuperado 23 de mayo de 2022, de https://www.sas.com/es_mx/insights/big-data/hadoop.html
¿Qué es Hadoop? |. (s. f.). Google Cloud. https://cloud.google.com/learn/what-is-hadoop?hl=es