Ajuste de memoria Spark
¿Podría alguien indicarme cómo podemos ajustar los núcleos del ejecutor de Spark, la memoria y el número de ejecutores? Todos los documentos que he leído al respecto se derivan del lado del clúster (https://spoddutur.github.io/spark-notes/distributionofexecutorscoresandmemoryforsparkapplication.html). Pero me gustaría saber cómo podemos ajustar estos parámetros relacionados con un archivo de entrada específico.
Por ejemplo, no quiero usar los mismos parámetros para 1 GB que para 250 GB en el mismo clúster.
davy.ai
Para afinar el núcleo de executor, la memoria y el número de executors de Spark para un archivo de entrada específico, siga estos pasos:
Basado en el tamaño del archivo de entrada, decida el número de executors que desea asignar a la aplicación de Spark. Esto se puede calcular utilizando la fórmula mencionada en el documento al que hizo referencia anteriormente:
total_number_of_executors = (total_memory_requested_per_application / executor_memory_overhead)
. Asegúrese de considerar las demás aplicaciones que se ejecutan en el clúster y los recursos disponibles.Una vez que tenga el número de executors, puede calcular la memoria del executor según el tamaño del archivo de entrada. Como regla general, se recomienda asignar 5-6GB de memoria por executor. Esto puede aumentarse o disminuirse según el tamaño del archivo de entrada y los recursos disponibles.
Por último, establezca el número de núcleos por executor según las características del archivo de entrada, como el número de particiones o tareas. Puede usar la propiedad de configuración
spark.sql.shuffle.partitions
para controlar el número de particiones para las operaciones de shuffle.En resumen, puede afinar el núcleo de executor, la memoria y el número de executors de Spark para un archivo de entrada específico considerando su tamaño, características, recursos disponibles y otras aplicaciones que se ejecutan en el clúster. Utilice las fórmulas y recomendaciones mencionadas en los documentos como punto de partida y ajústelas según su caso de uso específico.