2015-04-23 8 views
5

Se divido un RDD in 60 e ho un totale di 20 core distribuiti su 20 macchine, vale a dire 20 istanze di macchine single core, quindi il numero di attività è 60 (uguale al numero di partizioni). Perché è utile avere un'unica partizione per core e avere 20 compiti?In che modo le partizioni si associano alle attività in Spark?

Inoltre, ho eseguito un esperimento in cui ho impostato il numero di partizioni su 2, verificando che l'interfaccia utente visualizzi 2 attività in esecuzione in qualsiasi momento; tuttavia, ciò che mi ha sorpreso è che cambia le istanze al completamento delle attività, ad es. node1 e node2 eseguono i primi 2 task, quindi node6 e node8 eseguono il successivo insieme di 2 task ecc. Ho pensato impostando il numero di partizioni su un valore inferiore rispetto ai core (e alle istanze) in un cluster, quindi il programma avrebbe utilizzato solo il minimo numero di istanze richieste. Qualcuno può spiegare questo comportamento?

risposta

2

Per la prima domanda: si potrebbe desiderare di avere attività più granulari del necessario per caricare meno memoria in contemporanea. Inoltre, può essere d'aiuto con la tolleranza degli errori, in quanto è necessario rifare meno lavoro in caso di errore. È tuttavia un parametro. In generale, la risposta dipende dal tipo di carico di lavoro (vincolato all'IO, legato alla memoria, legato alla CPU).

Per quanto riguarda il secondo, credo che la versione 1.3 abbia del codice per richiedere in modo dinamico le risorse. Non sono sicuro in quale versione sia presente l'interruzione, ma le versioni precedenti richiedono solo le risorse esatte con cui si configura il driver. Per quanto riguarda il modo in cui una partizione si sposta da un nodo a un altro, beh, AFAIK sceglierà i dati per un'attività dal nodo che ha una copia locale di quei dati su HDFS. Poiché hdfs ha più copie (3 di default) di ciascun blocco di dati, ci sono più opzioni per eseguire un dato pezzo).

+0

Grazie. Tuttavia, non inserisco i dati in HDFS, ma li importa da S3. Avevo l'impressione che questo non inserisse i dati in HDFS ma potrei sbagliarmi? – monster

+0

Uh, dipende. Spark è molto comunemente usato come sostituto Hadoop su HDFS, ma è compatibile con più cose. Quindi le domande ti sono tornate, in cosa hai i tuoi dati? Ma ad essere onesti, non ho usato S3 per questo. Non sarei sorpreso se si applicassero le stesse considerazioni. Non ci sono molti modi per creare ridondanza distribuita ;-) –