2014-10-02 13 views
9

SparkConfig ve SparkContext sahip olan yürütücülerin Java (veya Scala) kod miktarını nasıl yapılandırabilirim? Sürekli 2 yönetici görüyorum. Görünüşe göre spark.default.parallelism çalışmıyor ve farklı bir şeyle ilgili.Spark yürütücülerinin miktarı nasıl ayarlanır?

Sadece küme boyutuna eşit olacak sayıda yürütücüyü ayarlamanız gerekiyor ancak her zaman yalnızca 2 tanesi var. Küme büyüklüğümü biliyorum. Bu önemliyse, YARN üzerinde koşuyorum.

cevap

16

Tamam, anladım. İcracı sayısı aslında Spark özelliği değil, YARN'de iş yapmak için kullanılan sürücüdür. SparkSubmit sınıfını sürücü olarak kullandığım için tam olarak ihtiyacım olan uygun --num-executors parametresine sahip.

GÜNCELLEME: Artık SparkSubmit yaklaşımı uymayan bazı işler için

. Öncelikle Spark işinin yalnızca uygulama bileşenlerinden biri olduğu ve hatta isteğe bağlı olduğu uygulamalar için yapamıyorum. Bu durumlarda, küme yapılandırmasına iliştirilmiş spark-defaults.conf ve içerisindeki spark.executor.instances özelliğini kullanıyorum. Bu yaklaşım, kümelenmeye (geliştirici iş istasyonu, evreleme, üretim) bağlı olarak kaynakları doğru bir şekilde dengelememi sağlayan çok daha evrensel bir yaklaşımdır.

+0

Özellik spark.default.parallelism, birleştirmek, azaltmakByKey, groupBy gibi işlemleri azaltmak içindir. – Rags

5

Ayrıca, SparkConf nesnesindeki "spark.executor.instances" ve "spark.executor.cores" parametrelerini ayarlayarak program aracılığıyla da yapabilirsiniz.

Örnek:

SparkConf conf = new SparkConf() 
     // 4 workers 
     .set("spark.executor.instances", "4") 
     // 5 cores on each workers 
     .set("spark.executor.cores", "5"); 

ikinci parametre sadece iplik ve bağımsız modu içindir. Bir çalışanın, o işçiye yetecek kadar çekirdek olması koşuluyla, aynı çalışan üzerinde birden fazla yürütücüyü çalıştırmasına izin verir.