Spark

2016-06-13 42 views
5

TL göndermek kıvılcımı o kullanarak geçirilir olandan çekirdeklerinin farklı sayısını gösterir; DRSpark

Kıvılcım UI ne kullanırken bunu soruyorum kıvılcım gönderin daha çekirdek ve bellek farklı sayısını gösterir

daha fazla bilgi için:

Bağımsız modda Spark 1.6 kullanıyorum. Kıvılcım gönderimi çalıştırdığımda, icracı için 1 çekirdekli 1 sürücü örneği ve ayrıca sürücü için 1 çekirdek geçiriyorum. Ne olmasını beklerim, başvurumun toplam 2 çekirdek ile çalıştırılacağıdır. UI'daki ortam sekmesini kontrol ettiğimde, verdiğim doğru parametreleri aldığımı görüyorum, ancak yine de farklı bir çekirdek sayısı kullanıyor gibi görünüyor. Uygulamayı buradan görebilirsiniz: bunlar gerçekten olduklarını

spark.executor.memory 5g 
spark.executor.cores 1 
spark.executor.instances 1 
spark.driver.cores 1 

Kıvılcım UI'daki çevre sekmesini kontrol edilmesi gösterilmektedir:

enter image description here

Bu kullanıyorum benim kıvılcım-defaults.conf olduğunu parametre alındı ​​ancak kullanıcı arabirimi hala başka bir şey gösteriyor

Kıvılcımın, istediğimden daha fazla çekirdek kullanmasına neden olabilecek herhangi bir fikri var mı?

Kullanım spark.cores.max yerine sayısını sınırlamak mevcut çekirdek sayısını tanımlamak ve böylece DR

; Açıkçası peşin

+0

Spark'i nasıl çalıştırıyorsunuz? Küme veya istemci modunda mı? YARN ile (executor.instances .. kullanımına göre)? –

+0

Standalone (sorunun başlangıcında), YARN değil, kıvılcım gönderme satırını eklemeyi düşündüm ama sadece ana ve ana sınıfı, geri kalanı ise spark-defaults.conf – Gideon

+2

ile belirtildi. Bağımsız modda, açgözlü bir strateji kullanılır ve çekirdek ve bellek kullanıldığı için birçok yürütücünün oluşturulacağı gibi. Durumda, her bir yürütücü için 1 çekirdek belirttiniz, böylece Spark, 8 çekirdeği olduğu için 8 yürütücüyü oluşturmaya çalışacaktır. Ancak, sadece 30GB RAM mevcut olduğu için sadece 6 tane oluşturulabilir (her biri 5 GB'lık 5 adet yürütücü). Sonunda 6 yöneticiniz var. spark.executor.instances, yalnızca İARN yapılandırmasıdır. En iyi seçeneğiniz, 'spark.cores.max' kullanarak çekirdek sayısını 2'ye ayarlamaktır, bunun daha iyi olup olmadığını söyleyin. –

cevap

5

TL yılında

Teşekkür bunu googling çalıştı ama o konu hakkında yararlı bir şey bulamadık İcracıların bağımsız modunda yılında


, bir açgözlü strateji kullanılır ve birçok executors çekirdek ve bellek işçi geçerli olduğu gibi oluşturulur.

Durumunuza göre, yürütücü başına 1 çekirdek ve 5 GB bellek belirttiniz. şu Kıvılcım hesaplanacaktır: mevcut 8 çekirdek bulunmadığından

  • , bu 8 uygulayıcılarına bu oluşturmaya çalışacağız.
  • Ancak, yalnızca 30 GB'lık bir bellek olduğu için, yalnızca 6 yürütücü oluşturabilir: her bir yürütücünün 30 GB'a kadar ekleyebilen 5 GB'lık belleği olacaktır.
  • Bu nedenle, 6 kullanıcı oluşturulacak ve 30 GB bellekle toplam 6 çekirdek kullanılacaktır.

Kıvılcım, istediğiniz şeyi temel olarak yerine getirdi. İstediğinizi elde etmek için, here belgelenmiş spark.cores.max seçeneğini kullanabilir ve ihtiyacınız olan çekirdek sayısını tam olarak belirleyebilirsiniz.

Birkaç yan notlar:

  • spark.executor.instances Ben de sayısının kavramını hafifletilmesi üzerinde çalışıyorum zaten İPLİK-sadece yapılandırma
  • spark.driver.memory varsayılan 1 çekirdek

olduğunu Bağımsız modda çalışanlar, bu Spark'in bir sonraki sürümüne entegre edilebilir ve umarım, hareket halindeyken hesaplamak zorunda kalmadan tam olarak sahip olduğunuz kişi sayısını tam olarak belirlemenize yardımcı olur.

+0

İşi Master'a gönderirken bir hata alıyorum - İlk iş kabul edilmedi - http://stackoverflow.com/questions/38359801/spark-job-submitted-waiting-taskschedulerimpl-initial-job-not-accepted - Any İlişkinin wrt sayısı atanacak çekirdek/bellek sayısı ... Sorguda verilen şekilde kıvılcım başvurusu göndermek için POST API çağrısı kullanma –