YARN'de bir Spark işi çalıştırırken çekirdek sayısının ve uygulayıcı sayısının ilişkisini anlamaya çalışıyorum.
Test ortamı aşağıdaki gibidir:
- Veri düğümü sayısı: 3
- Veri düğümü makine özellikleri:
- İşlemci: Core i7-4790 (çekirdek sayısı: 4, iplik sayısı: 8)
- Rastgele erişimli hafıza: 32GB (8GB x 4)
- HDD: 8 TB (2 TB x 4)
Ağ: 1Gb
Kıvılcım sürümü: 1.0.0
Hadoop sürümü: 2.4.0 (Hortonworks HDP 2.1)
Spark iş akışı: sc.textFile -> filtre -> harita -> filtre -> mapToPair -> reduceByKey -> harita -> saveAsTextFile
Veri girişi
- Tür: tek metin dosyası
- Boyut: 165GB
- Satır sayısı: 454,568,833
Çıktı
- İkinci filtreden sonraki hat sayısı: 310.640.717
- Sonuç dosyasının satır sayısı: 99,848,268
- Sonuç dosyasının boyutu: 41GB
İş, aşağıdaki yapılandırmalarla gerçekleştirildi:
--master yarn-client --executor-memory 19G --executor-cores 7 --num-executors 3
(veri düğümü başına yürütücüler, çekirdekler kadar kullanın)--master yarn-client --executor-memory 19G --executor-cores 4 --num-executors 3
(çekirdek sayısı azaltıldı)--master yarn-client --executor-memory 4G --executor-cores 2 --num-executors 12
(daha az çekirdek, daha fazla yürütücü)
Geçen süreler:
50 dk 15 sn
55 dk 48 sn
31 dk 23 sn
Şaşırtıcı bir şekilde, (3) çok daha hızlıydı.
(1) 'in daha hızlı olacağını düşündüm, çünkü karıştırma sırasında daha az uygulayıcılar arası iletişim olacaktı.
(1) 'in çekirdeklerinin sayısı (3)' ten daha az olsa da, 2) 'den bu yana çekirdeklerin sayısı anahtar faktör değildir.
(Pwilmot'un cevabından sonra arkadaşlar eklendi.)
Bilgi için performans monitörü ekran görüntüsü aşağıdaki gibidir:
- (1) için Ganglia veri düğümü özeti - iş 04:37 'de başladı.
- (3) için Ganglia veri düğümü özeti - iş 19:47'de başladı. Lütfen o zamandan önce grafiği görmezden gelin.
Grafik kabaca 2 bölüme ayrılmıştır:
- İlk: baştan sona azaltmak: ByKey: Yoğun CPU, ağ etkinliği yok
- İkincisi: reduceByKey'den sonra: CPU alçalır, ağ G / Ç yapılır.
Grafikte görüldüğü gibi, (1) verildiği kadar CPU gücü kullanabilir. Bu nedenle, iş parçacığı sayısının sorunu olmayabilir.
Bu sonuç nasıl açıklanır?