Por qué sus aplicaciones Spark son lentas o no funcionan en absoluto. Parte 1: gestión de la memoria

Invitamos a los futuros estudiantes del curso "Ecosystem Hadoop, Spark, Hive" al seminario web abierto sobre el tema "Spark Streaming" . En el seminario web, los participantes, junto con un experto, se familiarizarán con Spark Streaming y Structured Streaming, estudiarán sus características y escribirán una aplicación de procesamiento de flujo simple.



Y ahora compartimos contigo la traducción tradicional de material útil.






Las aplicaciones Spark son fáciles de escribir y fáciles de entender cuando todo va según el plan. Sin embargo, esto se vuelve muy difícil cuando las aplicaciones de Spark comienzan a iniciarse lentamente o fallan. A veces, una aplicación bien ajustada puede fallar debido a cambios en los datos o cambios en la composición de los datos. A veces, una aplicación que ha funcionado bien hasta ahora comienza a comportarse mal por falta de recursos. La lista sigue y sigue.





Spark, , , , .., , .





, Spark . — .





Spark , (OOM) , .  , Spark . OOM:





  • Spark





  • (high concurrency)













, Spark . , , OOM, , - OOM.  Spark . OOM, . 





, . .





Spark — JVM (Java Virtual Machine) , . OutOfMemory



— OOM ( - Spark. Spark — . . , . , .





, OutOfMemory



OOM ( ) , :





  • rdd.collect()







  • sparkContext.broadcast



     





  • ,





  • Spark.sql.autoBroadcastJoinThreshold



    .





Spark . , . .





, . . , , , , .





SQL (Structured Query Language) Spark, OOM -   , , ; "spark.sql.autoBroadcastJoinThreshold



" ( ) , . 





Spark, . — ,   . .









, OOM, , Spark .





Spark , . , , , .. map-stage ( SQL), , , .





, ORC (Optimized Row Columnar)  2000 , map-stage 2000 , ,   . reduce-stage ( Shuffle), Spark "spark.default.parallelism



" RDD (Resilient Distributed Dataset), "spark.sql.shuffle.partitions



" DataSet ( ). , "spark.executor.cores



". ,   OOM ( ). , , , , OOM.





, (map) SQL HDFS ( Hadoop distributed file system) Parquet/ORC. HDFS Spark 128 .  , 10 , 128*10 . , .





Spark Parquet ( ) . , Spark Parquet . Parquet , .  . , Spark . , , , , . .





Spark tareas y componentes de memoria durante el escaneo de tablas
Spark

, , . , (broadcast join), (broadcast variables) . , .









Spark's Catalyst , , . , Parquet/ORC. , . , .





. , , . . () , .









Spark. .









. , -. spark.executor.memory



spark.driver.memory



.  , . . Unravel (Unravel Data Operations Platform) .









, YARN (Yet Another Resource Negotiator — ), OOM (killed) - YARN. "YARN kill" :





YARN Spark, . — off-heap , JVM , JVM. spark.yarn.executor.memoryOverhead



. 10% .









Spark , Spark. Spark , . , , .





Spark : . , , - , . .





,   (  — 300). "spark.memory.fraction



". — 60%. 50% ( "spark.memory.storageFraction



") .





, , , , . , , . , , , , , .





, , "spark.memory.storageFraction



" , .





Spark , , . . () () GC (Garbage Collector), . .





. , , . , . , , .





Spark YARN, NodeManager ( ) , . NodeManager 1 . , , - , NodeManager . NodeManager, .





№1,

Spark — . , Spark . Spark . , . , , .





, Spark. , Unravel , , , . -, Unravel . Spark.





, Spark : , , , , Spark.






« Hadoop, Spark, Hive».



«Spark Streaming».












All Articles