2015-07-11 16 views
6

Ho letto degli RDD e di come varie trasformazioni sono influenzate dalle partizioni e di come alcune trasformazioni influiscano sulle partizioni stesse. Mentre capisco questo, non sono in grado di collegarlo al quadro più grande su come questo si inserisce in un cluster in cui abbiamo più nodi.relazione tra RDD, partizioni e nodi

C'è corrispondenza uno a uno tra una partizione e un nodo? Voglio dire se c'è una singola partizione per nodo idealmente? E se no, come decide Spark quante partizioni per un RDD specifico devono risiedere sullo stesso nodo?

Più specificamente, posso pensare di uno dei seguenti: -

1) Tutte le partizioni per un dato RDD sullo stesso nodo 2) Tutte le partizioni della stessa RDD possono risiedere su diversi nodi (ma Qual è la base della divisione?) 3) Le partizioni dello stesso nodo sono sparse sul cluster, alcune sullo stesso nodo, alcune su nodi diversi (ancora, qual è la base di questa distribuzione?)

Qualcuno può spiegare o almeno indicarmi un link specifico che risponda esattamente a questo?

risposta

8
  • una singola RDD ha una o più partizioni sparsi in più nodi,
  • una singola partizione viene elaborata su un singolo nodo,
  • un solo nodo può gestire più partizioni (con ottimali 2-4 partizioni per CPU a seconda del official documentation)

Dal Spark supporta plug dettagli di gestione delle risorse della distribuzione dipenderà quella che usate (Standalone, filati, Messos).

+0

Ho fatto 'coalesce (1)' su un DataFrame e poi 'foreachPartition' su di esso, ei miei registri hanno mostrato che più di un lavoratore (4 in realtà) stava iterando sulla stessa partizione. Com'è possibile ? Forse perché era troppo grande? – ericbn

+0

@ericbn Molto probabilmente vedi un'attività corrispondente allo stage prima di 'coalescenza'. – zero323