java - programacion - Comprensión y ajuste del contenedor de hilo
manual de programacion android pdf (1)
Hola, hemos actualizado recientemente a hilo de mr1. Sé que el contenedor es una noción abstracta, pero no entiendo cuántas tareas de jvm (mapa, reducir, filtrar, etc.) puede generar un contenedor u otra forma de preguntar si el contenedor se puede reutilizar en un mapa múltiple o reducir tareas. Leí en el siguiente blog: ¿Qué es un contenedor en HILO?
"each mapper and reducer runs on its own container to be accurate!"
lo que significa que si miro los registros de AM, debería ver el número de contenedores asignados igual al número de tareas del mapa (fallido | éxito) más el número de tareas de reducción ¿es correcto?
Sé la cantidad de cambios de contenedores durante el ciclo de vida de la aplicación, según las solicitudes de AM, las divisiones, el programador, etc.
Pero, ¿hay alguna manera de solicitar el número inicial de contenedor mínimo para la aplicación determinada? Creo que una forma es configurar la cola del programador justo. Pero, ¿hay algo más que pueda dictar esto?
En el caso de MR, si tengo mapreduce.map.memory.mb = 3gb
y mapreduce.map.cpu.vcores=4
. También tengo yarn.scheduler.minimum-allocation-mb = 1024m
y yarn.scheduler.minimum-allocation-vcores = 1
.
¿Eso significa que obtendré un contenedor con 4 núcleos o 4 contenedores con un núcleo?
Tampoco está claro dónde se puede especificar mapreduce.map.memory.mb
y mapreduce.map.cpu.vcores
. ¿Deben establecerse en el nodo del cliente o también pueden establecerse por aplicación?
También desde RM UI o AM UI, ¿hay alguna manera de ver los contenedores actualmente asignados para una aplicación determinada?
- El contenedor es una entidad lógica. Concede una aplicación para usar una cantidad específica de recursos (memoria, CPU, etc.) en un host específico (Administrador de nodo). Un contenedor no puede reutilizarse en el mapa y reducir tareas para la misma aplicación.
Por ejemplo, tengo una aplicación Mapreduce, que genera 10 mapeadores:
Estoy ejecutando esto en un solo host con 8 vCores (este valor está determinado por el parámetro de configuración: yarn.nodemanager.resource.cpu-vcores ). Por defecto, esto está configurado a 8. Por favor, marque "YarnConfiguration.java"
/** Number of Virtual CPU Cores which can be allocated for containers.*/
public static final String NM_VCORES = NM_PREFIX + "resource.cpu-vcores";
public static final int DEFAULT_NM_VCORES = 8;
Como hay 10 mapeadores y 1 maestro de aplicaciones, la cantidad total de contenedores generados es 11.
Entonces, para cada tarea de mapa / reducir se lanza un contenedor diferente.
Pero, en Yarn, para los trabajos de MapReduce, existe un concepto de trabajo Uber, que permite al usuario usar un solo contenedor para múltiples mapeadores y un reductor ( https://hadoop.apache.org/docs/r2.4.1/ hadoop-yarn / hadoop-yarn-common / yarn-default.xml : ACTUALMENTE, EL CÓDIGO NO PUEDE APOYAR MÁS DE UNA REDUCCIÓN e ignorará los valores más grandes).
No hay un parámetro de configuración disponible para especificar el número mínimo de contenedores. Es responsabilidad del Application Master solicitar la cantidad de contenedores necesarios.
yarn.scheduler.minimum-allocation-mb - Determina la asignación mínima de memoria para cada contenedor ( yarn.scheduler.maximum-allocation-mb determina la asignación máxima para cada solicitud de contenedor)
yarn.scheduler.minimum-allocation-vcores : determina la asignación mínima de vCores para cada contenedor ( yarn.scheduler.maximum-allocation-vcores determina la asignación máxima para cada solicitud de contenedor)
En su caso, está solicitando " mapreduce.map.memory.mb = 3m (3MB) y mapreduce.map.cpu.vcores = 4 (4 vCores).
Por lo tanto, obtendrá 1 contenedor con 4 vCores para cada asignador (suponiendo que yarn.scheduler.maximum-allocation-vcores es> = 4)
Los parámetros "mapreduce.map.memory.mb" y "mapreduce.map.cpu.vcores" se establecen en el archivo mapred-site.xml. Si este parámetro de configuración no es "final", puede anularse en el cliente antes de enviar el trabajo.
Sí. Desde la página "Intento de solicitud" para la aplicación, puede ver la cantidad de contenedores asignados. Verifique la figura adjunta arriba.