Habla sobre esas cosas de Hadoop

Los blogs orientados a la entrevista se presentan en estilo Q / A.


Pregunta 1: ¿Presentar brevemente a Hadoop?

Respuesta 1:

Hadoop es una solución de big data. Proporciona una infraestructura de sistema distribuido. Su contenido principal incluye hdfs y mapreduce (Anexo: hadoop2.0 se introduce en yarn, y la versión estable y disponible ha sido Hadoop3.0)

hdfs se usa para proporcionar almacenamiento de datos, y mapreduce se usa para facilitar el cálculo de datos.

  1. hdfs también corresponde a namenode y datanode, donde namenode es responsable de guardar la información básica de los metadatos, y datanode almacena directamente los datos en sí;
  2. mapreduce corresponde a jobtracker y tasktracker, donde jobtracker es responsable de distribuir tareas y tasktracker es responsable de realizar tareas específicas;
  3. En correspondencia con la arquitectura maestro / esclavo, namenode y jobtracker deben corresponder al maestro, datanode y tasktracker deben corresponder al esclavo. Ya se trate de hdfs o mapreduce, se confirma que los nodos maestro y esclavo sobreviven de forma instantánea.

Pregunta 2: ¿Una breve introducción a HDFS?

Answer2 :

Diagrama de arquitectura HDFS, como se muestra a continuación:

En HDFS, NameNode y Secondary NameNode son Masters, y todos los Datanodes son Slaves.

Inserte la descripción de la imagen aquí
1 、 Cliente

El cliente (que representa al usuario) accede a los archivos en HDFS al interactuar con NameNode y DataNode. El cliente proporciona una interfaz de sistema de archivos similar a POSIX para que los usuarios llamen.

2 、 NameNode

Función: responsable de administrar el árbol de directorios HDFS y la información de metadatos de archivos relacionados.

Solo hay un NameNode en todo el clúster de Hadoop. Es el "maestro" de todo el sistema y es responsable de administrar el árbol de directorios HDFS y la información de metadatos de los archivos relacionados. Esta información se almacena en el disco local en forma de "fsimage" (archivo de imagen de metadatos HDFS) y "editlog" (registro de cambio de archivo HDFS), y se reconstruye cuando se reinicia HDFS. Además, el NameNode también es responsable de monitorear el estado de cada DataNode. Una vez que un DataNode está inactivo, el DataNode se mueve fuera de HDFS y los datos en él se respaldan nuevamente.

3 、 Nombre de nodo secundario

Función: fusiona regularmente fsimage y edita registros y transfiérelos a NameNode.

La tarea más importante de NameNode secundario no es realizar una copia de seguridad en caliente para los metadatos de NameNode, sino fusionar periódicamente fsimage y editar registros y transferirlos a NameNode. Cabe señalar aquí que para reducir la presión sobre el NameNode, el NameNode no combinará fsimage y ediciones y almacenará los archivos en el disco, pero lo hará el Secondary NameNode.

4, DataNode

Función: responsable del almacenamiento de datos real e informar regularmente la información de datos a NameNode.

En términos generales, cada nodo esclavo se instala con un DataNode, que es responsable del almacenamiento de datos real e informa regularmente la información de datos al NameNode. DataNode organiza el contenido del archivo con un bloque de tamaño fijo como unidad básica. De forma predeterminada, el tamaño del bloque es de 64 MB. Cuando un usuario carga un archivo grande en HDFS, el archivo se dividirá en varios bloques y se almacenará en diferentes DataNodes. Al mismo tiempo, para garantizar datos confiables, el mismo bloque se escribirá en varios bloques de forma canalizada (predeterminado Sí 3, este parámetro se puede configurar) en diferentes DataNodes. Este proceso de almacenamiento de archivos después del corte es transparente para los usuarios.


Pregunta 3: ¿Presentar brevemente MapReduce?

Answer3 :

Hadoop MapReduce utiliza la arquitectura Maestro / Esclavo (M / S), como se muestra en la figura.

En Map Reduce, JobTracker es Master y todos los TaskTracker son Slave.

Inserte la descripción de la imagen aquí

MapReduce se compone principalmente de los siguientes componentes: Cliente, JobTracker, TaskTracker y Task. A continuación se describen estos componentes por separado.

1 、 Cliente

El programa MapReduce escrito por el usuario se envía al JobTracker a través del Cliente; al mismo tiempo, el usuario puede ver el estado de ejecución del trabajo a través de algunas interfaces proporcionadas por el Cliente.

Dentro de Hadoop, un "trabajo" (Job) se utiliza para representar un programa MapReduce. Un programa MapReduce puede corresponder a varios trabajos (Trabajo), y cada trabajo (Trabajo) se descompondrá en varias tareas de Mapa / Reducir (Tarea).

2 、 JobTracker

JobTracker es el principal responsable del monitoreo de recursos y la programación de trabajos. JobTracker monitorea el estado de salud de todos los TaskTrackers y trabajos. Una vez que se encuentra una falla, transferirá la tarea correspondiente a otros nodos; al mismo tiempo, JobTracker rastreará el progreso de la ejecución de la tarea, el uso de recursos y otra información, e informará al programador de tareas , Y el planificador seleccionará la tarea adecuada para usar estos recursos cuando los recursos estén inactivos.

En Hadoop, el programador de tareas es un módulo conectable, y los usuarios pueden diseñar el programador correspondiente según sus necesidades.

3 、 TaskTracker

TaskTracker informará periódicamente el uso de los recursos en el nodo y el progreso de la tarea a JobTracker a través de Heartbeat, y al mismo tiempo recibirá los comandos enviados por JobTracker y realizará las operaciones correspondientes (como comenzar una nueva tarea, eliminar la tarea, etc.).

TaskTracker utiliza "ranura" para dividir la cantidad de recursos en este nodo. "Ranura" significa recursos informáticos (CPU, memoria, etc.). Una tarea tiene la posibilidad de ejecutarse después de obtener un espacio, y la función del planificador de Hadoop es asignar espacios inactivos en cada TaskTracker a la tarea. Las ranuras se dividen en dos tipos: ranura de mapa y ranura de reducción, que son utilizadas por MapTask y la tarea de reducción, respectivamente.

De esta manera, TaskTracker limita la concurrencia de Task por el número de slots (parámetros configurables).

4 、 Tarea

La tarea se divide en dos tipos: tarea de mapa y tarea de reducción, ambas iniciadas por TaskTracker.

En comparación con HDFS, que almacena datos en bloques de tamaño fijo, la unidad de procesamiento de MapReduce está dividida. Dividir es un concepto lógico, solo contiene información de metadatos, como la posición inicial de los datos, la longitud de los datos y el nodo donde se encuentran los datos. Su método de división es completamente decidido por el usuario.

Pero debe tenerse en cuenta que la cantidad de divisiones determina la cantidad de Tareas de mapas, porque cada división será manejada por una Tarea de mapas.

5. Proceso de ejecución de tareas de mapeo

El proceso de ejecución de la tarea de mapa se muestra en la figura:

Inserte la descripción de la imagen aquí

Como se puede ver en la figura, la tarea de mapa primero analiza la iteración dividida correspondiente en pares clave / valor, y luego llama a la función map () definida por el usuario para el procesamiento, y luego los datos temporales se dividen en varias particiones (cada partición será un Reduzca el procesamiento de tareas) y finalmente almacene los resultados temporales en el disco local.

6. Reduce el proceso de ejecución de tareas

En el diagrama de flujo de ejecución de Tarea de mapa anterior, el paso intermedio es que los datos temporales se dividen en varias particiones. De hecho, cada partición será procesada por una Tarea de reducción, entonces, ¿cómo la maneja la Tarea de reducción?

El proceso de implementación de Reduce Task se divide en tres etapas:

  1. Lea los resultados intermedios de MapTask desde un nodo remoto (llamado "Etapa aleatoria");
  2. Ordenar pares clave / valor por clave (llamado "Ordenar etapa");
  3. Lea <clave, lista de valores> a su vez, llame a la función reduce () definida por el usuario para procesar, y almacene el resultado final en HDFS (llamado "Etapa de reducción").

Pregunta 4: ¿Hablar sobre el ciclo de vida de los trabajos de Hadoop MapReduce?

Answer4 :

Paso 1: envío de trabajos e inicialización

Envío del trabajo: después de que el usuario envía el trabajo (es decir, Trabajo), la instancia de JobClient primero carga la información relacionada con el trabajo, como el paquete jar del programa, el archivo de configuración del trabajo y el archivo de metainformación de particiones, al sistema de archivos distribuido (generalmente HDFS). Entre ellos, el archivo de metainformación del fragmento registra la información de ubicación lógica de cada fragmento de entrada. Entonces JobClient notifica a JobTracker a través de RPC (es decir, llamada de procedimiento de Romote, llamada de procedimiento remoto).

Inicialización del trabajo: después de que JobTracker recibe una nueva solicitud de envío de trabajo, el módulo de programación del trabajo inicializa el trabajo: crea un objeto JobInProgress para que el trabajo rastree el estado del trabajo, y JobInProgress crea un objeto TaskInProgress para cada tarea para rastrear cada tarea TaskInProgress puede necesitar administrar múltiples "Intentos de ejecución de tareas" (llamado "Intento de tareas").

Paso 2: programación y monitoreo de tareas

Dado que JobTracker completa las funciones de programación y monitoreo de tareas, TaskTracker informa periódicamente el uso de recursos de este nodo a JobTracker a través de Heartbeat. Una vez que aparecen los recursos inactivos, JobTracker seleccionará una tarea adecuada para usar los recursos inactivos de acuerdo con una determinada estrategia. Completado por el planificador de tareas. El programador de tareas es un módulo independiente conectable y tiene una arquitectura de dos capas, es decir, el trabajo (es decir, Trabajo) se selecciona primero, y luego la tarea (es decir, Tarea) se selecciona del trabajo (Trabajo). Entre ellos, la selección de tareas debe considerarse Localidad de datos.

Además, JobTracker rastrea todo el proceso de ejecución del trabajo y ofrece una garantía integral para la operación exitosa del trabajo. Primero, cuando el TaskTracker o Task falla, se transfiere la tarea de cálculo.

Paso 3: preparar el entorno de ejecución de la tarea

La preparación del entorno operativo incluye el inicio de JVM y el aislamiento de recursos, todo implementado por TaskTracker.

Inicio de JVM: TaskTracker inicia una JVM independiente para cada tarea para evitar que diferentes tareas se afecten entre sí durante la operación;
aislamiento de recursos: TaskTracker utiliza procesos del sistema operativo para lograr el aislamiento de recursos para evitar que la tarea abuse de los recursos.

Paso 4: ejecución de la tarea

Después de que TaskTracker prepara el entorno de ejecución para Task, iniciará Task. Durante la operación, la tarea informa primero el progreso más reciente de cada tarea al TaskTracker a través de RPC, y luego el TaskTracker lo informa al JobTracker.

Paso 5: Tarea completada

Después de ejecutar todas las tareas, todo el trabajo (es decir, Trabajo) se ejecuta con éxito.


Pregunta 5: ¿Una breve introducción a Yarn?

Answer5 :

YARN es un marco para la gestión de recursos y la programación de tareas. Incluye principalmente tres módulos: ResourceManager (RM), NodeManager (NM) y ApplicationMaster (AM). Entre ellos, ResourceManager es responsable del monitoreo, asignación y administración de todos los recursos; NodeManager es responsable del mantenimiento de cada nodo; ApplicationMaster es responsable de la programación y coordinación de cada aplicación específica.

Para todas las aplicaciones, RM tiene control absoluto y asignación de recursos. Cada AM negociará recursos con RM y se comunicará con NodeManager para ejecutar y monitorear tareas.

La relación entre varios módulos se muestra en la figura.

Inserte la descripción de la imagen aquí

Para la explicación de la figura anterior: las
dos solicitudes de instancia de cliente Cliente a la izquierda, una roja y otra azul.
La primera línea, MapReduce Status, indica el estado del MapReduce actual. Cada aplicación contiene un nodo maestro AM. Dado que la figura muestra que se están procesando dos aplicaciones, los tres contenedores de Contenedores rojos estarán procesando MapReduce El estado se pasa al nodo maestro de la aplicación AM roja, y el contenedor de Contenedor azul también pasa el estado actual de MapReduce al nodo maestro de la aplicación AM azul.
La segunda línea de envío de trabajos indica el envío de trabajos, lo que significa que los dos clientes de la izquierda envían el trabajo a RM.
La tercera línea Estado del nodo representa el estado del nodo. El NodeManager es responsable del mantenimiento de cada nodo. Los tres NodeManagers envían la información del estado del nodo al RM Global Resource Manager.
La cuarta línea, Solicitud de recursos, significa realizar acciones de solicitud de recursos En la figura, dos AM realizan solicitudes de recursos a RM para sus propias aplicaciones.

Pregunta 1: ¿Hay alguna inclusión, yuxtaposición u otra relación entre AM y NM?
Respuesta 1: No existe una relación entre AM y NM. AM corresponde a una aplicación. Una aplicación contiene un AM. NM corresponde a un nodo interno Yarn. Un nodo interno necesita un NM para mantenerlo.
Pregunta 2: ¿Cuál es la relación entre AM y RM? ¿Cuál es la relación entre NM y RM?
Respuesta 2: Debido a que AM corresponde a una aplicación, naturalmente enviará una solicitud de recurso de Solicitud de recursos a RM para solicitar recursos para la aplicación; dado que NM corresponde a un nodo interno, naturalmente informará la información de estado del nodo Estado del nodo a RM.

Módulo ResourceManager

  1. Significado de RM: ResourceManager es responsable de la administración y asignación de recursos de todo el clúster y es un sistema global de administración de recursos.
  2. RM y NM: NodeManager informa el uso de recursos a ResourceManager en forma de latido (actualmente principalmente uso de CPU y memoria). RM solo acepta la información de devolución de recursos de NM, y el procesamiento de recursos específicos se deja a NM para manejar.
  3. RM y AM: YARN Scheduler asigna recursos de acuerdo con las solicitudes de la aplicación, y no es responsable de la supervisión del trabajo de la aplicación, el seguimiento, la retroalimentación del estado de ejecución, el inicio, etc.

Módulo NodeManager

  1. Significado de NM: NodeManager es el administrador de recursos y tareas en cada nodo, es el agente que administra esta máquina, es responsable del funcionamiento del programa del nodo y de la administración y monitoreo de los recursos del nodo. Cada nodo en el clúster YARN ejecuta un NodeManager.
  2. NM y RM: El NodeManager informa regularmente al ResourceManager sobre el uso de los recursos del nodo (CPU, memoria) y el estado de ejecución del Contenedor. Cuando ResourceManager se cae, NodeManager se conecta automáticamente al nodo en espera de RM.
  3. NM y AM: NodeManager recibe y procesa varias solicitudes, como el inicio y la detención de contenedores desde ApplicationMaster.

Módulo ApplicationMaster

  1. Significado de AM: cada aplicación enviada por el usuario contiene un ApplicationMaster, que puede ejecutarse en una máquina que no sea ResourceManager.
  2. AM y RM: responsable de negociar con el planificador de RM para obtener recursos (denotado por Container).
  3. AM y NM: comuníquese con NM para iniciar / detener tareas.
  4. Tarea AM y Tarea: La tarea se asignará a tareas internas (asignación de recursos secundarios).
  5. Tarea AM y Tarea: Supervise el estado de ejecución de todas las tareas y vuelva a aplicar recursos para que la tarea reinicie la tarea cuando la tarea falla.

Nota: RM solo es responsable de monitorear AM e iniciarlo cuando AM falla. RM no es responsable de la tolerancia a fallos de las tareas internas de AM. AM completa la tolerancia a fallos de las tareas.


Pregunta 6: ¿Cuál es el proceso de operación de YARN?

Answer6 :

  1. El cliente envía el programa de aplicación al RM, incluida la información necesaria del ApplicationMaster que inicia la aplicación, como el programa ApplicationMaster, el comando para iniciar el ApplicationMaster y el programa del usuario.
  2. ResourceManager inicia un contenedor para ejecutar ApplicationMaster.
  3. El ApplicationMaster inicial se registra con el ResourceManager y mantiene un latido con el RM después de que el inicio sea exitoso.
  4. ApplicationMaster envía una solicitud a ResourceManager para solicitar el número correspondiente de contenedores.
  5. ResourceManager devuelve la información del contenedor de la aplicación ApplicationMaster.
    ApplicationMaster inicializa los contenedores aplicados correctamente. Después de que se inicializa la información de inicio del contenedor, el AM se comunica con el NodeManager correspondiente y solicita al NM que inicie el contenedor. AM y NM mantienen latidos para monitorear y administrar las tareas que se ejecutan en NM.
  6. Mientras se ejecuta el contenedor, ApplicationMaster monitorea el contenedor. El contenedor informa su progreso y estado al AM correspondiente a través del protocolo RPC.
  7. Mientras se ejecuta la aplicación, el cliente se comunica directamente con AM para obtener información como el estado de la aplicación y las actualizaciones de progreso.
  8. Una vez que se ejecuta la aplicación, ApplicationMaster se desconecta del ResourceManager y permite que se recupere el contenedor que le pertenece.

Pregunta 7: ¿Explica brevemente la diferencia entre Hadoop2 y Hadoop3?

Inserte la descripción de la imagen aquí

Answer7 :

Las 22 diferencias entre hadoop2.X y hadoop3.X son las siguientes:

1. Licencia

adoop 2.x-Apache 2.0, código abierto
Hadoop 3.x-Apache 2.0, código abierto

2. La versión mínima de Java compatible

Hadoop 2.x: la versión mínima admitida de java es java 7
Hadoop 3.x: la versión mínima admitida de java es java 8

3. Tolerancia a fallos

Hadoop 2.x: puede manejar la tolerancia a fallas copiando (desperdiciando espacio).
La codificación Hadoop 3.x-Erasure puede manejar la tolerancia a fallas.

4. Balance de datos

Hadoop 2.x-Para datos, balancee usando el balanceador HDFS.
Hadoop 3.x-Para datos, el equilibrio utiliza el equilibrador de nodos de datos internos, que se llama a través de la CLI del equilibrador de disco HDFS.

5. Esquema de la tienda

Hadoop 2.x-Use 3X copy Scheme
Hadoop 3.x-Admite codificación de borrado en HDFS.

6. Almacenamiento de gastos generales

Hadoop 2.x-HDFS tiene una sobrecarga del 200% en el espacio de almacenamiento.
La sobrecarga de Hadoop 3.x-Storage es solo del 50%.

7. Ejemplo de gastos generales de almacenamiento

Hadoop 2.x: si hay 6 bloques, 18 bloques ocuparán espacio debido al esquema de copia (Scheme).
Hadoop 3.x: si hay 6 bloques, habrá 9 espacios de bloques, 6 bloques y 3 bloques para la paridad.

8. Servicio de línea de tiempo de YARN

Hadoop 2.x: utiliza servicios de línea de tiempo antiguos con problemas de escalabilidad.
Hadoop 3.x: mejore el servicio de línea de tiempo v2 y aumente la escalabilidad y la confiabilidad del servicio de línea de tiempo.

9. Rango de puertos predeterminado

Hadoop 2.x-En Hadoop 2.0, algunos puertos predeterminados son rangos de puertos temporales de Linux. Por lo tanto, al inicio, no podrán vincularse.
Hadoop 3.x-Pero en Hadoop 3.0, estos puertos se han movido fuera del rango a corto plazo.

10. herramientas

Hadoop 2.x-Use Hive, pig, Tez, Hama, Giraph y otras herramientas de Hadoop.
Se pueden utilizar Hadoop 3.x-Hive, pig, Tez, Hama, Giraph y otras herramientas de Hadoop.

11. Sistema de archivos compatible

Hadoop 2.x-HDFS (FS predeterminado), sistema de archivos FTP: almacena todos los datos en un servidor FTP de acceso remoto. Sistema de archivos Amazon S3 (Simple Storage Service) Sistema de archivos Windows Azure Storage Blob (WASB).
Hadoop 3.x-Es compatible con todos los sistemas de archivos frontales y de Microsoft Azure Data Lake.

12. Recursos del nodo de datos

Los recursos de Hadoop 2.x-Datanode no están dedicados a MapReduce, podemos usarlo para otras aplicaciones.
Hadoop 3.x: los recursos del nodo de datos aquí también se pueden usar para otras aplicaciones.

13.Compatibilidad API de MR

Hadoop 2.x-MR API compatible con programas Hadoop 1.x, puede ejecutar
Hadoop 3.x en Hadoop 2.X -Aquí, MR API es compatible con la ejecución de programas Hadoop 1.x para Hadoop 3.X Ejecutar

14. Soporta Microsoft Windows

Hadoop 2.x-Se puede implementar en Windows.
Hadoop 3.x-También es compatible con Microsoft Windows.

15. Ranura / Contenedor

Hadoop 2.x-Hadoop 1 se aplica al concepto de ranuras, pero Hadoop 2.X se aplica al concepto de contenedores. A través del contenedor, podemos ejecutar tareas comunes.
Hadoop 3.x-También se aplica al concepto de contenedores.

16. Punto único de falla

Hadoop 2.x-tiene función SPOF, por lo que siempre que Namenode falle, se recuperará automáticamente.
Hadoop 3.x-tiene la función SPOF, por lo que siempre que Namenode falle, se recuperará automáticamente y podrá superarse sin intervención humana.

17. Alianza HDFS

Hadoop 2.x-En Hadoop 1.0, solo hay un NameNode para administrar todos los espacios de nombres, pero en Hadoop 2.0, se usan múltiples NameNodes para múltiples espacios de nombres.
Hadoop 3.x-Hadoop 3.x también tiene múltiples espacios de nombres para múltiples espacios de nombres.

18. Escalabilidad

Hadoop 2.x: podemos escalar a 10.000 nodos por clúster.
Hadoop 3.x-Mejor escalabilidad. Podemos escalar más de 10,000 nodos para cada clúster.

19. Acceda a los datos más rápido

Hadoop 2.x-Debido a la caché del nodo de datos, podemos acceder rápidamente a los datos.
Hadoop 3.x-Aquí también podemos acceder rápidamente a los datos a través del caché de Datanode.

20. instantánea de HDFS

Hadoop 2.x-Hadoop 2 agrega soporte para instantáneas. Proporciona recuperación ante desastres y protección contra errores del usuario.
Hadoop 3.x-Hadoop 2 también admite la función de instantánea.

21. plataforma

Hadoop 2.x: se puede usar como plataforma para diversos análisis de datos, puede ejecutar procesamiento de eventos, transmisión de medios y operaciones en tiempo real.
Hadoop 3.x-Aquí también puede ejecutar procesamiento de eventos, transmisión de medios y operaciones en tiempo real además de YARN.

22. Gestión de recursos del clúster

Hadoop 2.x-Para la gestión de recursos del clúster, utiliza YARN. Mejora la escalabilidad, la alta disponibilidad y la tenencia múltiple.
Hadoop 3.x-Para los clústeres, la gestión de recursos utiliza YARN con todas las funciones.

207 artículos originales publicados · 80 elogiados · 120,000 visitas

Supongo que te gusta

Origin blog.csdn.net/qq_36963950/article/details/105336055
Recomendado
Clasificación