Problema de procesamiento paralelo de la optimización del programador de capacidad de hilo

0 Prefacio

El programador predeterminado de Yarn es el programador de capacidad, y solo hay una cola de forma predeterminada. Si no hay suficientes recursos para ejecutar la primera tarea en la cola, la segunda tarea no se ejecutará y esperará hasta que se complete la primera tarea.

1 experimento

(1) Inicie un cliente de Hive y ejecute la siguiente instrucción SQL para insertar datos.

hive (default)> insert into table student values(1,'abc');

Al ejecutar esta declaración, hive inicializará una sesión de Spark para ejecutar hive en tareas de Spark. Dado que la cola no está especificada, la cola predeterminada está ocupada por la sesión de Spark de forma predeterminada , y la cola estará ocupada hasta que se salga del cliente de Hive.

Puede visitar la página web de ResourceManager para ver información relacionada.

(2) Envíe un MR con el cliente de colmena abierto.

[root@hadoop102 ~]$ hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 1 1

La tarea MR tampoco especifica una cola, por lo que también se envía a la cola predeterminada de forma predeterminada, porque el paralelismo de una sola cola del programador de capacidad es 1. Por lo tanto, la tarea de MR enviada más tarde esperará eternamente y no podrá iniciar la ejecución.

La interfaz de envío de tareas es la siguiente:

La página web de ResourceManager es la siguiente:

(3) En la cola predeterminada del programador de capacidad, solo se ejecuta una tarea al mismo tiempo y la concurrencia es baja ¿Cómo resolverlo?

Solución 1: Aumente la proporción de recursos de ApplicationMaster, aumentando así la cantidad de aplicaciones en ejecución.

Solución 2: cree varias colas, como agregar una cola de colmena.

2 Aumentar la proporción de recursos de ApplicationMaster

Para el problema de baja concurrencia del programador de capacidad, considere ajustar el parámetro yarn.scheduler.capacity.maximum-am-resource-percent. El valor predeterminado es 0.1, que indica la proporción máxima de recursos que AM puede usar en el clúster. El propósito es limitar la cantidad de aplicaciones excesivas.

(1) Modifique los siguientes valores de parámetro en el archivo /opt/module/hadoop-3.1.3/etc/Hadoop/capacity-scheduler.xml de hadoop102

[root @ hadoop102 hadoop] $ vim capacidad-programador.xml

<property>

    <name>yarn.scheduler.capacity.maximum-am-resource-percent</name>

    <value>0.5</value>

    <description>

      集群中用于运行应用程序ApplicationMaster的资源比例上限,

该参数通常用于限制处于活动状态的应用程序数目。该参数类型为浮点型,

默认是0.1,表示10%。所有队列的ApplicationMaster资源比例上限可通过参数

yarn.scheduler.capacity.maximum-am-resource-percent设置,而单个队列可通过参数yarn.scheduler.capacity.<queue-path>.maximum-am-resource-percent设置适合自己的值。

    </description>

  </property

(2) Distribuya el archivo de configuración Capacity-Scheduler.xml

[root@hadoop102 hadoop]$ xsync capacity-scheduler.xml

(3) Cierre la tarea en ejecución y reinicie el grupo de hilos.

[root@hadoop103 hadoop-3.1.3]$ sbin/stop-yarn.sh

[root@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh

4 Aumente la cola del programador de capacidad de Yarn

Solución 2: La creación de varias colas también puede aumentar la simultaneidad del programador de capacidad.

Cómo configurar múltiples colas en la empresa:

Cree colas de colmena, chispa, flink de acuerdo con el motor de cálculo

Cree colas según el negocio: realizar pedidos, pagar, dar me gusta, comentar, favoritos (usuarios, actividades, descuentos relacionados)

¿Cuál es el beneficio?

Si la empresa llega a un novato y escribe un bucle recursivo, los recursos del clúster de la empresa se agotan y el big data se paraliza.

Desacoplamiento.

Si la cantidad de datos en 11.11 es muy grande y hay muchas tareas, si todas las tareas están involucradas en la ejecución, no deben ejecutarse. ¿Qué debo hacer?

Puede soportar un funcionamiento degradado.

Orden √

       Pago√

              Como X

1 Aumente la cola del programador de capacidad

(1) Modificar el archivo de configuración del programador de capacidad

En la configuración predeterminada de Yarn, el programador de capacidad tiene solo una cola predeterminada. Puede configurar varias colas en capacity-Scheduler.xml, modificar los siguientes atributos y agregar colas de colmena.

<property>

    <name>yarn.scheduler.capacity.root.queues</name>

    <value>default,hive</value>

    <description>

     再增加一个hive队列

    </description>

</property>


<property>

    <name>yarn.scheduler.capacity.root.default.capacity</name>

<value>50</value>

    <description>

      default队列的容量为50%

    </description>

</property>

同时为新加队列添加必要属性:

<property>

    <name>yarn.scheduler.capacity.root.hive.capacity</name>

<value>50</value>

    <description>

      hive队列的容量为50%

    </description>

</property>


<property>

    <name>yarn.scheduler.capacity.root.hive.user-limit-factor</name>

<value>1</value>

    <description>

      一个用户最多能够获取该队列资源容量的比例,取值0-1

    </description>

</property>


<property>

    <name>yarn.scheduler.capacity.root.hive.maximum-capacity</name>

<value>80</value>

    <description>

      hive队列的最大容量(自己队列资源不够,可以使用其他队列资源上限)

    </description>

</property>


<property>

    <name>yarn.scheduler.capacity.root.hive.state</name>

    <value>RUNNING</value>

    <description>

      开启hive队列运行,不设置队列不能使用

    </description>

</property>


<property>

    <name>yarn.scheduler.capacity.root.hive.acl_submit_applications</name>

<value>*</value>

    <description>

      访问控制,控制谁可以将任务提交到该队列,*表示任何人

    </description>

</property>


<property>

    <name>yarn.scheduler.capacity.root.hive.acl_administer_queue</name>

<value>*</value>

    <description>

      访问控制,控制谁可以管理(包括提交和取消)该队列的任务,*表示任何人

    </description>

</property>


<property>

    <name>yarn.scheduler.capacity.root.hive.acl_application_max_priority</name>

<value>*</value>

<description>

      指定哪个用户可以提交配置任务优先级

    </description>

</property>


<property>

    <name>yarn.scheduler.capacity.root.hive.maximum-application-lifetime</name>

<value>-1</value>

    <description>

      hive队列中任务的最大生命时长,以秒为单位。任何小于或等于零的值将被视为禁用。

</description>

</property>

<property>

    <name>yarn.scheduler.capacity.root.hive.default-application-lifetime</name>

<value>-1</value>

    <description>

      hive队列中任务的默认生命时长,以秒为单位。任何小于或等于零的值将被视为禁用。

</description>

</property>

(2) Distribuir archivos de configuración

[root@hadoop102 ~]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/capacity-scheduler.xml

(3) Reinicie el clúster de Hadoop

2 Pruebe la nueva cola

(1) Envíe una tarea de MR y especifique la cola como colmena

[root @ hadoop102 ~] $ hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi -Dmapreduce.job.queuename = hive 1 1

(2) Vea la página web ResourceManager y observe la cola a la que se envía la tarea

Supongo que te gusta

Origin blog.csdn.net/godlovedaniel/article/details/108583602
Recomendado
Clasificación