Apache Hadoop ( / h ə d ü p / ) es una colección de código abierto utilidades de software que facilita el uso de una red de muchos ordenadores para resolver problemas que implican grandes cantidades de datos y computación. Proporciona un marco de software para el almacenamiento distribuido y el procesamiento de big data utilizando el modelo de programación MapReduce . Hadoop fue diseñado originalmente para clústeres de computadoras construidos a partir de hardware básico , que sigue siendo el uso común. [3] Desde entonces, también ha encontrado uso en clústeres de hardware de gama alta. [4] [5] Todos los módulos en Hadoop están diseñados con la suposición fundamental de que las fallas de hardware son ocurrencias comunes y deben ser manejadas automáticamente por el marco. [6]
Autor (es) original (es) | Doug Cutting , Mike Cafarella |
---|---|
Desarrollador (es) | Fundación de software Apache |
Versión inicial | 1 de abril de 2006 [1] |
Lanzamiento estable | |
Repositorio | Repositorio de Hadoop |
Escrito en | Java |
Sistema operativo | Multiplataforma |
Tipo | Sistema de archivos distribuido |
Licencia | Licencia Apache 2.0 |
Sitio web | hadoop |
El núcleo de Apache Hadoop consiste en una parte de almacenamiento, conocida como Hadoop Distributed File System (HDFS), y una parte de procesamiento que es un modelo de programación MapReduce. Hadoop divide los archivos en grandes bloques y los distribuye entre los nodos de un clúster. Luego transfiere el código empaquetado a los nodos para procesar los datos en paralelo. Este enfoque aprovecha la localidad de datos , [7] donde los nodos manipulan los datos a los que tienen acceso. Esto permite que el conjunto de datos se procese más rápido y de manera más eficiente de lo que sería en una arquitectura de supercomputadora más convencional que se basa en un sistema de archivos paralelo donde la computación y los datos se distribuyen a través de redes de alta velocidad. [8] [9]
El marco básico de Apache Hadoop se compone de los siguientes módulos:
- Hadoop Common : contiene bibliotecas y utilidades necesarias para otros módulos de Hadoop;
- Sistema de archivos distribuido Hadoop (HDFS) : un sistema de archivos distribuido que almacena datos en máquinas básicas, lo que proporciona un ancho de banda agregado muy alto en todo el clúster;
- Hadoop YARN : (introducido en 2012) una plataforma responsable de administrar los recursos informáticos en clústeres y usarlos para programar las aplicaciones de los usuarios; [10] [11]
- Hadoop MapReduce : una implementación del modelo de programación MapReduce para el procesamiento de datos a gran escala.
- Hadoop Ozone - (introducido en 2020) Una tienda de objetos para Hadoop
El término Hadoop se usa a menudo tanto para módulos base como para submódulos y también para el ecosistema , [12] o colección de paquetes de software adicionales que se pueden instalar encima o junto a Hadoop, como Apache Pig , Apache Hive , Apache HBase , Apache Phoenix , Apache Spark , Apache ZooKeeper , Cloudera Impala , Apache Flume , Apache Sqoop , Apache Oozie y Apache Storm . [13]
Los componentes MapReduce y HDFS de Apache Hadoop se inspiraron en los artículos de Google sobre MapReduce y Google File System . [14]
El marco de Hadoop en sí está escrito principalmente en el lenguaje de programación Java , con algo de código nativo en C y utilidades de línea de comandos escritas como scripts de shell . Aunque el código Java de MapReduce es común, cualquier lenguaje de programación se puede usar con Hadoop Streaming para implementar el mapa y reducir partes del programa del usuario. [15] Otros proyectos en el ecosistema de Hadoop exponen interfaces de usuario más ricas.
Historia
Según sus cofundadores, Doug Cutting y Mike Cafarella , la génesis de Hadoop fue el artículo sobre el sistema de archivos de Google que se publicó en octubre de 2003. [16] [17] Este artículo generó otro de Google: "MapReduce: Simplified Data Processing en grandes clústeres ". [18] El desarrollo comenzó en el proyecto Apache Nutch , pero se trasladó al nuevo subproyecto Hadoop en enero de 2006. [19] Doug Cutting, que trabajaba en Yahoo! en ese momento, lo nombró por el elefante de juguete de su hijo. [20] El código inicial que se extrajo de Nutch consistió en aproximadamente 5,000 líneas de código para HDFS y aproximadamente 6,000 líneas de código para MapReduce.
En marzo de 2006, Owen O'Malley fue el primer comprometido en agregar al proyecto Hadoop; [21] Hadoop 0.1.0 fue lanzado en abril de 2006. [22] Continúa evolucionando a través de las contribuciones que se están haciendo al proyecto. [23] El primer documento de diseño para el sistema de archivos distribuido Hadoop fue escrito por Dhruba Borthakur en 2007. [24]
Arquitectura
Hadoop consta del paquete Hadoop Common , que proporciona abstracciones de nivel de sistema operativo y sistema de archivos, un motor MapReduce (ya sea MapReduce / MR1 o YARN / MR2) [25] y el sistema de archivos distribuido Hadoop (HDFS). El paquete Hadoop Common contiene los archivos Java Archive (JAR) y los scripts necesarios para iniciar Hadoop.
Para una programación eficaz del trabajo, cada sistema de archivos compatible con Hadoop debe proporcionar conocimiento de la ubicación, que es el nombre del bastidor, específicamente el conmutador de red donde se encuentra un nodo trabajador. Las aplicaciones Hadoop pueden usar esta información para ejecutar código en el nodo donde están los datos y, en su defecto, en el mismo rack / conmutador para reducir el tráfico de la red troncal. HDFS utiliza este método al replicar datos para la redundancia de datos en varios racks. Este enfoque reduce el impacto de un corte de energía en el rack o una falla en el interruptor; Si ocurre alguna de estas fallas de hardware, los datos permanecerán disponibles. [26]
Un pequeño clúster de Hadoop incluye un solo maestro y varios nodos trabajadores. El nodo principal consta de Job Tracker, Task Tracker, NameNode y DataNode. Un nodo esclavo o trabajador actúa como DataNode y TaskTracker, aunque es posible tener nodos trabajadores solo de datos y solo de computación. Estos se utilizan normalmente solo en aplicaciones no estándar. [27]
Hadoop requiere Java Runtime Environment (JRE) 1.6 o superior. Los scripts de inicio y apagado estándar requieren que se configure Secure Shell (SSH) entre los nodos del clúster. [28]
En un clúster más grande, los nodos HDFS se administran a través de un servidor NameNode dedicado para alojar el índice del sistema de archivos y un NameNode secundario que puede generar instantáneas de las estructuras de memoria del namenode, evitando así la corrupción del sistema de archivos y la pérdida de datos. De manera similar, un servidor JobTracker independiente puede administrar la programación de trabajos en todos los nodos. Cuando se usa Hadoop MapReduce con un sistema de archivos alternativo, la arquitectura NameNode, NameNode secundario y DataNode de HDFS se reemplaza por los equivalentes específicos del sistema de archivos.
Sistemas de archivos
Sistema de archivos distribuido Hadoop
El sistema de archivos distribuidos Hadoop (HDFS) es una, escalable y portátil distribuido sistema de archivos escrita en Java para el marco de Hadoop. Algunos lo consideran un almacén de datos debido a su falta de conformidad con POSIX , [29] pero proporciona comandos de shell y métodos de interfaz de programación de aplicaciones (API) de Java que son similares a otros sistemas de archivos. [30] Una instancia de Hadoop se divide en HDFS y MapReduce. HDFS se utiliza para almacenar los datos y MapReduce se utiliza para procesar los datos. HDFS tiene cinco servicios de la siguiente manera:
- Nodo de nombre
- Nodo de nombre secundario
- Rastreador de trabajos
- Nodo de datos
- Rastreador de tareas
Los tres primeros son los servicios maestros / demonios / nodos y los dos últimos son los servicios esclavos. Los servicios maestros pueden comunicarse entre sí y de la misma manera los servicios esclavos pueden comunicarse entre sí. Name Node es un nodo maestro y el nodo de datos es su correspondiente nodo esclavo y puede hablar entre sí.
Nodo de nombre: HDFS consta de un solo nodo de nombre que se denomina nodo maestro. El nodo maestro puede rastrear archivos, administrar el sistema de archivos y tiene los metadatos de todos los datos almacenados dentro de él. En particular, el nodo de nombre contiene los detalles del número de bloques, las ubicaciones del nodo de datos en el que se almacenan los datos, dónde se almacenan las réplicas y otros detalles. El nodo de nombre tiene contacto directo con el cliente.
Nodo de datos: un nodo de datos almacena datos en él como bloques. Esto también se conoce como nodo esclavo y almacena los datos reales en HDFS, que es responsable de que el cliente los lea y escriba. Estos son demonios esclavos. Cada nodo de datos envía un mensaje de latido al nodo de nombre cada 3 segundos y transmite que está vivo. De esta manera, cuando Name Node no recibe un latido de un nodo de datos durante 2 minutos, tomará ese nodo de datos como muerto e iniciará el proceso de replicaciones de bloques en algún otro nodo de datos.
Nodo de nombre secundario: esto es solo para cuidar los puntos de control de los metadatos del sistema de archivos que se encuentran en el nodo de nombre. Esto también se conoce como el nodo de punto de control. Es el nodo auxiliar para el nodo Nombre. El nodo de nombre secundario le indica al nodo de nombre que cree y envíe un archivo fsimage y editlog, sobre el cual el nodo de nombre secundario crea el archivo fsimage compactado. [31]
Job Tracker: Job Tracker recibe las solicitudes de ejecución de Map Reduce del cliente. El rastreador de trabajos habla con el nodo de nombre para conocer la ubicación de los datos que se utilizarán en el procesamiento. El nodo de nombre responde con los metadatos de los datos de procesamiento requeridos.
Rastreador de tareas: es el nodo esclavo del Rastreador de trabajos y tomará la tarea del Rastreador de trabajos. También recibe código del Job Tracker. Task Tracker tomará el código y lo aplicará al archivo. El proceso de aplicar ese código en el archivo se conoce como Mapper. [32]
El clúster de Hadoop tiene nominalmente un solo nodo de nombre más un clúster de nodos de datos, aunque hay opciones de redundancia disponibles para el nodo de nombre debido a su criticidad. Cada nodo de datos sirve bloques de datos a través de la red utilizando un protocolo de bloque específico para HDFS. El sistema de archivos utiliza sockets TCP / IP para la comunicación. Los clientes utilizan llamadas a procedimiento remoto (RPC) para comunicarse entre sí.
HDFS almacena archivos grandes (típicamente en el rango de gigabytes a terabytes [33] ) en múltiples máquinas. Logra confiabilidad al replicar los datos en múltiples hosts y, por lo tanto, teóricamente no requiere una matriz redundante de almacenamiento de discos independientes (RAID) en los hosts (pero para aumentar el rendimiento de entrada-salida (E / S), algunas configuraciones RAID siguen siendo útiles). Con el valor de replicación predeterminado, 3, los datos se almacenan en tres nodos: dos en el mismo bastidor y uno en un bastidor diferente. Los nodos de datos pueden comunicarse entre sí para reequilibrar los datos, mover copias y mantener alta la replicación de datos. HDFS no es totalmente compatible con POSIX, porque los requisitos para un sistema de archivos POSIX difieren de los objetivos de una aplicación Hadoop. La desventaja de no tener un sistema de archivos totalmente compatible con POSIX se incrementa el rendimiento para los datos de rendimiento y soporte para operaciones no POSIX como Anexar. [34]
En mayo de 2012, se agregaron capacidades de alta disponibilidad a HDFS, [35] permitiendo que el servidor de metadatos principal llamado NameNode realice una conmutación por error manual en una copia de seguridad. El proyecto también ha comenzado a desarrollar fallos automáticos .
El sistema de archivos HDFS incluye un denominado nodo de nombre secundario , un término engañoso que algunos podrían interpretar incorrectamente como un nodo de nombre de respaldo cuando el nodo de nombre principal se desconecta. De hecho, el nodo de nombre secundario se conecta regularmente con el nodo de nombre principal y crea instantáneas de la información del directorio del nodo de nombre principal, que luego el sistema guarda en directorios locales o remotos. Estas imágenes con puntos de control se pueden usar para reiniciar un nodo de nombre primario fallido sin tener que reproducir el diario completo de las acciones del sistema de archivos y luego editar el registro para crear una estructura de directorio actualizada. Debido a que el nodo de nombre es el único punto para el almacenamiento y la administración de metadatos, puede convertirse en un cuello de botella para admitir una gran cantidad de archivos, especialmente una gran cantidad de archivos pequeños. HDFS Federation, una nueva adición, tiene como objetivo abordar este problema hasta cierto punto al permitir múltiples espacios de nombres servidos por nodos de nombres separados. Además, hay algunos problemas en HDFS, como problemas de archivos pequeños, problemas de escalabilidad, punto único de falla (SPoF) y cuellos de botella en solicitudes de metadatos enormes. Una ventaja de utilizar HDFS es el conocimiento de los datos entre el rastreador de trabajos y el rastreador de tareas. El rastreador de trabajos asigna o reduce los trabajos a rastreadores de tareas con conocimiento de la ubicación de los datos. Por ejemplo: si el nodo A contiene datos (a, b, c) y el nodo X contiene datos (x, y, z), el rastreador de trabajos programa el nodo A para realizar el mapa o reducir las tareas en (a, b, c) y el nodo X estaría programado para realizar mapas o reducir tareas en (x, y, z). Esto reduce la cantidad de tráfico que pasa por la red y evita transferencias de datos innecesarias. Cuando se utiliza Hadoop con otros sistemas de archivos, esta ventaja no siempre está disponible. Esto puede tener un impacto significativo en los tiempos de finalización del trabajo, como se demuestra con los trabajos con uso intensivo de datos. [36]
HDFS se diseñó para archivos en su mayoría inmutables y puede no ser adecuado para sistemas que requieren operaciones de escritura simultáneas. [34]
HDFS se puede montar directamente con un sistema de archivos virtual en el espacio de usuario (FUSE) en Linux y algunos otros sistemas Unix .
El acceso a los archivos se puede lograr a través de la API nativa de Java, la API Thrift (genera un cliente en varios lenguajes, por ejemplo, C ++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C #, Cocoa , Smalltalk y OCaml ), la interfaz de línea de comandos , la aplicación web HDFS-UI a través de HTTP o mediante bibliotecas de cliente de red de terceros. [37]
HDFS está diseñado para la portabilidad en varias plataformas de hardware y para compatibilidad con una variedad de sistemas operativos subyacentes. El diseño de HDFS introduce limitaciones de portabilidad que dan como resultado algunos cuellos de botella en el rendimiento, ya que la implementación de Java no puede utilizar funciones que son exclusivas de la plataforma en la que se ejecuta HDFS. [38] Debido a su amplia integración en la infraestructura de nivel empresarial, la supervisión del rendimiento de HDFS a escala se ha convertido en un tema cada vez más importante. La supervisión del rendimiento de un extremo a otro requiere el seguimiento de las métricas de los nodos de datos, los nodos de nombre y el sistema operativo subyacente. [39] Actualmente existen varias plataformas de monitoreo para rastrear el rendimiento de HDFS, incluidas Hortonworks , Cloudera y Datadog .
Otros sistemas de archivos
Hadoop trabaja directamente con cualquier sistema de archivos distribuido que pueda ser montado por el sistema operativo subyacente simplemente usando una file://
URL; sin embargo, esto tiene un precio: la pérdida de localidad. Para reducir el tráfico de red, Hadoop necesita saber qué servidores están más cerca de los datos, información que los puentes de sistemas de archivos específicos de Hadoop pueden proporcionar.
En mayo de 2011, la lista de sistemas de archivos compatibles incluidos con Apache Hadoop era:
- HDFS: el propio sistema de archivos con reconocimiento de bastidor de Hadoop. [40] Esto está diseñado para escalar a decenas de petabytes de almacenamiento y se ejecuta sobre los sistemas de archivos de los sistemas operativos subyacentes .
- Apache Hadoop Ozone: objetivo de almacenamiento de objetos compatible con HDFS optimizado para miles de millones de archivos pequeños.
- Sistema de archivos FTP : almacena todos sus datos en servidores FTP accesibles de forma remota.
- Almacenamiento de objetos de Amazon S3 (Simple Storage Service) : está dirigido a clústeres alojados en la infraestructura de servidor bajo demanda de Amazon Elastic Compute Cloud . No hay reconocimiento de rack en este sistema de archivos, ya que todo es remoto.
- Sistema de archivos Windows Azure Storage Blobs (WASB): esta es una extensión de HDFS que permite que las distribuciones de Hadoop accedan a los datos en los almacenes de blobs de Azure sin mover los datos de forma permanente al clúster.
También se han escrito varios puentes de sistemas de archivos de terceros, ninguno de los cuales se encuentra actualmente en las distribuciones de Hadoop. Sin embargo, algunas distribuciones comerciales de Hadoop se envían con un sistema de archivos alternativo como predeterminado, específicamente IBM y MapR .
- En 2009, IBM discutió la ejecución de Hadoop sobre el Sistema de archivos paralelo general de IBM . [41] El código fuente se publicó en octubre de 2009. [42]
- En abril de 2010, Parascale publicó el código fuente para ejecutar Hadoop en el sistema de archivos Parascale. [43]
- En abril de 2010, Appistry lanzó un controlador de sistema de archivos Hadoop para usar con su propio producto de almacenamiento CloudIQ. [44]
- En junio de 2010, HP discutió un controlador de sistema de archivos IBRIX Fusion con reconocimiento de ubicación . [45]
- En mayo de 2011, MapR Technologies Inc. anunció la disponibilidad de un sistema de archivos alternativo para Hadoop, MapR FS , que reemplazó el sistema de archivos HDFS con un sistema de archivos de lectura / escritura de acceso aleatorio completo.
JobTracker y TaskTracker: el motor MapReduce
Encima de los sistemas de archivos viene MapReduce Engine, que consta de un JobTracker , al que las aplicaciones cliente envían trabajos MapReduce. JobTracker lleva el trabajo a los nodos de TaskTracker disponibles en el clúster, esforzándose por mantener el trabajo lo más cerca posible de los datos. Con un sistema de archivos con reconocimiento de bastidores, JobTracker sabe qué nodo contiene los datos y qué otras máquinas están cerca. Si el trabajo no se puede alojar en el nodo real donde residen los datos, se da prioridad a los nodos del mismo bastidor. Esto reduce el tráfico de red en la red troncal principal. Si un TaskTracker falla o se agota, esa parte del trabajo se reprograma. TaskTracker en cada nodo genera un proceso de máquina virtual Java (JVM) independiente para evitar que el TaskTracker falle si el trabajo en ejecución bloquea su JVM. Se envía un latido del TaskTracker al JobTracker cada pocos minutos para verificar su estado. Jetty expone el estado y la información de Job Tracker y TaskTracker y se puede ver desde un navegador web.
Las limitaciones conocidas de este enfoque son:
- La asignación de trabajo a TaskTrackers es muy simple. Cada TaskTracker tiene varias ranuras disponibles (como "4 ranuras"). Cada mapa activo o tarea reducida ocupa un espacio. El rastreador de trabajos asigna trabajo al rastreador más cercano a los datos con un espacio disponible. No se tiene en cuenta la carga actual del sistema de la máquina asignada y, por tanto, su disponibilidad real.
- Si un TaskTracker es muy lento, puede retrasar todo el trabajo de MapReduce, especialmente hacia el final, cuando todo puede terminar esperando la tarea más lenta. Sin embargo, con la ejecución especulativa habilitada, se puede ejecutar una sola tarea en varios nodos esclavos.
Planificación
De forma predeterminada, Hadoop utiliza la programación FIFO y, opcionalmente, 5 prioridades de programación para programar trabajos desde una cola de trabajos. [46] En la versión 0.19, el programador de trabajos se refactorizó fuera del JobTracker, al tiempo que se agregó la capacidad de usar un programador alternativo (como el programador justo o el programador de capacidad , que se describe a continuación). [47]
Programador justo
El programador de ferias fue desarrollado por Facebook . [48] El objetivo del programador de ferias es proporcionar tiempos de respuesta rápidos para trabajos pequeños y Calidad de servicio (QoS) para trabajos de producción. El programador de ferias tiene tres conceptos básicos. [49]
- Los trabajos se agrupan en grupos .
- A cada grupo se le asigna una participación mínima garantizada.
- El exceso de capacidad se divide entre trabajos.
De forma predeterminada, los trabajos que no están categorizados se incluyen en un grupo predeterminado. Los grupos deben especificar el número mínimo de espacios en el mapa, reducir los espacios y establecer un límite en el número de trabajos en ejecución.
Programador de capacidad
El programador de capacidad fue desarrollado por Yahoo. El programador de capacidad admite varias funciones que son similares a las del programador de feria. [50]
- A las colas se les asigna una fracción de la capacidad total de recursos.
- Los recursos libres se asignan a las colas más allá de su capacidad total.
- Dentro de una cola, un trabajo con un alto nivel de prioridad tiene acceso a los recursos de la cola.
No hay preferencia una vez que se está ejecutando un trabajo.
Diferencia entre Hadoop 1 y Hadoop 2 (YARN)
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 eficaz. Ejecuta dos demonios, que se encargan de dos tareas diferentes: el administrador de recursos , que realiza el seguimiento del trabajo y la asignación de recursos a las aplicaciones, el maestro de la aplicación , que monitorea el progreso de la ejecución.
Diferencia entre Hadoop 2 y Hadoop 3
Hay características importantes proporcionadas por Hadoop 3. Por ejemplo, si bien hay un solo nodo de nombre en Hadoop 2, Hadoop 3 permite tener varios nodos de nombre, lo que resuelve el problema del punto único de falla.
En Hadoop 3, hay contenedores que funcionan en principio de Docker , lo que reduce el tiempo dedicado al desarrollo de aplicaciones.
Uno de los cambios más importantes 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, que es un beneficio muy sustancial para ejecutar algoritmos de aprendizaje profundo en un clúster de Hadoop. [51]
Otras aplicaciones
El HDFS no está restringido a trabajos de MapReduce. Se puede utilizar para otras aplicaciones, muchas de las cuales están en desarrollo en Apache. La lista incluye la base de datos HBase , el sistema de aprendizaje automático Apache Mahout y el almacén de datos Apache Hive . En teoría, Hadoop podría usarse para cualquier carga de trabajo que esté orientada a lotes en lugar de tiempo real, que requiera muchos datos y se beneficie del procesamiento paralelo . También se puede utilizar para complementar un sistema en tiempo real, como la arquitectura lambda , Apache Storm , Flink y Spark Streaming . [52]
Las aplicaciones comerciales de Hadoop incluyen: [53]
- Análisis de registro o flujo de clics
- Analítica de marketing
- Aprendizaje automático y minería de datos
- Procesamiento de imágenes
- Procesamiento de mensajes XML
- Rastreo web
- Trabajo de archivo para el cumplimiento, incluidos los datos relacionales y tabulares
Casos de uso destacados
El 19 de febrero de 2008, Yahoo! Inc. lanzó lo que afirmaron que era la aplicación de producción de Hadoop más grande del mundo. El Yahoo! Search Webmap es una aplicación de Hadoop que se ejecuta en un clúster de Linux con más de 10,000 núcleos y datos producidos que se utilizaron en todos los Yahoo! consulta de búsqueda web. [54] Hay varios clústeres de Hadoop en Yahoo! y ningún sistema de archivos HDFS o trabajos de MapReduce se dividen en varios centros de datos. Cada nodo del clúster de Hadoop arranca la imagen de Linux, incluida la distribución de Hadoop. Se sabe que el trabajo que realizan los clústeres incluye los cálculos de índice para Yahoo! buscador. En junio de 2009, Yahoo! puso el código fuente de su versión de Hadoop a disposición de la comunidad de código abierto. [55]
En 2010, Facebook afirmó que tenían el clúster de Hadoop más grande del mundo con 21 PB de almacenamiento. [56] En junio de 2012, anunciaron que los datos habían aumentado a 100 PB [57] y más tarde ese año anunciaron que los datos estaban creciendo aproximadamente a la mitad de un PB por día. [58]
Como de 2013[actualizar], La adopción de Hadoop se había generalizado: más de la mitad de las empresas de Fortune 50 usaban Hadoop. [59]
Alojamiento Hadoop en la nube
Hadoop se puede implementar en un centro de datos tradicional en el sitio, así como en la nube . [60] La nube permite a las organizaciones implementar Hadoop sin la necesidad de adquirir hardware o experiencia específica en configuración. [61]
Soporte comercial
Varias empresas ofrecen implementaciones comerciales o soporte para Hadoop. [62]
Marca
Apache Software Foundation ha declarado que solo el software lanzado oficialmente por Apache Hadoop Project puede llamarse Apache Hadoop o Distribuciones de Apache Hadoop . [63] El nombre de productos y trabajos derivados de otros proveedores y el término "compatible" son algo controvertidos dentro de la comunidad de desarrolladores de Hadoop. [64]
Documentos
Algunos artículos influyeron en el nacimiento y crecimiento de Hadoop y el procesamiento de big data. Algunos de estos son:
- Jeffrey Dean, Sanjay Ghemawat (2004) MapReduce: procesamiento de datos simplificado en grandes clústeres , Google. Este documento inspiró a Doug Cutting a desarrollar una implementación de código abierto del marco Map-Reduce. Lo llamó Hadoop, en honor al elefante de juguete de su hijo.
- Michael Franklin, Alon Halevy, David Maier (2005) De las bases de datos a los espacios de datos: una nueva abstracción para la gestión de la información . Los autores destacan la necesidad de que los sistemas de almacenamiento acepten todos los formatos de datos y proporcionen API para el acceso a los datos que evolucionen según la comprensión de los datos por parte del sistema de almacenamiento.
- Fay Chang y col. (2006) Bigtable: un sistema de almacenamiento distribuido para datos estructurados , Google.
- Robert Kallman y col. (2008) H-store: un sistema de procesamiento de transacciones de memoria principal distribuida de alto rendimiento
Ver también
- Apache Accumulo - Secure Bigtable [65]
- Apache Cassandra , una base de datos orientada a columnas que admite el acceso desde Hadoop
- Apache CouchDB , una base de datos que usa JSON para documentos, JavaScript para consultas de MapReduce y HTTP regular para una API
- Apache HCatalog, una capa de administración de almacenamiento y tablas para Hadoop
- Big data
- Computación intensiva en datos
- HPCC - Clúster de computación de alto rendimiento de LexisNexis Risk Solutions
- Hypertable : alternativa a HBase
- Sector / Esfera : procesamiento y almacenamiento distribuido de código abierto
- Utilidad Linux simple para la gestión de recursos
Referencias
- ^ "Lanzamientos de Hadoop" . apache.org . Fundación de software Apache . Consultado el 28 de abril de 2019 .
- ^ a b c d e f g "Apache Hadoop" . Consultado el 7 de septiembre de 2019 .
- ^ Judge, Peter (22 de octubre de 2012). "Doug Cutting: Big Data no es una burbuja" . silicon.co.uk . Consultado el 11 de marzo de 2018 .
- ^ Woodie, Alex (12 de mayo de 2014). "Por qué Hadoop en IBM Power" . datanami.com . Datanami . Consultado el 11 de marzo de 2018 .
- ^ Hemsoth, Nicole (15 de octubre de 2014). "Cray lanza Hadoop en HPC Airspace" . hpcwire.com . Consultado el 11 de marzo de 2018 .
- ^ "¡Bienvenido a Apache Hadoop!" . hadoop.apache.org . Consultado el 25 de agosto de 2016 .
- ^ "¿Qué es el sistema de archivos distribuido Hadoop (HDFS)?" . ibm.com . IBM . Consultado el 12 de abril de 2021 .
- ^ Malak, Michael (19 de septiembre de 2014). "Localidad de datos: HPC vs. Hadoop vs. Spark" . datascienceassn.org . Asociación de ciencia de datos . Consultado el 30 de octubre de 2014 .
- ^ Wang, Yandong; Goldstone, Robin; Yu, Weikuan; Wang, Teng (octubre de 2014). "Caracterización y optimización de MapReduce residente en memoria en sistemas HPC". 2014 IEEE 28th International Parallel and Distributed Processing Symposium . IEEE. págs. 799–808. doi : 10.1109 / IPDPS.2014.87 . ISBN 978-1-4799-3800-1. S2CID 11157612 .
- ^ "Recurso (API de Apache Hadoop Main 2.5.1)" . apache.org . Fundación de software Apache. 12 de septiembre de 2014. Archivado desde el original el 6 de octubre de 2014 . Consultado el 30 de septiembre de 2014 .
- ^ Murthy, Arun (15 de agosto de 2012). "Apache Hadoop YARN - Conceptos y aplicaciones" . hortonworks.com . Hortonworks . Consultado el 30 de septiembre de 2014 .
- ^ "Continuidad recauda $ 10 millones Serie A Ronda para impulsar el desarrollo de aplicaciones de Big Data dentro del ecosistema Hadoop" . finance.yahoo.com . Marketwired . 14 de noviembre de 2012 . Consultado el 30 de octubre de 2014 .
- ^ "Proyectos relacionados con Hadoop en" . Hadoop.apache.org . Consultado el 17 de octubre de 2013 .
- ^ Ciencia de datos y análisis de macrodatos: descubrimiento, análisis, visualización y presentación de datos . John Wiley e hijos. 19 de diciembre de 2014. p. 300. ISBN 9781118876220. Consultado el 29 de enero de 2015 .
- ^ "[nlpatumd] Aventuras con Hadoop y Perl" . Mail-archive.com. 2 de mayo de 2010 . Consultado el 5 de abril de 2013 .
- ^ Cortando, Mike; Cafarella, Ben; Lorica, Doug (31 de marzo de 2016). "Los próximos 10 años de Apache Hadoop" . O'Reilly Media . Consultado el 12 de octubre de 2017 .
- ^ Ghemawat, Sanjay; Gobioff, Howard; Leung, Shun-Tak. "El sistema de archivos de Google" .
- ^ Dean, Jeffrey; Ghemawat, Sanjay (2004). "MapReduce: procesamiento de datos simplificado en grandes clústeres" .
- ^ Cutting, Doug (28 de enero de 2006). "solicitud de nuevas listas de correo: hadoop" . issues.apache.org .
El PMC de Lucene ha votado para dividir parte de Nutch en un nuevo subproyecto llamado Hadoop
- ^ Vance, Ashlee (17 de marzo de 2009). "Hadoop, un programa de software libre, encuentra usos más allá de la búsqueda" . The New York Times . Archivado desde el original el 30 de agosto de 2011 . Consultado el 20 de enero de 2010 .
- ^ Cutting, Doug (30 de marzo de 2006). "[RESULTADO] VOTO: agregue Owen O'Malley como confirmador de Hadoop" . hadoop-common-dev (lista de correo).
- ^ "Índice de / dist / hadoop / core" . archive.apache.org . Consultado el 11 de diciembre de 2017 .
- ^ "Quiénes somos" . hadoop.apache.org . Consultado el 11 de diciembre de 2017 .
- ^ Borthakur, Dhruba (2006). "El sistema de archivos distribuido Hadoop: arquitectura y diseño" (PDF) . Repositorio de código Apache Hadoop .
- ^ Chouraria, Harsh (21 de octubre de 2012). "MR2 y YARN brevemente explicados" . Cloudera.com . Archivado desde el original el 22 de octubre de 2013 . Consultado el 23 de octubre de 2013 .
- ^ "Guía del usuario de HDFS" . Hadoop.apache.org . Consultado el 4 de septiembre de 2014 .
- ^ "Ejecución de Hadoop en el sistema Ubuntu Linux (clúster de varios nodos)" .
- ^ "Ejecución de Hadoop en Ubuntu Linux (clúster de un solo nodo)" . Consultado el 6 de junio de 2013 .
- ^ Evans, Chris (octubre de 2013). "Big data storage: conceptos básicos de almacenamiento de Hadoop" . computerweekly.com . Computer Weekly . Consultado el 21 de junio de 2016 .
HDFS no es un sistema de archivos en el sentido tradicional y, por lo general, no se monta directamente para que el usuario lo vea.
- ^ deRoos, Dirk. "Gestión de archivos con los comandos del sistema de archivos Hadoop" . dummies.com . Para tontos . Consultado el 21 de junio de 2016 .
- ^ Balram. "Tutorial de Big Data Hadoop para principiantes" . www.gyansetu.in . Consultado el 11 de marzo de 2021 .
- ^ "Copia archivada" . Archivado desde el original el 23 de octubre de 2019 . Consultado el 19 de junio de 2020 .CS1 maint: copia archivada como título ( enlace )
- ^ "Arquitectura HDFS" . Consultado el 1 de septiembre de 2013 .
- ^ a b Pessach, Yaniv (2013). "Almacenamiento distribuido" (Almacenamiento distribuido: conceptos, algoritmos e implementaciones ed.). OL 25423189M . Cite journal requiere
|journal=
( ayuda ) - ^ "La versión 2.0 prevé la conmutación por error manual y están trabajando en la conmutación por error automática" . Hadoop.apache.org . Consultado el 30 de julio de 2013 .
- ^ "Mejora del rendimiento de MapReduce mediante la ubicación de datos en clústeres Hadoop heterogéneos" (PDF) . Ing.auburn.ed. Abril de 2010.
- ^ "Montaje HDFS" . Consultado el 5 de agosto de 2016 .
- ^ Shafer, Jeffrey; Rixner, Scott; Cox, Alan. "El sistema de archivos distribuido de Hadoop: equilibrio de portabilidad y rendimiento" (PDF) . Universidad de Rice . Consultado el 19 de septiembre de 2016 .
- ^ Mouzakitis, Evan (21 de julio de 2016). "Cómo recopilar métricas de rendimiento de Hadoop" . Consultado el 24 de octubre de 2016 .
- ^ "Guía de usuarios de HDFS - Conocimiento del rack" . Hadoop.apache.org . Consultado el 17 de octubre de 2013 .
- ^ "Análisis de la nube: ¿realmente necesitamos reinventar la pila de almacenamiento?" (PDF) . IBM. Junio de 2009.
- ^ "HADOOP-6330: Integración de la implementación de IBM General Parallel File System de la interfaz Hadoop Filesystem" . IBM. 23 de octubre de 2009.
- ^ "HADOOP-6704: agregar soporte para el sistema de archivos Parascale" . Parascale. 14 de abril de 2010.
- ^ "HDFS con almacenamiento CloudIQ" . Appistry, Inc. 6 de julio de 2010. Archivado desde el original el 5 de abril de 2014 . Consultado el 10 de diciembre de 2013 .
- ^ "Hadoop de alta disponibilidad" . HP. 9 de junio de 2010.
- ^ "Guía de comandos" . 17 de agosto de 2011. Archivado desde el original el 17 de agosto de 2011 . Consultado el 11 de diciembre de 2017 .CS1 maint: bot: estado de URL original desconocido ( enlace )
- ^ "Refactorice el planificador fuera del JobTracker" . Hadoop Common . Fundación de software Apache . Consultado el 9 de junio de 2012 .
- ^ Jones, M. Tim (6 de diciembre de 2011). "Programación en Hadoop" . ibm.com . IBM . Consultado el 20 de noviembre de 2013 .
- ^ "Documento de diseño del programador de ferias de Hadoop" (PDF) . apache.org . Consultado el 12 de octubre de 2017 .
- ^ "Guía del programador de capacidad" . Hadoop.apache.org . Consultado el 31 de diciembre de 2015 .
- ^ "Cómo Apache Hadoop 3 agrega valor sobre Apache Hadoop 2" . hortonworks.com . 7 de febrero de 2018 . Consultado el 11 de junio de 2018 .
- ^ Chintapalli, Sanket; Dagit, Derek; Evans, Bobby; Farivar, Reza; Graves, Thomas; Holderbaugh, Mark; Liu, Zhuo; Nusbaum, Kyle; Patil, Kishorkumar; Peng, Boyang Jerry; Poulosky, Paul (mayo de 2016). "Benchmarking Streaming Computation Engines: Storm, Flink y Spark Streaming". Talleres del Simposio Internacional de Procesamiento Distribuido y Paralelo del IEEE 2016 (IPDPSW) . IEEE. págs. 1789-1792. doi : 10.1109 / IPDPSW.2016.138 . ISBN 978-1-5090-3682-0. S2CID 2180634 .
- ^ " " Cómo más de 30 empresas utilizan Hadoop ", en DBMS2" . Dbms2.com. 10 de octubre de 2009 . Consultado el 17 de octubre de 2013 .
- ^ "Yahoo! Lanza la aplicación de producción de Hadoop más grande del mundo" . Yahoo . 19 de febrero de 2008. Archivado desde el original el 7 de marzo de 2016 . Consultado el 31 de diciembre de 2015 .
- ^ "Hadoop y Computación distribuida en Yahoo!" . Yahoo !. 20 de abril de 2011 . Consultado el 17 de octubre de 2013 .
- ^ "HDFS: ¡Facebook tiene el clúster de Hadoop más grande del mundo!" . Hadoopblog.blogspot.com. 9 de mayo de 2010 . Consultado el 23 de mayo de 2012 .
- ^ "Bajo el capó: confiabilidad del sistema de archivos distribuidos Hadoop con Namenode y Avatarnode" . Facebook . Consultado el 13 de septiembre de 2012 .
- ^ "Bajo el capó: Programación de trabajos de MapReduce de manera más eficiente con Corona" . Facebook . Consultado el 9 de noviembre de 2012 .
- ^ "Altior's AltraSTAR - Hadoop Storage Accelerator and Optimizer ahora certificado en CDH4 (distribución de Cloudera que incluye Apache Hadoop versión 4)" (Comunicado de prensa). Eatontown, Nueva Jersey: Altior Inc. 18 de diciembre de 2012 . Consultado el 30 de octubre de 2013 .
- ^ "Hadoop - Microsoft Azure" . azure.microsoft.com . Consultado el 11 de diciembre de 2017 .
- ^ "Hadoop" . Azure.microsoft.com . Consultado el 22 de julio de 2014 .
- ^ "Por qué el ritmo de la innovación de Hadoop tiene que acelerarse" . Gigaom.com. 25 de abril de 2011 . Consultado el 17 de octubre de 2013 .
- ^ "Definición de Hadoop" . Wiki.apache.org. 30 de marzo de 2013 . Consultado el 17 de octubre de 2013 .
- ^ "Definiendo la compatibilidad de Hadoop: revisado" . Mail-archives.apache.org. 10 de mayo de 2011 . Consultado el 17 de octubre de 2013 .
- ^ "Manual de usuario de Apache Accumulo: Seguridad" . apache.org . Fundación de software Apache . Consultado el 3 de diciembre de 2014 .
Bibliografía
- Lam, Chuck (28 de julio de 2010). Hadoop en acción (1ª ed.). Publicaciones Manning . pag. 325. ISBN 978-1-935-18219-1.
- Venner, Jason (22 de junio de 2009). Pro Hadoop (1ª ed.). Presione . pag. 440. ISBN 978-1-430-21942-2. Archivado desde el original el 5 de diciembre de 2010 . Consultado el 3 de julio de 2009 .
- White, Tom (16 de junio de 2009). Hadoop: The Definitive Guide (1ª ed.). O'Reilly Media . pag. 524. ISBN 978-0-596-52197-4.
- Vohra, Deepak (octubre de 2016). Ecosistema práctico de Hadoop: una guía definitiva para los marcos y herramientas relacionados con Hadoop (1ª ed.). Presione . pag. 429. ISBN 978-1-4842-2199-0.
- Wiktorski, Tomasz (enero de 2019). Sistemas intensivos en datos . Cham, Suiza: Springer. ISBN 978-3-030-04603-3.
enlaces externos
- Página web oficial