Modelo de memoria Spark y proceso del plan de ejecución
La memoria de almacenamiento se utiliza para transmitir y almacenar en caché datos:
Memoria de almacenamiento dinámico = (spark.executor.memory-300MB) * spark.memory.fraction * spark.memory.storageFraction
Datos temporales al realizar operaciones aleatorias, unir, ordenar y otras durante la ejecución.
Memoria del montón de ejecución = (spark. executor.memory-300MB) * spark.memory.fraction * (1-spark.memory.storageFraction)
Otros: se utiliza principalmente para almacenar RDD Datos necesarios para las operaciones de conversión. Por ejemplo, dependencias de RDD y otra información:
Memoria reservada: el sistema reserva memoria, que se utilizará para almacenar objetos internos de Spark
Memoria fuera del montón: una es la memoria DirectMemory, el otro es la memoria JVM Overhead. Se utiliza principalmente para bibliotecas compartidas, espacio permanente, pilas de subprocesos y algunas asignaciones de memoria de programas, o para asignar objetos en forma similar a C
Memoria fuera del montón: una es DirectMemory y la otra es JVM Arriba.