2015-07-30 12 views
32

Merhaba ben az veri ile lokal olarak iyi çalışır bir Spark iş var ama İPLİK üzerinde planlamak zaman aşağıdaki HATA oluyoruz ve yavaş yavaş tüm uygulayıcıların arayüzünden kaldırılırsa ve benim işimYARN istemci modunu kullanırken Spark Executors'ın kaybolması nasıl önlenir?

15/07/30 10:18:13 ERROR cluster.YarnScheduler: Lost executor 8 on myhost1.com: remote Rpc client disassociated 
15/07/30 10:18:13 ERROR cluster.YarnScheduler: Lost executor 6 on myhost2.com: remote Rpc client disassociated 

başarısız yürütmek Ben iplik istemci modunda zamanlama kıvılcım işi için aşağıdaki komutu kullanın

./spark-submit --class com.xyz.MySpark --conf "spark.executor.extraJavaOptions=-XX:MaxPermSize=512M" --driver-java-options -XX:MaxPermSize=512m --driver-memory 3g --master yarn-client --executor-memory 2G --executor-cores 8 --num-executors 12 /home/myuser/myspark-1.0.jar 

ben rehberlik lütfen sorunun ne olduğunu bilmiyorum. Spark’de yeniyim. Şimdiden teşekkürler.

+1

Yürütücü belleğini artırmayı deneyin. Yönetici başarısızlıklarının yaygın nedenlerinden biri yetersiz bellek. execute daha fazla bellek harcadığında, atanan iplik onu öldürür. Sizin tarafından sağlanan günlükleri, başarısızlık nedeni hakkında hiçbir ipucu verir. executor logs kontrol etmek için "iplik günlükleri -applicationId " kullanın. – banjara

+0

Sadece uzun süren kıvılcım işlerini çalıştırdığımızda görüyorum. Bir hafıza sorunu olsaydı, başlangıçta başarısız olmalıydı. –

+1

Bu sorunu nasıl çözeceğinizi anladınız mı? Aynı kişinin, yürütücünün anılarını yitirdiğini doğrulayan hiçbir kayıt olmadan gözlemliyorum. Ben sadece bu sürücü execist öldürdü ve bu execute SIGTERM sinyali var, sonra benim uygulama FetchFailedException: Executor kayıtlı değil tek görev başarısız çünkü her zaman başarısız sayısız sahne yeniden deneme geçer. Bazı nedenlerden ötürü bu tür bir görev hatası farklı ana makinede bile denenmez, tüm aşama tekrar denenir. –

cevap

20

Çok benzer bir sorun yaşadım. Onlara ayrılan hafıza ne olursa olsun birçok idareci kaybettim.

İplik kullanıyorsanız, çözüm --conf spark.yarn.executor.memoryOverhead=600 ayarlanmışsa, alternatif olarak, küme sizin mezonları kullanıyorsa, bunun yerine --conf spark.mesos.executor.memoryOverhead=600'u deneyebilirsiniz.

YARN'in kendisi için yeterli bellek bırakmıyor gibiydik ve kaplar bunun yüzünden öldürülüyordu. Ayarladıktan sonra, farklı bellek hataları yaşadık, ancak aynı kayıp yürütme problemi değil.

+0

Bunun anlamı --conf spark.yarn.executor.memoryOverhead = 600' ile 600 MB'a kadar olan bellek hangisi? Uygulamanız için 600 MB yeterli mi? Basit bir uygulama yaşıyorum. OutOfMemory istisnasını önlemek için overhead belleği 3000'e ayarladım. – panc

+0

@PanChao Evet, orada eşittir, işaret ettiğin için teşekkürler. İplik yükü hafızasını ayarlamak, yürütücülerin herhangi bir hata vermeden ölecekleri bir sorunu çözdü. Uygulamanızın ne kadar bellek kullanabileceğini değil, ne kadar bellek ipliğinin erişebileceğini ayarlıyor. Yetersiz bellek hatası görüyorsanız, hatanın oluştuğu yere bağlı olarak 'spark.driver.memory' veya 'spark.executor.memory 'değerini artırmanız gerekebilir. Bunu denedin mi? – whaleberg

+0

Evet, ayrıca bu iki bellek parametresi için değerleri artırdım. Karşılaştığım bellek yetersizliği istisnası, aşılmakta olan sanal bellek sınırıyla ilgili, bu [thread] 'da bildirilene benzer olan sorunla ilgilidir (http://stackoverflow.com/questions/35355823/spark-worker-asking- for-saçma-miktarlarda-of-the sanal bellek).Öyle görünüyor ki, baş üstü hafızayı arttırmak bu sorunu çözebilir, ancak Spark'un neden bu kadar çok sanal bellek kullandığını hala kafamda karıştırıyorum. Bu iş parçacığının cevabında sözü edilen "pyspark.daemon işlemini" açıklayan herhangi bir referans biliyor musunuz? – panc

-2

Aynı konuyla da ilgileniyordum. Benim için günlükleri siliyorum ve daha fazla hdfs alanı çalıştı.

İlgili konular