Red de conocimiento informático - Conocimiento informático - Cómo resolver el problema de que Shuffle Write debe escribir en el disco

Cómo resolver el problema de que Shuffle Write debe escribir en el disco

En Spark 0.6 y 0.7, los resultados de Shuffle deben almacenarse primero en la memoria (y también pueden escribirse en el disco), por lo que para grandes volúmenes de datos, la probabilidad de GC y OOM es muy alta. Por lo tanto, en Spark 0.8, cada registro de Shuffle se escribe directamente en el disco y se genera un archivo separado para cada tarea posterior. Esto resuelve el problema de que los registros aleatorios deben almacenarse en la memoria, pero también trae otro problema: se generan demasiados archivos pequeños, especialmente cuando la cantidad de datos en cada archivo no es grande pero el archivo es particularmente grande, una gran cantidad de lecturas aleatorias La recuperación puede tener un gran impacto en el rendimiento. Para resolver los problemas introducidos en Spark 0.8.1, Spark 0.8.1 introdujo el mecanismo FileConsolidation, que resolvió el problema hasta cierto punto. Se puede ver que el mecanismo de barajado basado en el valor hash tiene limitaciones en términos de escalabilidad. El Shuffle Pluggable Framework introducido en Spark 1.0 sienta las bases para agregar nuevos mecanismos Shuffle e introducir mecanismos Shuffle de terceros. En Spark 1.1, se introdujo Shuffle basado en clasificación; en Spark 1.2.0, Shuffle basado en clasificación se ha convertido en la opción predeterminada para Shuffle. Sin embargo, a medida que los costos de la memoria continúan cayendo y la capacidad continúa aumentando, ¿Spark Core reanudará la colocación de todos los procesos Shuffle en la memoria en el futuro? Creo que esto es poco probable e innecesario, pero si el usuario tiene requisitos de alto rendimiento y el proceso Shuffle es de hecho el foco de la optimización del rendimiento, pruebe una de las siguientes implementaciones:

1) Nodo trabajador Utilice SSD

2) Los resultados de Woker's Shuffle se guardan en RAMDisk

3) Implemente su propio mecanismo Shuffle de acuerdo con sus propios escenarios de aplicación

4) Los resultados de Woker's Shuffle se guardan al disco RAM