spark retainedjobs jars deploy defaultcores cores apache-spark yarn

apache-spark - retainedjobs - spark local ip



el spark.yarn.driver.memoryOverhead o spark.yarn.executor.memoryOverhead se usa para almacenar qué tipo de datos? (1)

En la terminología YARN, los ejecutores y los maestros de aplicación se ejecutan dentro de "contenedores". Spark ofrece propiedades específicas del hilo para que pueda ejecutar su aplicación:

  • spark.yarn.executor.memoryOverhead es la cantidad de memoria sin almacenamiento (en megabytes) que se asignará por ejecutor. Esta es la memoria que da cuenta de cosas como gastos generales de VM, cadenas internas, otros gastos indirectos nativos, etc. Esto tiende a crecer con el tamaño del ejecutor (típicamente 6-10%).
  • spark.yarn.driver.memoryOverhead es la cantidad de memoria de almacenamiento dinámico (en megabytes) que se asignará por controlador en el modo de clúster con las propiedades de la memoria como la memoria de ejecución del ejecutor.

Por lo tanto, no se trata de almacenar datos, solo se trata de los recursos necesarios para que YARN funcione correctamente.

En algunos casos,

por ejemplo, si habilita la dynamicAllocation es posible que desee establecer estas propiedades explícitamente junto con el número máximo de ejecutores ( spark.dynamicAllocation.maxExecutors ) que se pueden crear durante el proceso, lo que puede abrumar fácilmente a YARN pidiendo miles de ejecutores y perdiendo así el Ejecutando ejecutores.

El aumento del número objetivo de ejecutores se produce en respuesta a tareas atrasadas que esperan ser programadas. Si la cola del planificador no se vacía en N segundos, se agregarán nuevos ejecutores. Si la cola persiste durante otros M segundos, se agregarán más ejecutores y así sucesivamente. El número agregado en cada ronda aumenta exponencialmente desde la ronda anterior hasta que se alcanza un límite superior. El límite superior se basa tanto en una propiedad configurada como en el número actual de tareas en ejecución y pendientes, como se describió anteriormente.

Esto puede conducir a un aumento exponencial del número de ejecutores en algunos casos que pueden romper el administrador de recursos YARN. En mi caso :

16/03/31 07:15:44 INFO ExecutorAllocationManager: Requesting 8000 new executors because tasks are backlogged (new desired total will be 40000)

Esto no cubre todo el caso de uso que uno puede usar esas propiedades, pero da una idea general de cómo se ha usado.

Me preguntaba eso:

  • chispa use spark.yarn.driver.memoryOverhead o spark.yarn.executor.memoryOverhead para almacenar qué tipo de datos?
  • Y en cuyo caso debería aumentar el valor de spark.yarn.driver.memoryOverhead o spark.yarn.executor.memoryOverhead?