Papel apilado
La primera generación de Hadoop consta del sistema de almacenamiento distribuido HDFS y el marco informático distribuido MapReduce. HDFS consta de un NameNode y varios DataNodes, y MapReduce consta de un JobTracker y varios TaskTrackers. , las versiones de Hadoop correspondientes son Hadoop 1.x y 0.21. x, 0.22.x
(2) Hadoop 2.0
La segunda generación de Hadoop se propuso para superar varios problemas existentes en HDFS y MapReduce en Hadoop 1.0. En respuesta al problema de un solo NameNode que limita la expansión de HDFS en Hadoop 1.0, se propuso la federación HDFS, lo que permite que múltiples NameNodes administren diferentes directorios y logren aislamiento de acceso y expansión horizontal. En vista de las deficiencias de MapReduce en Hadoop 1.0 en términos de escalabilidad y soporte de múltiples marcos, se propone un nuevo marco de gestión de recursos YARN (otro negociador de recursos) para separar las funciones de gestión de recursos y control de trabajos en JobTracker. Son implementados por los componentes ResourceManager y ApplicationMaster respectivamente. ResourceManager es responsable de la asignación de recursos de todas las aplicaciones y ApplicationMaster solo es responsable de administrar una aplicación. Las versiones de Hadoop correspondientes son Hadoop 0.23.x y 2.x.
(3) MapReduce 1.0 o MRV 1 (MapReduce versión 1).
El marco informático MapReduce de primera generación consta de dos partes: modelo de programación y entorno de ejecución. Su modelo de programación básico abstrae el problema en dos etapas: Mapear y Reducir. En la fase de mapa, los datos de entrada se analizan en clave/valor y luego, después de llamar iterativamente a la función Map(), se envían al directorio local en forma de clave/valor. En la fase de Reducción se ajustan los valores con la misma clave y el resultado final se escribe en HDFS. Su entorno de ejecución consta de dos servicios: JobTracker y TaskTracker es responsable de la gestión de recursos y el control de todos los trabajos, y TaskTracker es responsable de recibir y ejecutar comandos de JobTracker.
(4)MapReduce 2.0 o MRv2 (MapReduce versión 2) o NextGen MapReduc.
MapReduce 2.0 o MRv2 tiene el mismo modelo de programación que MRv1, pero la única diferencia es el entorno de ejecución. MRv2 es MRv1, que se procesa sobre la base de MRv1 y se ejecuta en el marco de gestión de recursos YARN. Ya no consta de JobTracker y TaskTracker, sino que se convierte en un proceso de control de trabajos. ApplicationMaster solo es responsable de la gestión de un trabajo. En cuanto a la gestión de recursos, se hace hilo.
En resumen, MRv1 es un marco informático independiente fuera de línea, mientras que MRv2 es MRv1 que se ejecuta en YARN.
(5)Hadoop-MapReduce (un marco informático fuera de línea)
Hadoop es una implementación de código abierto del marco informático distribuido MapReduce de Google y el sistema de almacenamiento distribuido GFS. Consiste en el marco informático distribuido MapReduce y el sistema de almacenamiento distribuido HDFS (Hadoop Distributed File System). Tiene las características de alta tolerancia a fallas, alta escalabilidad e interfaz de programación simple, y es adoptado por la mayoría de las empresas de Internet.
(6)Hadoop-Yarn (una rama de Hadoop 2.0, en realidad un sistema de gestión de recursos)
YARN es un subproyecto de Hadoop (paralelo a MapReduce), en realidad un unificado Sistema de gestión de recursos que puede ejecutar varios marcos informáticos (incluidos MapReduce, Spark, Storm, MPI, etc.) en él.
La versión actual de Hadoop es relativamente confusa, lo que deja a muchos usuarios perdidos. De hecho, actualmente sólo existen dos versiones de Hadoop: Hadoop 1.0 y Hadoop 2.0. Entre ellos, Hadoop 1.0 consta del sistema de archivos distribuido HDFS y el marco informático fuera de línea MapReduce, mientras que Hadoop 2.0 incluye HDFS que admite la expansión horizontal de NameNode, el sistema de gestión de recursos YARN y el marco informático fuera de línea MapReduce que se ejecuta en YARN. En comparación con Hadoop 1.0, Hadoop 2.0 es más potente, tiene mejor escalabilidad y rendimiento y admite múltiples marcos informáticos.
Sistemas como Borg/YARN/Mesos/Torca/Corona pueden construir un ecosistema interno para la empresa, y todas las aplicaciones y servicios pueden ejecutarse en este ecosistema de una manera "pacífica y amigable". Con este tipo de sistema, no tiene que preocuparse por qué versión de Hadoop usar, Hadoop 0.20.2 o Hadoop 1.0, o qué modelo de computación elegir. Se pueden usar varias versiones de software y modelos de computación en una "supercomputadora". correr juntos.
Desde una perspectiva de código abierto, la propuesta de YARN debilita hasta cierto punto el debate sobre los méritos de los marcos de computación múltiple. YARN evolucionó a partir de Hadoop MapReduce. En la era de MapReduce, muchas personas criticaron a MapReduce por no ser adecuado para cálculos iterativos y cálculos de pérdidas. Como resultado, surgieron marcos informáticos como Spark y Storm. Los desarrolladores de estos sistemas compararon MapReduce con MapReduce en sus sitios web o artículos, defendiendo lo avanzado y lo avanzado. eficientes eran sus sistemas. Después de la aparición de YARN, la situación quedó clara: MapReduce es solo una abstracción de aplicación que se ejecuta en YARN, y Spark y Storm son esencialmente lo mismo. Simplemente se desarrollan para diferentes tipos de aplicaciones y cada una tiene sus ventajas y desventajas. Además, al menos, todos los marcos informáticos futuros deberían desarrollarse en YARN. De esta manera, nació un ecosistema con YARN como plataforma de gestión de recursos subyacente y varios marcos informáticos ejecutándose en él.
Actualmente, Spark es un marco de computación de memoria (o computación iterativa, computación DAG) muy popular. Hoy en día, cuando MapReduce es ampliamente criticado por su baja eficiencia, la aparición de Spark no puede evitar hacer que los ojos de todos brillen más.
Desde una perspectiva de arquitectura y aplicación, Spark es una biblioteca de desarrollo que solo contiene lógica informática (aunque proporciona servicios maestro/esclavo que se ejecutan de forma independiente, considerando la estabilidad y la integración con otros tipos de trabajos. Herencia, generalmente no utilizada) , pero no contiene ninguna implementación relacionada con la gestión y programación de recursos, lo que permite que Spark se ejecute de forma flexible en los principales sistemas de gestión de recursos actuales. Los representantes típicos son mesos y Yarn, a los que llamamos "mesos spark". Ejecutar Spark en un sistema de gestión de recursos traerá muchos beneficios, entre ellos: compartir recursos del clúster con otros marcos informáticos, asignar recursos según demanda para mejorar la utilización de los recursos del clúster;
Marcos sobre hilo
Marcos que se ejecutan sobre hilo, incluidos MapReduce-on-yarn, Spark-on-yarn, Storm-on-yarn y Tez-On-YARN.
(1) MapReduce-on-yarn: cálculo sin conexión en hilo
(2) Spark on hilo: cálculo de memoria en hilo
(3) Tormenta en hilo: cálculo de flujo/tiempo real en hilo;
(4)Tez en hilo: cálculo de DAG en hilo.