.NET üzembe helyezése Apache Spark-feldolgozóhoz és felhasználó által definiált függvény bináris fájljaihoz

Ez az útmutató általános útmutatást nyújt a .NET üzembe helyezéséhez az Apache Spark-feldolgozókhoz és a felhasználó által definiált függvény bináris fájljaihoz. Megtudhatja, hogy mely környezeti változókat kell beállítania, valamint néhány gyakran használt paramétert az alkalmazások elindításához.spark-submit

Konfigurációk

A konfigurációk az általános környezeti változókat és paraméterbeállításokat mutatják be a .NET apache Spark-feldolgozóhoz és a felhasználó által definiált függvény bináris fájljaihoz való üzembe helyezéséhez.

Környezeti változók

A feldolgozók üzembe helyezésekor és az UDF-ek írásakor néhány gyakran használt környezeti változót is be kell állítania:

Környezeti változó Leírás
DOTNET_WORKER_DIR Elérési út, ahol a Microsoft.Spark.Worker bináris létre lett hozva.
A Spark-illesztő használja, és átadja a Spark-végrehajtóknak. Ha ez a változó nincs beállítva, a Spark-végrehajtók a környezeti változóban PATH megadott elérési úton keresnek.
pl. "C:\bin\Microsoft.Spark.Worker"
DOTNET_ASSEMBLY_SEARCH_PATHS Vesszővel tagolt útvonalak, ahol Microsoft.Spark.Worker szerelvényeket kell betölteni.
Vegye figyelembe, hogy ha egy elérési út "." előtaggal kezdődik, a munkakönyvtár előtaggal fog rendelkezni. Ha yarn módban van, a "." a tároló munkakönyvtárát jelöli.
pl. "C:\Users\<user name>\<mysparkapp>\bin\Debug\<dotnet version>"
DOTNET_WORKER_DEBUG Ha hibakeresést szeretne végezni egy UDF-ben, állítsa be ezt a környezeti változót a 1 futtatás spark-submitelőtt.

Paraméterbeállítások

A Spark-alkalmazás kötegelése után elindíthatja a következővel spark-submit: . Az alábbi táblázat a gyakran használt lehetőségek némelyikét mutatja be:

Paraméter neve Leírás
--class Az alkalmazás belépési pontja.
például org.apache.spark.deploy.dotnet.DotnetRunner
--master A fürt fő URL-címe.
pl. yarn
--üzembe helyezési mód Azt határozza meg, hogy az illesztőprogramot a munkavégző csomópontokon (cluster) vagy helyileg, külső ügyfélként (client) szeretné-e üzembe helyezni.
Alapértelmezett: client
--conf Tetszőleges Spark-konfigurációs tulajdonság key=value formátumban.
például spark.yarn.appMasterEnv.DOTNET_WORKER_DIR=.\worker\Microsoft.Spark.Worker
--files Az egyes végrehajtók munkakönyvtárába helyezendő fájlok vesszővel tagolt listája.
  • Vegye figyelembe, hogy ez a beállítás csak a yarn módra vonatkozik.
  • Támogatja a Hadoophoz hasonló# fájlnevek megadását.
Pl.: myLocalSparkApp.dll#appSeen.dll. A YARN-on való futtatáskor az alkalmazásnak hivatkoznia myLocalSparkApp.dll kell a névreappSeen.dll.
--archívumok Az egyes végrehajtók munkakönyvtárába kinyerendő archívumok vesszővel tagolt listája.
  • Vegye figyelembe, hogy ez a beállítás csak a yarn módra vonatkozik.
  • Támogatja a Hadoophoz hasonló# fájlnevek megadását.
Pl.: hdfs://<path to your worker file>/Microsoft.Spark.Worker.zip#worker. Ezzel kimásolja és kibontja a zip-fájlt a mappába worker .
application-jar Egy csomagban található jar elérési útja, beleértve az alkalmazást és az összes függőséget.
például hdfs://< útvonal a jar>/microsoft-spark-version.jar<> fájlhoz
alkalmazásargumentumok A főosztály fő metódusának átadott argumentumok, ha vannak ilyenek.
például hdfs://< path to your app>/<your app>.zip <az app nameapp>< args>

Megjegyzés

Adja meg az összes előzést application-jar az --options alkalmazások spark-submitindításakor, ellenkező esetben a rendszer figyelmen kívül hagyja őket. További információkért tekintse meg spark-submit a lehetőségeket , és futtassa a Sparkot a YARN-on.

Gyakori kérdések

Amikor UDF-ekkel futtatok egy Spark-alkalmazást, hibaüzenet jelenik FileNotFoundException meg. Mit tegyek?

Hiba: [Error] [TaskRunner] [0] ProcessStream() meghiúsult a következő kivétellel: System.IO.FileNotFoundException: A "mySparkApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" fájl nem található: "mySparkApp.dll"

Válasz: Ellenőrizze, hogy a DOTNET_ASSEMBLY_SEARCH_PATHS környezeti változó megfelelően van-e beállítva. Ennek az elérési útnak kell lennie, amely tartalmazza a mySparkApp.dll.

Miután frissítettem az Apache Sparkhoz készült .NET-verziómat, és alaphelyzetbe állítottam a DOTNET_WORKER_DIR környezeti változót, miért jelenik meg továbbra is a következő IOException hibaüzenet?

Hiba: A 0.0-s feladat elveszett a 11.0 fázisban (TID 24, localhost, végrehajtóillesztő): java.io.IOException: Nem futtatható a program "Microsoft.Spark.Worker.exe": CreateProcess error=2, a rendszer nem találja a megadott fájlt.

Válasz: Először próbálja meg újraindítani a PowerShell-ablakot (vagy más parancsablakot), hogy a legújabb környezeti változóértékeket használhassa. Ezután indítsa el a programot.

A Spark-alkalmazás elküldése után hibaüzenet jelenik System.TypeLoadException: Could not load type 'System.Runtime.Remoting.Contexts.Context'meg.

Hiba: [Error] [TaskRunner] [0] ProcessStream() meghiúsult a következő kivétellel: System.TypeLoadException: Nem sikerült betölteni a "System.Runtime.Remoting.Contexts.Context" típust az "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=..." szerelvényből.

Válasz: Ellenőrizze a Microsoft.Spark.Worker használt verziót. Két verzió létezik: .NET-keretrendszer 4.6.1 és .NET Core 3.1.x. Ebben az esetben (amely letölthető) kell használni, Microsoft.Spark.Worker.net461.win-x64-<version> mivel System.Runtime.Remoting.Contexts.Context csak a .NET-keretrendszer.

Hogyan futtassa a Spark-alkalmazást UDF-ekkel a YARN-on? Milyen környezeti változókat és paramétereket használjak?

Válasz: A Spark-alkalmazás YARN-on való indításához a környezeti változókat a következőként spark.yarn.appMasterEnv.[EnvironmentVariableName]kell megadni: . Tekintse meg az alábbiakat példaként a következő használatával 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

Következő lépések