Allocazione dinamica Spark e streaming strutturato Spark
La funzione di allocazione dinamica Spark fa parte di Spark e del relativo codice sorgente. Data Flow aiuta il lavoro di tale algoritmo fatturando e pianificando correttamente le risorse monitorando i segnali di Spark.
- Sotto
spark.dynamicAllocation, che è l'algoritmo ufficiale, ed è documentato. Sebbene sia stato progettato per i job batch, questo algoritmo è compatibile con lo streaming strutturato batch e Spark. Non compatibile con lo streaming Spark. - Sotto
spark.streaming.dynamicAllocation, che è non ufficiale. Qui, l'allocazione dinamica è progettata per lo streaming Spark. Disabilitarespark.dynamicAllocationquando si utilizzaspark.streaming.dynamicAllocation. - Nessuna implementazione è stata progettata in modo specifico per lo streaming strutturato Spark. La richiesta della funzione Spark è: SPARK-24815.
Sebbene spark.dynamicAllocation.enabled possa essere utilizzato con lo streaming strutturato Spark, non è progettato per i pattern di job di streaming e funziona male per determinate applicazioni. spark.dynamicAllocation.enabled monitora la coda dei job e prende decisioni di ridimensionamento in base alla coda, ma non considera la natura dello streaming, ad esempio la cadenza dei trigger, la cadenza dei task e il tempo medio di esecuzione dei task. È possibile che l'allocazione aritmica o la disallocazione siano eccessive. Modificando i valori dei timeout spark.dynamicAllocation, è possibile eseguire il tuning per le applicazioni di streaming.
Ulteriori informazioni sull'implementazione di spark.dynamicAllocation sono disponibili nei commenti sul codice sorgente.