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.
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.
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