Cómo mejorar la utilización de trabajos en Spark, basado en YARN o Kubernetes.
Estoy trabajando en mejorar la utilización del clúster, y el clúster es YARN y será Kubernetes.
Mi pregunta es cómo mejorar la proporción de utilización.
¿Cómo abordar esta pregunta, existen algunos métodos?
¿Para YARN y para Kubernetes?
Para YARN, he leído algunos artículos o visto algunos videos.
YARN tiene NM y RM.
-
Sobresuscripción basada en datos históricos de ejecución de trabajos. (https://databricks.com/session/oversubscribing-apache-spark-resource-usage-for-fun-and)
a. establecer una MEMORIA adecuada (5G) y CPU para el trabajo
b. establecer un búfer para el trabajo (1G)
c. realizar preempción activamente en NM -
Sobresuscripción basada en la utilización en tiempo real. (https://research.facebook.com/publications/ubis-utilization-aware-cluster-scheduling)
a. no modificar la configuración del trabajo
b. monitorear la utilización y asignación de NM, hacer sobresuscripción en el nodo
c. realizar preempción activamente en NM -
Sobresuscripción de recursos de NM
a. NM tiene 100G y 30 núcleos físicos, pero se anuncian 120G y 40 núcleos.
b. la preempción es manejada por Spark o el marco de trabajo de YARN.
davy.ai
Para Kubernetes, algunos métodos para mejorar la utilización del clúster son:
En general, mejorar la utilización del clúster involucra una combinación de monitoreo, autoscalado y optimizaciones específicas de la carga de trabajo. Los diferentes métodos pueden ser más o menos efectivos dependiendo de los requisitos y características específicas de la carga de trabajo y el clúster.