Resumen de hilo de aprendizaje

Referencia:
https://www.jianshu.com/p/f50e85bdb9ce
https://blog.csdn.net/qq_39142369/article/details/89530653
https://www.cnblogs.com/listenfwind/p/10234112.html
HTTPS : //segmentfault.com/a/1190000018775822

tener conocidos HILO

Apache Hadoop HILO gestión de recursos y tecnología de la programación de trabajo de código abierto distribuido Hadoop marco procesamiento. Como uno de los componentes básicos de Apache Hadoop, hilado responsable de la asignación de recursos del sistema para ejecutar una variedad de aplicaciones en el cluster Hadoop, y la programación de las tareas a realizar en diferentes nodos del clúster.

HILO La idea básica es la de la gestión de recursos y la planificación de tareas / funciones de vigilancia en demonio separado (demonio), que tiene una ResourceManager mundial (RM) y cada aplicación ApplicationMaster (AM). La aplicación puede ser un solo puesto de trabajo, el trabajo puede ser un DAG.

ResourceManager datos y el marco de cálculo constituidos NodeManager. El arbitraje es la final de los recursos autoridad ResourceManager entre todas las aplicaciones en el sistema. NodeManager cada bastidor de la máquina es un corredor de los contenedores, supervisar el uso de recursos (CPU, memoria, disco, red) e informó a la ResourceManager.

Cada ApplicationMaster aplicación es en realidad un marco para la biblioteca específica, cuya tarea consiste en coordinar los recursos de ResourceManager y realizar tareas de vigilancia y con NodeManager.

En la arquitectura del hilo, ResourceManager ejecutarse como un demonio, como la arquitectura de la función global de la maestra, que generalmente se ejecuta en un ordenador dedicado recursos del clúster que entre las distintas aplicaciones de la competencia de arbitraje disponibles.
ResourceManager un seguimiento del número de nodos del clúster activos y los recursos disponibles y coordinar la solicitud presentada por los usuarios, así como eventos que debe obtenerse recursos. ResourceManager proceso individual con esta información, que puede ser compartida, de manera segura multi-inquilino y decisiones de planificación (por ejemplo, basándose en la prioridad de aplicación, capacidad de la cola, ACL, datos de posición, etc.).

Cuando el usuario envía la solicitud para iniciar una instancia llamada ApplicationMaster proceso ligero para coordinar la aplicación de todas las tareas ejecutadas. Esto incluye el seguimiento de tareas, reiniciar una tarea fallida, el valor total de las tareas especulativamente de baja velocidad, y el cálculo de las aplicaciones mostrador. ApplicationMaster y tareas dentro de sus aplicaciones que se ejecutan en el control NodeManagers contenedores de recursos.

Hay muchos recursos recipiente NodeManager crean dinámicamente. Tamaño del recipiente depende de la cantidad de recursos que contiene, como la memoria, CPU, disco y red de IO. Actualmente, sólo la memoria y la CPU.

ApplicationMaster puede ejecutar cualquier tipo de tarea en el contenedor. Por ejemplo, un mapa MapReduce ApplicationMaster o reducir la solicitud para iniciar el contenedor de tareas, y el contenedor Giraph ApplicationMaster corren solicitud de tarea Giraph. También puede ejecutar tareas específicas implementan encargo ApplicationMaster

Además, el hilo por ReservationSystem apoyan el concepto de reserva de recursos, ReservationSystem permite a los perfiles de usuario para especificar el tiempo y de recursos de tiempo (por ejemplo, la fecha de vencimiento), y los recursos reservados para asegurar predecible realizar trabajos importantes. ReservationSystem puede realizar un seguimiento de tiempo de espera de recursos, control de admisión de ejecución reservada, y los procedimientos de programación dinámica para garantizar la instrucciones básicas para reservar completa.

componentes de servicio HILO básica

Es una estructura maestro / esclavo HILO En general, todo el marco de la gestión de recursos, ResourceManager de dominar, NodeManager es un esclavo.

Hilados de estructuras básicas, compuesto principalmente HILO ResourceManager, NodeManager, ApplicationMaster Container y varios otros componentes.

  • ResourceManager es un proceso separado ejecutando en el Maestro, a cargo de la agrupación unificada de gestión de recursos, programación, distribución y así sucesivamente;
  • NodeManager es un proceso independiente que se ejecuta en el esclavo, es responsable de informar sobre el estado de los nodos;
  • ApplicationMaster equivalente a la aplicación de los guardianes y gerentes, responsables de controlar y gestionar todas las aplicaciones de este intento específico que se ejecuta en cada nodo del clúster, que también es responsable de aplicar los recursos del hilado, ResourceManager retorno de los recursos;
  • Container es una unidad de asignación de recursos en el hilo, la memoria oso, recursos de la CPU, etc., hilados de asignar recursos en unidades de recipiente;

ResourceManager responsable de la gestión de recursos diversos NadeManager unificado y la programación. Cuando un usuario envía una aplicación necesita para proporcionar una ApplicationMaster para controlar y administrar el programa, que es responsable de aplicar los recursos ResourceManager, y requieren NodeManger iniciar la tarea puede tomar hasta algunos recursos. Desde diferente ApplicationMaster se distribuyen a los diferentes nodos, que no afectará a la otra entre las mismas.

Las solicitudes presentadas a la ResourceManager cliente debe tener un ApplicationMaster, después de que asigna recursos ResourceManager, ejecute un determinado nodo esclavo de contenedores, realiza determinadas tareas, también ejecuta un contenedor con un nodo esclavo.

Administrador de recursos

RM es un administrador de recursos global, solo grupo, todo el sistema se encarga de la asignación de recursos y la gestión, incluyendo el manejo de las solicitudes del cliente, iniciar / monitoreo ApplicationMaster, monitoreo NodeManager, asignación y programación de recursos. Se compone principalmente de dos componentes: un planificador (Scheduler) y el Administrador de aplicaciones (Applications Manager, ASM).

  • Planificador
    El planificador (por ejemplo, asignado algunos recursos para cada cola, una cierta cantidad de trabajo realizado hasta similares), los recursos del sistema asignados a cada aplicación se está ejecutando de acuerdo con la capacidad, haciendo cola limitaciones. Cabe señalar que el planificador es un "planificador pura", que no se involucra en cualquier trabajo relacionado con aplicaciones específicas, tales como no responsables de controlar o hacer un seguimiento del estado de ejecución de la aplicación, etc., y no es reinicio responsable porque la aplicación no se pudo o tareas fallidas derivados de un fallo de hardware, estas aplicaciones se refieren a la ApplicationMaster relevante completado.

Sólo un planificador de la asignación de recursos de acuerdo con las necesidades de recursos de cada aplicación, y una unidad de asignación de recursos utilizando abstracción "contenedor de recursos" (Recurso de contenedores, se hace referencia Container) representa, recipiente es una unidades de asignación dinámica de recursos, lo hará de memoria, CPU, disco , y otros recursos de red empaquetados juntos, definiendo de este modo la cantidad de recursos utilizados por cada tarea.

Además, Scheduler es un componente enchufable, el usuario puede diseñar nuevo Scheduler, hilado proporciona planificador múltiple puede ser utilizado directamente en función de sus necesidades, como programador de reparto justo Capacidad Scheduler y similares.

  • Application Manager
    Application Manager se encarga de gestionar todas las aplicaciones en todo el sistema, presentar una solicitud para recibir el trabajo, la primera asignación para la aplicación se ejecute de contenedores ApplicationMaster, incluyendo las solicitudes presentadas, en consulta con el planificador de recursos para iniciar ApplicationMaster, el seguimiento ApplicationMaster estado de funcionamiento y reiniciarlo y así en caso de fallo.

ApplicationMaster

Cada instancia de una aplicación de administración que se ejecuta dentro del hilo. Acerca de trabajo o de gestión de aplicaciones es la responsabilidad del proceso ApplicationMaster, Hilados nos permite pensar que su ApplicationMaster desarrollo de aplicaciones.

características:

数据切分;
为应用程序申请资源并进一步分配给内部任务(TASK);
任务监控与容错;
负责协调来自ResourceManager的资源,并通过NodeManager监视容器的执行和资源使用情况。

Podemos decir que la comunicación entre el ApplicationMaster y ResourceManager toda hilo desde la presentación de la aplicación a la pieza de la base de la operación es la gestión dinámica de recursos fundamental paso del hilado por todo el clúster, Yarn dinámico, se deriva de múltiples Aplicación de ApplicationMaster dinámico y ResourceManager para comunicar, seguir aplicando, liberación, y luego aplicar, a continuación, liberar recursos de proceso.

NodeManager

NodeManager toda racimo tienen un uso más responsable de los recursos y en cada nodo.

NodeManager es un servicio de esclavo: es responsable de la solicitud de asignación de recursos recibida ResourceManager, la distribución de contenedores específicos para la aplicación. También es responsable de supervisar e informar a la información del envase usando ResourceManager. Por ResourceManager y la cooperación, NodeManager responsable del trabajo de la asignación de recursos de todo el clúster Hadoop.
Cada NodeManager están asociados con cada uno de los correspondientes DataNode hilado
características: uso de los recursos y el estado de funcionamiento de cada uno del nodo NodeManager Container (CPU y recursos de memoria)

接收及处理来自 ResourceManager 的命令请求,分配 Container 给应用的某个任务;
定时地向RM汇报以确保整个集群平稳运行,RM 通过收集每个 NodeManager 的报告信息来追踪整个集群健康状态的,而 NodeManager 负责监控自身的健康状态;
处理来自 ApplicationMaster 的请求;
管理着所在节点每个 Container 的生命周期;
管理每个节点上的日志;
执行 Yarn 上面应用的一些额外的服务,比如 MapReduce 的 shuffle 过程;

Cuando un nodo se inicia, se registrará en el ResourceManager e informar al ResourceManager sí mismo cómo están disponibles muchos recursos. En tiempo de ejecución, colaboran a través NodeManager y ResourceManager, esta información seguirá siendo actualizado y para proteger todo el clúster jugar el mejor.

NodeManager única responsable de gestionar su propio contenedor, que no conoce la información en él para ejecutar la aplicación. Componente responsable de la gestión de información de la aplicación ApplicationMaster

Envase

Contenedor es la abstracción del hilo recursos, unidad de bastidor de hilo se calcula, para ejecutar una tarea de aplicación específica (como mapa de tareas, reducir la tarea) es una unidad básica que encapsula los recursos multidimensionales en un nodo, como la memoria, CPU, disco , redes, etc., cuando los recursos de la aplicación AM a RM, RM recursos para el retorno de AM está representado por Container. HILO un contenedor será asignado para cada tarea, y la tarea sólo puede utilizar los recursos del recipiente descrito.

relaciones recipiente y nodos de clúster son: un nodo que ejecuta múltiples Container, pero no se cruzarán un nodo Container. Cualquier trabajo o aplicación debe ejecutarse en uno o más de los recipientes, el marco del hilado, ResourceManager sólo es responsable de lo que puede decir Contenedores ApplicationMaster, ApplicationMaster también necesitan encontrar solicitud NodeManager para asignar una específica de contenedores.

Tenga en cuenta que, de contenedores es un recurso dinámico unidades de partición, bajo demanda aplicaciones generan dinámicamente. Hasta el momento, el hilo sólo es compatible con la CPU (auditoría) y la memoria (MB) y los recursos, y el uso de los recursos ligero mecanismo de aislamiento de aislamiento de recursos cgroups.

características:

对task环境的抽象;
描述一系列信息;
任务运行资源的集合(cpu、内存、io等);
任务运行环境

proceso de envío de aplicación de hilos

la ejecución de aplicaciones de hilo en todo el proceso de ejecución se puede resumir en tres pasos:

应用程序提交
启动应用的ApplicationMaster实例
ApplicationMaster 实例管理应用程序的执行

proceso de presentación específica:

  1. ResourceManager aplicación cliente y petición de presentar un ejemplo ApplicationMaster;
  2. ResourceManager encontrar una NodeManager ejecutar un contenedor y empezar ApplicationMaster en este caso el recipiente;
  3. ApplicationMaster ResourceManager a ser registrada, a continuación, registrar el cliente puede consultar sus propios detalles ApplicationMaster ResourceManager del futuro y su propia ApplicationMaster puede interactuar directamente con el (esta vez, el cliente activa y el intercambio ApplicationMaster, la aplicación envía un Xianxiang ApplicationMaster satisfacer sus propias necesidades de recursos de la solicitud);
  4. Durante el funcionamiento normal de, ApplicationMaster petición de transmisión al recurso-petición ResourceManager El recurso-petición de protocolo;
  5. Cuando el recipiente se asigna con éxito, ApplicationMaster mediante el envío de un contenedor de información al lanzamiento de especificación a NodeManager para iniciar Container, información del contenedor-lanzamiento-especificación contiene Contenedores y ApplicationMaster permiten el intercambio de información necesaria;
  6. código de la aplicación se ejecute en la forma de la tarea para iniciar el contenedor, y el progreso de la operación, la información de estado se envía a través del protocolo ApplicationMaster específica de la aplicación;
  7. Durante la aplicación se está ejecutando, la aplicación cliente presentado por el final de la iniciativa y conseguir que ApplicationMaster la ejecución de aplicaciones de CA de estado, actualizaciones de progreso y otros datos, protocolos de comunicación son el protocolo específico de la aplicación;
  8. Una vez que la solicitud está completa y ejecutar todo el trabajo se ha completado, anular el registro ApplicationMaster y cierre ResourceManager, utilizar todo el contenedor han vuelto al sistema.

versión simplificada:

  • Aplicación cliente sometido a hilado, aquí suponemos es un trabajo MapReduce.

  • ResourceManager a la comunicación NodeManager, un recipiente dispensador para una primera aplicación. Y ejecutar la aplicación en un ApplicationMaster correspondiente de este contenedor.

  • Después ApplicationMaster iniciar el trabajo (es decir Aplicación) dividir, dividir a cabo la tarea, la tarea puede ejecutarse en uno o más contenedores. Para aplicar el contenedor a la ResourceManager ejecute el programa, y ​​envía periódicamente un latido del corazón a la ResourceManager.

  • Después de la aplicación al recipiente, ApplicationMaster irá y contenedores comunicaciones NodeManager correspondiente, y será distribuido a trabajar en el contenedor correspondiente para ejecutar NodeManager, MapReduce después de la división será distribuido aquí, el contenedor correspondiente puede estar ejecutando la tarea Mapa, puede ser Reducir tarea.

  • Tarea en ejecución en el contenedor enviará un latido del corazón a ApplicationMaster, informar de su situación. Cuando finalice el programa en ejecución, ApplicationMaster cancelación de nuevo ResourceManager y liberar el recurso contenedor.

Solicitud de Recursos 及 de contenedores

objetivo del diseño del hilado es permitir que nuestras aplicaciones a la acción, y multi-arrendatario de seguridad utilizado en la forma de todo el clúster. Y, con el fin de garantizar la eficiencia de la programación de recursos de clúster y los datos de acceso, hilado debe ser capaz de percibir toda la topología de clúster.

Para lograr estos objetivos, ResourceManager programador programador define el protocolo flexible para la aplicación de las solicitudes de recursos, se puede hacer una mejor programación de las distintas aplicaciones que se ejecutan en el clúster a través de él, por lo tanto, que nació y de petición de recurso contenedor.

La aplicación de un Xianxiang ApplicationMaster satisfacer sus necesidades para enviar una solicitud de recursos, y esta solicitud de recursos ApplicationMaster enviado como recurso solicitud a la parte posterior ResourceManager Scheduler, programador en este recurso-solicitud original a la descripción de recursos asignada de contenedores.

Cada ResourceRequest puede ser visto como una secuencia de objetos de Java, que comprende los siguientes campos de información:
<nombre-recurso, la prioridad, de Recursos-Requisito, número-de-Contenedores>

  • nombre-recurso: nombre de recurso, se refiere a una etapa en la que el recurso de host y la cremallera, este último también pueden soportar una máquina virtual o un más complejas estructuras de red
  • recursos prioritarios: la prioridad
  • recursos-requisito: requisitos específicos de recursos, en esta etapa la cantidad de necesidades de memoria y CPU
  • número de contenedores: Contenedor de satisfacer las necesidades establecer
    resultados asignación de recursos ApplicationMaster. Contenedor tiene licencia para el número de aplicaciones en una CPU y la memoria de la máquina del nodo se puede utilizar.
    ApplicationMaster Después de obtener estos contenedores, también necesitan interactuar con la distribución NodeManager en la máquina Contenedor de por dónde empezar y ejecutar tareas relacionadas. la distribución de contenedores es, por supuesto, requiere autenticación para evitar ApplicationMaster sí mismos para solicitar un recurso agrupado.

Configuración HILO

a). perfil HILO archivo modificado

etc / hadoop / mapred-site.xml:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

etc / hadoop / hilo-site.xml:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

. B) y comenzar ResourceManager NodeManager sbin / start-yarn.sh, parada sbin RM y el NM / stop-yarn.sh
C) Verificación: JPS pueden ser comprobados por si el comando para iniciar HILO
D) con el fin de HILO paquete frasco manera. presentando el paquete de trabajo es formato example.jar tarro asumida:
Hadoop jar jar nombre de paquete del nombre de la aplicación ruta de salida ruta de entrada
ejemplo:
tarro Hadoop example.jar wordccount /input/hello.txt /output/helloCount.txt

administrador de recursos será el punto único de fallo, el tiempo que necesitan para su uso ha de lograr una alta disponibilidad.

Resource Scheduler

Actualmente, Hadoop planificador de tareas no son tres: FIFO, Programador y Programador Feria de capacidad. Hadoop2.7.2 planificador de recursos por defecto es la capacidad Programador. El ajuste Ver: Archivo de hilo default.xml:

<property>
    <description>The class to use as the resource scheduler.</description>
    <name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>

Planificador FIFO (FIFO)

FIFO es el planificador de Hadoop por defecto, también es un programador de lotes. Es el primer acuerdo con el nivel de prioridad del trabajo, y luego seleccionar de acuerdo con el orden de trabajo de la hora de llegada se ejecuta. FIFO, sin tener en cuenta las prioridades de trabajo y posibilidades de clúster de carga baja.

Capacidad Scheduler (Capacidad Scheduler)

Soporte para múltiples colas, cada uno se puede configurar una cierta cantidad de recursos, cada estrategia cola FIFO, compartir recursos con el fin de evitar que el planificador de tareas presentará el mismo usuario con recursos exclusivos cola de trabajos de un usuario, límite. Programación, por la primera política para seleccionar una cola adecuada: cálculo del número de tareas que se ejecutan en cada cola es la relación entre su cuota de los recursos debe ser calculada, la selección de una relación mínima de la cola, y luego seguir las estrategias de colas un puesto de trabajo: selección de prioridad y envíe la tarea de tiempo de la orden, teniendo en cuenta las limitaciones de recursos y límite de memoria de usuario.

Programador de reparto justo (Scheduler Fair)

Con el planificador potencia de cálculo similares, soporte para multi-usuario multi-cola, la cantidad de recursos cada cola se puede configurar en la misma cola, la feria de trabajo compartido cola de todos los recursos. La feria de recursos dará aplicaciones ida, así que todas las aplicaciones comparten los mismos recursos que el tiempo para llegar en el caso promedio.

ejecución especulativa de tareas

1) el tiempo de finalización del trabajo depende del tiempo de finalización de la tarea más lenta

Un trabajo consiste en una serie de tareas Mapa y reducir las tareas. A causa de envejecimiento de hardware, error de software, etc., algunas tareas pueden funcionar muy lentamente.

caso típico: el sistema tiene el 99% de las tareas mapa se completó, y sólo unos pocos Mapa es siempre muy lento progreso, final, cómo hacerlo?

2) mecanismos de ejecución especulativa:

tareas de arrastre de descubrimiento, como una tarea se ejecuta mucho más lenta que la velocidad media de la tarea. Iniciar una tarea de copia de seguridad para tareas de arrastre que se ejecutan simultáneamente. El que se agote, que está utilizando los resultados.

3) Requisitos previos para realizar tareas especulación

(1) Cada tarea puede tener sólo una tarea de copia de seguridad;

(2) el trabajo actual se ha completado la tarea no debe ser inferior a 0,05 (5%)

(3) abiertos ajustes de los parámetros de ejecución especulativa. Hadoop2.7.2 archivo-site.xml mapred está activado por defecto.

<property>
  <name>mapreduce.map.speculative</name>
  <value>true</value>
  <description>If true, then multiple instances of some map tasks
               may be executed in parallel.</description>
</property>
<property>
  <name>mapreduce.reduce.speculative</name>
  <value>true</value>
  <description>If true, then multiple instances of some reduce tasks
               may be executed in parallel.</description>
</property>

4) No se puede habilitar la ejecución especulativa caso mecanismo
existe una inclinación de carga seria entre (1) la tarea;
(2) tareas especiales, como tarea a los datos de escritura en la base de datos.
mecanismo de ejecución especulativa es en realidad un clásico de los algoritmos de optimización: espacio de tiempo, también comenzó el mismo múltiplo de datos encargar a la misma, y hacer estas tareas la competencia con el fin de acortar el tiempo de procesamiento de datos. Obviamente, este enfoque requiere más recursos de computación. En la escasez de recursos de clúster, debe ser razonable utilizar este mecanismo, en el caso de una de múltiples peleas con una pequeña cantidad de los recursos, reducir el tiempo de cálculo de trabajo.

¿Por qué la apariencia de hilo

causa directa de la misma, debido a defectos Hadoop1.0 en la arquitectura, en el MapReduce, JobTracker toman demasiada responsabilidad, la tarea es para recibirlo, es la programación de recursos, el seguimiento o la operación de TaskTracker ella. Los beneficios de esta implementación es relativamente simple, pero relativamente, es propenso a algunos problemas, como el único punto común de fallo.
Para resolver estos problemas, sólo puede ser dividida JobTracker, el desmantelamiento a cabo algunas de estas características. Ese tiempo la industria ha sido una parte del marco de gestión de recursos, tales como mesos, brillando lo que esta idea, hemos desarrollado un hilo. Aquí decir un conocimiento frío, de hecho, es promover mesos Spark primeros producidos, que también es el origen de su nombre, pero más tarde todos modos Spark fuego hacia arriba. . .
Tanto chisme que, de hecho, Hadoop puede tener hoy en esta posición, hilado se puede decir que ser negado. A causa de Hilados, el acceso al marco más computing puede hdfs en, no sólo MapReduce, y ahora todos sabemos, MapReduce estar ya superado chispa y otra plataforma de computación, mientras que los HDF aún en pie. La razón es porque Hilados incluido formal, por lo que otra plataforma de computación para centrarse en mejorar el rendimiento del equipo. Hdfs pueden no ser los mejores sistemas de almacenamiento de datos de gran tamaño, pero son los sistemas de almacenamiento de datos de gran tamaño más ampliamente utilizados, Hilados contribuyó.

Supongo que te gusta

Origin www.cnblogs.com/lllliuxiaoxia/p/12486523.html
Recomendado
Clasificación