hadoop apache-spark yarn resourcemanager

Apache Hadoop Yarn-Subutilización de núcleos



apache-spark resourcemanager (2)

El problema no radica en yarn-site.xml o spark-defaults.conf sino en la calculadora de recursos que asigna los núcleos a los ejecutores o, en el caso de los trabajos MapReduce, a los Mappers / Reductores.

La calculadora de recursos predeterminada, es decir, org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator utiliza solo información de memoria para asignar contenedores y la programación de la CPU no está habilitada de forma predeterminada. Para usar tanto la memoria como la CPU, la calculadora de recursos debe cambiarse a org.apache.hadoop.yarn.util.resource.DominantResourceCalculator en el archivo capacity-scheduler.xml .

Esto es lo que necesita cambiar.

<property> <name>yarn.scheduler.capacity.resource-calculator</name> <value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value> </property>

No importa cuánto trabajo con la configuración en yarn-site.xml es decir, utilizando todas las opciones a continuación.

yarn.scheduler.minimum-allocation-vcores yarn.nodemanager.resource.memory-mb yarn.nodemanager.resource.cpu-vcores yarn.scheduler.maximum-allocation-mb yarn.scheduler.maximum-allocation-vcores

Todavía no puedo obtener mi aplicación, es decir, Spark para utilizar todos los núcleos del clúster. Los ejecutores de la chispa parecen estar ocupando correctamente toda la memoria disponible, pero cada ejecutor sigue tomando un solo núcleo y no más.

Estas son las opciones configuradas en spark-defaults.conf

spark.executor.cores 3 spark.executor.memory 5100m spark.yarn.executor.memoryOverhead 800 spark.driver.memory 2g spark.yarn.driver.memoryOverhead 400 spark.executor.instances 28 spark.reducer.maxMbInFlight 120 spark.shuffle.file.buffer.kb 200

Tenga en cuenta que spark.executor.cores se establece en 3, pero no funciona. ¿Cómo puedo solucionar esto?


Tuve el mismo tipo de problema y desde mi código estaba configurando el spark.executor.cores as 5 . A pesar de que solo estaba tomando 1, que es el núcleo por defecto. En la interfaz de usuario de la chispa y en la pestaña de entorno estaba viendo 5 núcleos. Pero mientras revisaba las pestañas de los ejecutores, solo pude ver que 1 proceso está en estado EN EJECUCIÓN contra un ejecutor. Yo estaba usando la versión de chispa 1.6.3 .

Entonces, he intentado golpear el comando spark-submit como --conf spark.executor.cores=5 que funciona bien ya que usa 5 núcleos

o solo

--executor-cores 5 que también funciona.