¿De qué se trata YARN?
Modelo de programación YARN
1: para garantizar la compatibilidad con versiones anteriores del modelo de programación, MRv2 reutiliza el modelo de programación y el motor de procesamiento de datos de MRv1, pero el entorno de ejecución se reescribe.
2: Modelo de programación y motor de procesamiento de datos
Hay dos conjuntos de interfaces de programación de aplicaciones mapreduce: nueva API (mapred) y API antigua (mapreduce)
Los programas escritos con la antigua API MRv1 se pueden ejecutar directamente en MRv2
Los programas escritos con la nueva API MRv1 deben volver a compilarse utilizando la biblioteca de programación MRv2 y modificar los parámetros y valores de retorno incompatibles
3 : Entorno de ejecución
MRv1: Jobracker y Tasktracker
MRv2: YARN y ApplicationMaster
Composición de YARN
yarn Se compone principalmente de varios componentes como ResourceManager, NodeManager, ApplicationMaster y Container.
ResourceManager (RM)
RM es un administrador de recursos global, responsable de la gestión y asignación de recursos de todo el sistema.
Compuesto principalmente por dos componentes: programador y administrador de aplicaciones (ASM)
Programador
El programador se basa en la capacidad, la cola y otras restricciones, asigna recursos en el sistema a cada aplicación en ejecución
No es responsable del trabajo específico relacionado con la aplicación, como el monitoreo o el seguimiento del estado
No es responsable de reiniciar tareas fallidas
La asignación de recursos la unidad está representada por el contenedor de recursos "contenedor de recursos"
El contenedor es una unidad de asignación dinámica de recursos que encapsula memoria, CPU, disco, red y otros recursos juntos para limitar la cantidad de recursos de cada tarea
El programador es un componente conectable que los usuarios pueden diseñar ellos mismos
YARN proporciona una variedad de programadores disponibles directamente, como el Programador justo y el Programador de capacidad.
Administrador de aplicaciones
Responsable de administrar todas las aplicaciones en todo el sistema
ApplicationMaster (AM)
Cada aplicación enviada por el usuario Cada el programa contiene un AM
Las funciones principales de AM
Negociar con el programador RM para obtener recursos (representado por Contenedor)
Asignar aún más las tareas obtenidas a Interno tareas
Comunicarse con NM para detener/detener tareas automáticamente
Supervisar el estado de ejecución de todas las tareas y volver a aplicar recursos para que la tarea se reinicie cuando la tarea falle
Actualmente, YARN viene con dos implementaciones de AM
Uno es el shell distribuido, un programa de ejemplo usado para demostrar los métodos de escritura de AM
Uno se usa para el programa Mapreduce---MRAppMaster
Se está desarrollando el AM correspondiente a otros marcos informáticos, como Spark, etc.
Nodemanager (NM) y Container
NM es el administrador de recursos y tareas en cada nodo
Informa periódicamente el uso de recursos en este nodo a RM y el estado en ejecución. estado de cada contenedor
Recibir y procesar varias solicitudes de AM para iniciar/detener contenedores
El contenedor es una abstracción de recursos en YARN, que encapsula los recursos multidimensionales
YARN asignará un Contenedor a cada tarea, y la tarea solo puede usar los recursos descritos en el Contenedor
El contenedor es diferente de la ranura de MRv1, es una unidad dinámica de división de recursos que se genera dinámicamente según las necesidades de la aplicación
YARN se compone principalmente de los siguientes protocolos
ApplicationClientProtocol
Jobclient envía solicitudes a través de este protocolo RPC Programa, consulta el estado de la solicitud, etc.
ResourceManagerAdministrationProtocol
El administrador actualiza los archivos de configuración del sistema a través de este protocolo, como la lista negra de nodos, permisos de cola de usuarios, etc.
ApplicationMasterProtocol
AM quiere registrarse y cancelarse con RM a través de este protocolo RPC y solicitar recursos para cada tarea
ContainerManagementProtocol
AM pasa Requiere que NM inicie o detenga contenedores, obtenga el estado de uso de cada contenedor y otra información
ResourceTracker
NM se registra con RM a través del protocolo RPC y envía periódicamente información de latidos para informar el uso de recursos de la situación actual y el estado de ejecución del contenedor
Flujo de trabajo YARN
Describe este proceso en texto:
1: Se envía una solicitud. por el cliente y aceptado por la solicitud de solicitud de ASM de RM
Qué incluye la solicitud enviada:
a:ApplicationMaster
b:Comando para iniciar Applicationmaster
p>c: El contenido de su propia aplicación
2: Envíe tres partes del contenido a RM, luego RM encuentra NodeManager y luego
Nodemanager habilita Applicationmaster y asigna Contenedor
A continuación tenemos que ejecutar esta tarea,
3: Pero ejecutar la tarea requiere recursos, por lo que tenemos que solicitar recursos al ASM de RM para ejecutar la tarea (se registrará con RM y decir que lo comencé Después del registro, puede administrarlo a través de RM. Nuestros usuarios también pueden monitorear el estado de las tareas a través del cliente web de RM) ASM solo es responsable de habilitar APplicationMaster
4: :Después de registrarnos, debe solicitar recursos. La solicitud de recursos se realiza a través del cuarto paso, solicitar a ResourceScheduler
5: Después de solicitar y recibir los recursos, encontrará a Nodemanager y le dirá que los tengo. lo solicitó, y luego Nodemanager emitirá un juicio
6: Después de saber que lo ha solicitado, se iniciará la tarea y se preparará el entorno antes de comenzar. >7: Una vez iniciada la tarea, se comunicará con APplicationmaster y continuará la tarea con un informe de latido.
8: Una vez completado, informaremos a RM y dejaremos que RSM cancele el registro. Luego, RSM recuperará los recursos. Por supuesto, estamos distribuidos, por lo que no solo nos comunicaremos con nuestro propio Nodemanager. También se comunicará con otros nodos.