Aşağıdakiler için, zamanın her noktasında yalnızca bir Spark işinin çalıştığını varsayalım.
Şimdiye kadar aldığım şey
İşte Spark'da neler olduğunu anlıyorum:
- A
SparkContext
oluşturulduğunda, her çalışan düğüm bir yürütücü başlatır. Yürütücüler, sürücü programına geri bağlanan ayrı işlemlerdir (JVM). Her yürütücü, sürücü programının kavanozuna sahiptir. Bir sürücüden vazgeçerek, uygulayıcıları kapatır. Her yürütücü bazı bölümlere sahip olabilir. - Bir iş yürütüldüğünde, köken grafiğine göre bir yürütme planı oluşturulur.
- Yürütme işi, çok sayıda komşu (soy grafiğinde) dönüşüm ve eylem içeren, ancak karışık olmayan aşamalar olarak ayrılır. Böylece aşamalar karışıklıklarla ayrılır.
onu anlıyorum
- Görev, Function nesnesini serileştirerek sürücüden bir yürütücüye gönderilen bir komuttur.
- Yürütücü, komutun (görev) serisini kaldırır (sürücü kavanozu ile) ve bir bölüm üzerinde yürütür.
fakat
Soru (lar)
Sahneyi bu görevlere nasıl bölebilirim?
özellikle:
- Görevler dönüşümler ve eylemler tarafından mı belirleniyor veya bir görevde birden çok dönüşüm / eylem olabilir mi?
- Görevler bölüm tarafından belirlenir mi (örneğin bölüm başına aşama başına bir görev).
- Görevler düğümler tarafından belirleniyor mu (örneğin, düğüm başına aşama başına bir görev)?
Ne düşünüyorum (doğru olsa bile sadece kısmi cevap)
Gelen https://0x0fff.com/spark-architecture-shuffle , shuffle görüntü ile açıklanabilir
ve kuralın olduğu izlenimini edindim
her aşama, düğüm sayısına bakılmaksızın # bölüm sayısı görevine ayrılmıştır
İlk resmim için 3 harita görevim ve 3 azaltma görevim olduğunu söyleyebilirim.
0x0fff görüntüsü için, 8 harita görevi ve 3 azaltma görevi olduğunu söyleyebilirim (yalnızca üç turuncu ve üç koyu yeşil dosya olduğu varsayılarak).
Her durumda açık sorular
Bu doğru mu? Ancak bu doğru olsa bile, yukarıdaki sorularımın hepsi cevaplanmıyor, çünkü hala açık, birden fazla işlemin (örneğin birden fazla harita) bir görev içinde mi yoksa her işlem için bir göreve mi ayrılmış olduğu.
Başkaları ne diyor
Spark'daki görev nedir? Spark çalışanı jar dosyasını nasıl yürütür? ve Apache Spark zamanlayıcı dosyaları görevlere nasıl böler? benzer, ama sorumun orada açıkça yanıtlandığını hissetmedim.