Apache Spark worker ve Kullanıcı tanımlı işlev ikilileri için .NET dağıtma

Bu nasıl yapılır, Apache Spark çalışan ve Kullanıcı tanımlı işlev ikilileri için .NET dağıtımı hakkında genel yönergeler sağlar. Ayarlanacak ortam değişkenlerinin yanı sıra uygulamaları ile başlatmak için yaygın olarak kullanılan bazı parametreleri öğrenirsiniz spark-submit .

Yapılandırmalar

Yapılandırmalarda, Apache Spark worker ve Kullanıcı tanımlı işlev ikilileri için .NET dağıtmak üzere genel ortam değişkenlerini ve parametre ayarlarını gösterir.

Ortam değişkenleri

Çalışanları dağıttığınızda ve UDF 'Leri yazarken, ayarlamanız gerekebilecek yaygın olarak kullanılan birkaç ortam değişkeni vardır:

Ortam değişkeni Description
DOTNET_WORKER_DIR Microsoft.Spark.Workerİkilinin oluşturulduğu yol.
Spark sürücüsü tarafından kullanılır ve Spark yürüticilerine geçirilir. Bu değişken ayarlanmamışsa, Spark yürüticileri ortam değişkeninde belirtilen yolda arama yapılır PATH .
ör. "C:\bin\Microsoft.Spark.Worker"
DOTNET_ASSEMBLY_SEARCH_PATHS Derlemeleri yükleyecek olan virgülle ayrılmış yollar Microsoft.Spark.Worker .
Bir yol "." ile başlıyorsa, çalışma dizini 'nin önüne getirilir. Yarn modunda, "." kapsayıcının çalışma dizinini temsil eder.
ör. "C:\Users \ < Kullanıcı adı > \ < mysparkapp > \Bin\Debug \ < DotNet sürümü > "
DOTNET_WORKER_DEBUG UDF hata ayıklamasıyapmak istiyorsanız, bu ortam değişkenini 1 çalıştırılmadan önce olarak ayarlayın spark-submit .

Parametre seçenekleri

Spark uygulaması paketlenmişolduktan sonra kullanarak başlatabilirsiniz spark-submit . Aşağıdaki tabloda, yaygın olarak kullanılan seçeneklerden bazıları gösterilmektedir:

Parametre Adı Description
--sınıfı Uygulamanız için giriş noktası.
Örneğin, org. Apache. spark. deploy. DotNet. DotnetRunner
--Master Kümenin ana URL 'si .
ör. yarn
--Deploy-Mode Sürücünüzü çalışan düğümlerinde ( cluster ) veya yerel olarak dış istemci olarak () dağıtıp dağıtmaktır client .
Varsayılanını client
--conf Biçimde rastgele Spark yapılandırma özelliği key=value .
ör. spark.yarn.appMasterEnv.DOTNET_WORKER_DIR = .\worker\Microsoft.Spark.Worker
--dosyalar Her bir yürütücü çalışma dizinine yerleştirilecek dosyaların virgülle ayrılmış listesi.
  • Bu seçeneğin yalnızca Yarn modu için geçerli olduğunu lütfen unutmayın.
  • Hadoop için # benzer bir dosya adı belirtmeyi destekler.
ör. myLocalSparkApp.dll#appSeen.dll Uygulamanızın appSeen.dll YARN 'de çalışırken başvurmak için adı kullanması gerekir myLocalSparkApp.dll .
--Arşivler Her bir yürütücünün çalışma dizininde Ayıklanacak arşivlerin virgülle ayrılmış listesi.
  • Bu seçeneğin yalnızca Yarn modu için geçerli olduğunu lütfen unutmayın.
  • Hadoop için # benzer bir dosya adı belirtmeyi destekler.
ör. hdfs://<path to your worker file>/Microsoft.Spark.Worker.zip#worker Bu, ZIP dosyasını kopyalayıp klasörüne çıkaracaktır worker .
Uygulama-jar Uygulamanız ve tüm bağımlılıklar dahil olmak üzere bir paketlenmiş jar yolu.
Örneğin, < jar HDFS://yolu > /Microsoft-parlak- < Version > . jar
uygulama-bağımsız değişkenler Varsa, ana sınıfınızın ana yöntemine geçirilen bağımsız değişkenler.
örn. uygulamanızın uygulamanızın < > / < > adını.zip uygulama < adı > < uygulama bağımsız değişkenleri olan HDFS://yolu>

Not

--options application-jar Uygulamaları ile başlatırken önce tüm spark-submit ' ı belirtin, aksi takdirde yok sayılır. Daha fazla bilgi için bkz. spark-submit Seçenekler ve bkz. Yarn ayrıntıları üzerinde Spark.

Sık sorulan sorular

Bir Spark uygulamasını UDF 'ler ile çalıştırdığımda bir FileNotFoundException hata alıyorum. Ne yapmalıyım?

Hata: [hata] [TaskRunner] [0] processstream () özel durumla başarısız oldu: System. IO. FileNotFoundException: bütünleştirilmiş kod ' MySparkApp, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null ' dosya bulunamadı: ' mySparkApp.dll '

Cevap: DOTNET_ASSEMBLY_SEARCH_PATHS Ortam değişkeninin doğru şekilde ayarlandığından emin olun. Bunu içeren yol olmalıdır mySparkApp.dll .

.NET My Apache Spark sürümü için yükselttikten ve ortam değişkenini sıfırladıktan sonra DOTNET_WORKER_DIR Neden yine de şu IOException hatayı alıyorum?

Hata: 0,0 (TıD 24, localhost, yürütücü sürücüsü) 11,0 aşamasında görevi kayboldu: Java. IO. IOException: program "Microsoft.Spark.Worker.exe" çalıştırılamıyor: CreateProcess hatası = 2, sistem belirtilen dosyayı bulamıyor.

Cevap: En son ortam değişkeni değerlerini alabilmeniz için önce PowerShell pencerenizi (veya diğer komut pencerelerini) yeniden başlatmayı deneyin. Ardından programınızı başlatın.

Spark uygulamamı gönderdikten sonra hata alıyorum System.TypeLoadException: Could not load type 'System.Runtime.Remoting.Contexts.Context' .

Hata: [hata] [TaskRunner] [0] processstream (), şu özel durumla başarısız oldu: System. TypeLoadException: ' mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken =... ' derlemesinden ' System. Runtime. Remoting. bağlamadı ' türü yüklenemedi.

Cevap: Kullanmakta olduğunuz Microsoft.Spark.Worker sürümü denetleyin. iki sürüm vardır: .NET Framework 4.6.1 ve .net Core 3.1. x. Bu durumda, Microsoft.Spark.Worker.net461.win-x64-<version> ( indirebileceğiniz) System.Runtime.Remoting.Contexts.Context yalnızca .NET Framework olduğundan kullanılmalıdır.

Nasıl yaparım? Spark uygulamamı YARN 'de UDF 'ler ile Çalıştır? Hangi ortam değişkenlerini ve parametreleri kullanmalıyım?

Cevap: YARN 'de Spark uygulamasını başlatmak için, ortam değişkenleri olarak belirtilmelidir spark.yarn.appMasterEnv.[EnvironmentVariableName] . Şunu kullanarak aşağıda bir örnek girin spark-submit :

spark-submit \
--class org.apache.spark.deploy.dotnet.DotnetRunner \
--master yarn \
--deploy-mode cluster \
--conf spark.yarn.appMasterEnv.DOTNET_WORKER_DIR=./worker/Microsoft.Spark.Worker-<version> \
--conf spark.yarn.appMasterEnv.DOTNET_ASSEMBLY_SEARCH_PATHS=./udfs \
--archives hdfs://<path to your files>/Microsoft.Spark.Worker.net461.win-x64-<version>.zip#worker,hdfs://<path to your files>/mySparkApp.zip#udfs \
hdfs://<path to jar file>/microsoft-spark-<spark_majorversion-spark_minorversion>_<scala_majorversion.scala_minorversion>-<spark_dotnet_version>.jar \
hdfs://<path to your files>/mySparkApp.zip mySparkApp

Sonraki adımlar