2016-09-06 20 views
9

Spark akışımı uygulamam için özel metrikleri kaynağım/havuzumu yazdım ve metrics.properties'ten başlatmaya çalışıyorum - ancak bu, yürütücülerden çalışmaz. Spark kümesindeki makinelerde denetimim yok, bu yüzden özellik dosyasını kümedeki $ SPARK_HOME/conf/dizinine kopyalayamıyorum. Uygulamamın oturduğu şişman kavanoza sahibim, ancak şişman kavanoğum kümedeki işçi düğümlerine yüklendiğinde, yürütücüler zaten başlatıldı ve Metrik sistemi zaten başlatıldı - bu nedenle dosyamda özel kaynak yapılandırmasıyla seçilmiyor . ve 'spark.metrics.conf metrics.properties =' ama 'metrics.properties' emirleri yerine getirenlerin gönderildiğinde zaman, onların metrik sistem zatenÖzel kaynak/batık yapılandırmalar tanınmıyor

bu post ardından, 'spark.files = metrics.properties' belirttiğiniz başlatıldı.

Kendi metrik sistemimi başlatırsam, dosyamı alır ancak master/executor düzey metrikleri/özelliklerini (ör. Executor.sink.mySink.propName = myProp) - 'propName' okuyamıyorum 'mySink' den), Spark'un metrik sistemi tarafından initialized olduğu için.

Yürütücüler initialize onların metrik sistemlerinden önce gönderilen 'metrics.properties' öğesinin sahip olması için bir (programatik) yol var mı?

Update1: Ben tek başına Spark 2.0.0 küme

Update2 bu çalışıyorum: Bu ulaşmaya kesmek Düşünce - sizin 'gerçek' kıvılcım işi başlatmadan önce, metrics.properties kopyalamak için bir kukla bir işe başlamak her işçi üzerinde. Sonra gerçek işinizi önceden bilinen dosya konumu ile başlatın. Eksileri - Bir işçi ölürse ve başka bir işçi bu yeri alırsa, bu dosyayı önceden bilinen yolda olmaz. Çözüm alternatifi - yeni bir işçi makinesi başladığında, git-repo'unuzdan metrics.properties'i çeker ve önceden bilinen bir yola yerleştirir. Her ne kadar işe yarayabilirse de, korkunç derecede hacky ve Spark'u dahili olarak desteklemek için tercih edilen bir çözüm.

cevap

1
+0

Bunu denedim. 2 problem - 1) 'metrics.properties' sürücüsünü makineye kopyalamaz - çünkü dosyaları yalnızca yürütücülerin çalışma dizinine kopyalaması gerekiyordu. 2) Bu dosyaları yürütücülere kopyalarken, metrik sistemi, dosya eksikliği nedeniyle başlatmaya ve başarısızlığa uğramaya çalışırdı. –

1

için metrics.properties göndermek --files eklemem gerekiyor inanmak bkz Eğer kıvılcım ekleyerek özelliklerini yüklemek için tepsi var mı?

+0

Tam olarak takip etmiyorum, bu soru bağlamında ne anlama geliyor? –

+0

'private val masterMetricsSystem = MetricsSystem.createMetricsSystem (" master ", conf, securityMgr)' Bu conf değeri bir SparkConf'tur. Bu nedenle, bu özelliklerinizi eklemek isterseniz, metrikSisteminizi özel özelliklerle oluşturabilirsiniz. Örneğinizde spark.executor.sink.mySink.propName = myProp ve ardından lavabonuzda okuyun. MetricSystem ile hiçbir şey yapmaya çalışmadım, bu yüzden bunu kullanıp kullanamayacağınızı bilmiyorum, ama bazı Executor'ın propetlerini değiştirerek sparkSubmit'e --conf ekleyerek değişiklik yaptım, bu yüzden sizin için yararlı olacağını umuyorum – jlopezmat

+0

Bu kodu da gördüm ve metrik özellikleri şu şekilde belirtildi: executor.source.mysource.class = MyClass. Cevabınız için teşekkürler, ama işe yaramıyor. –

İlgili konular