Le pipeline ti consentono di specificare le CPU e la memoria da assegnare al driver e a ogni Executor. Puoi configurare le risorse nella pipeline di Cloud Data Fusion Studio configurazioni. Per ulteriori informazioni, consulta Gestire le configurazioni della pipeline.
Questa pagina fornisce le linee guida sulla quantità di risorse di driver ed esecutori configurarli per il tuo caso d'uso.
Driver
Poiché il driver non esegue molto lavoro, il valore predefinito di 1 CPU e 2 GB di memoria è sufficiente per eseguire la maggior parte delle pipeline. Potresti dover aumentare la memoria per le pipeline che contengono molte fasi o schemi di grandi dimensioni. Come accennato in Elaborazione parallela delle unioni, se la pipeline esegue unioni in memoria, i set di dati in memoria devono essere contenuti anche nella memoria del driver.
Esecutore testamentario
Tieni presenti le seguenti linee guida sulle risorse di CPU e memoria.
CPU
Il numero di CPU assegnate a un esecutore determina il numero di attività che esecutore può essere eseguito in parallelo. Ogni partizione di dati richiede un'attività da elaborare. Nella maggior parte dei casi, è più semplice impostare il numero di CPU su uno. concentrati invece sulla regolazione della memoria.
Memoria
Per la maggior parte delle pipeline, 4 GB di memoria dell'executor sono sufficienti per eseguire correttamente la pipeline. Sono stati completati join fortemente sbilanciati di più terabyte con 4 GB di memoria dell'executor. È possibile migliorare la velocità di esecuzione aumentando la quantità di memoria, ma questo richiede una conoscenza approfondita sia i dati che la pipeline.
Spark suddivide la memoria in più sezioni. È riservata una sezione per Spark per uso interno e un'altra per l'esecuzione e l'archiviazione.
Per impostazione predefinita, la sezione di archiviazione ed esecuzione occupa circa il 60% della memoria totale. La proprietà spark.memory.fraction configuration
di Spark (il valore predefinito è 0,6) controlla questa percentuale. Questo importo funziona bene per la maggior parte dei carichi di lavoro
normalmente non devono essere regolati.
La sezione di archiviazione ed esecuzione è a sua volta suddivisa in spazi separati per
archiviazione ed esecuzione. Per impostazione predefinita, gli spazi hanno le stesse dimensioni, ma puoi
regolale impostando spark.memory.storageFraction
(il valore predefinito è 0,5) su
controllare la percentuale di spazio riservata all'archiviazione.
Nello spazio di archiviazione sono archiviati i dati memorizzati nella cache. Lo spazio di esecuzione memorizza i dati di ordinamento, unione, smistamento e aggregazione. Se nella sezione di esecuzione è presente spazio aggiuntivo, Spark può utilizzarne una parte per l'archiviazione dei dati. Tuttavia, i dati di esecuzione non utilizzeranno mai lo spazio di archiviazione.
Se sai che la pipeline non memorizza nella cache alcun dato, puoi ridurre la frazione di spazio di archiviazione per lasciare più spazio per i requisiti di esecuzione.
Punto da considerare: memoria del contenitore YARN
L'impostazione della memoria dell'esecutore controlla la quantità di memoria heap assegnata all'account
esecutori. Spark aggiunge una quantità aggiuntiva di memoria per la memoria off-heap, che è controllata dall'impostazione spark.executor.memoryOverhead
, il cui valore predefinito è 384 MB. Ciò significa che la quantità di memoria riservata da YARN per ogni executor è superiore al numero impostato nella configurazione delle risorse della pipeline. Ad esempio:
Se imposti la memoria dell'esecutore su 2048 m, Spark aggiunge 384 m a quel numero e alle richieste
YARN per un container di 2432 m. Inoltre, YARN arrotonda il numero di richiesta per eccesso a
un multiplo di yarn.scheduler.increment-allocation-mb
, che per impostazione predefinita
valore di yarn.scheduler.minimum-allocation-mb
. Se è impostato su 512, YARN arrotonda i 2432 MB a 2560 MB. Se il valore è impostato su 1024, YARN arrotonda per eccesso 2432 MB a 3072 MB. Questo punto è utile da tenere presente quando determini la dimensione
di ciascun nodo worker nel tuo cluster.