A .NET üzembe helyezése Apache Spark-feldolgozókhoz é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 a következővel spark-submit: .

Figyelmeztetés

Az Apache Sparkhoz készült .NET a .NET (.NET Core 3.1) nem támogatott verzióját célozza meg. További részletekért lásd a .NET támogatási szabályzatát.

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ése és az UDF-ek írása során előfordulhat, hogy néhány gyakran használt környezeti változót be kell állítania:

Környezeti változó Description
DOTNET_WORKER_DIR Elérési út, ahol a Microsoft.Spark.Worker bináris létre lett hozva.
A Spark-illesztőprogram használja, és a Rendszer átadja a Spark-végrehajtóknak. Ha ez a változó nincs beállítva, a Spark-végrehajtók megkeresik a PATH környezeti változóban megadott elérési utat.
például "C:\bin\Microsoft.Spark.Worker"
DOTNET_ASSEMBLY_SEARCH_PATHS Vesszővel elválasztott útvonalak, ahol Microsoft.Spark.Worker a szerelvények betöltődnek.
Vegye figyelembe, hogy ha egy elérési út a következővel kezdődik: ".", a munkakönyvtár elő lesz állítva. Ha yarn módban van, a "." a tároló munkakönyvtárát jelöli.
pl. "C:\Users\<felhasználónév>\<mysparkapp>\bin\Debug\<dotnet version>"
DOTNET_WORKER_DEBUG Ha hibakeresést szeretne végezni egy UDF-ben, állítsa ezt a környezeti változót értékre a 1 futtatás spark-submitelőtt.

Paraméterbeállítások

Miután a Spark-alkalmazás csomagba van csomagolva, elindíthatja a használatával spark-submit. Az alábbi táblázat a leggyakrabban használt lehetőségeket mutatja be:

Paraméter neve Description
--Osztály Az alkalmazás belépési pontja.
például org.apache.spark.deploy.dotnet.DotnetRunner
--Mester A fürt fő URL-címe.
pl. fonal
--deploy-mode Az illesztőprogram üzembe helyezése a munkavégző csomópontokon (cluster) vagy helyileg külső ügyfélként (client).
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
--Fájlokat 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 a nevet kell használnia hivatkozásként appSeen.dllmyLocalSparkApp.dll .
--Archívum 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 kinyeri a zip-fájlt a mappába worker .
application-jar Egy csomagolt jar elérési útja, beleértve az alkalmazást és az összes függőséget.
például hdfs://< path to your jar>/microsoft-spark-version.jar<>
alkalmazásargumentumok Ha van ilyen, a főosztály fő metódusának átadott argumentumok.
például hdfs://< path to your app>/<your app>.zip <az app name><app args>

Megjegyzés

Adja meg az összes korábbitapplication-jar, --options amikor az alkalmazásokat a használatával spark-submitindítja el, ellenkező esetben a rendszer figyelmen kívül hagyja őket. További információkért lásd a spark-submit lehetőségeket és a Spark futtatását a YARN-ban.

Gyakori kérdések

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

Hiba: [Hiba] [TaskRunner] [0] A ProcessStream() kivétellel meghiúsult: System.IO.FileNotFoundException: A "mySparkApp, Version=1.0.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 a következőt tartalmazza: mySparkApp.dll.

Miután frissítettem a .NET for Apache Spark-verziót, é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?

Hiba: A 0.0-s feladat elveszett a 11.0 fázisban (TID 24, localhost, végrehajtó illesztőprogram): 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 parancsablakokat), 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 a következő hibaüzenet System.TypeLoadException: Could not load type 'System.Runtime.Remoting.Contexts.Context'jelenik meg: .

Hiba: [Hiba] [TaskRunner] [0] A ProcessStream() kivétellel meghiúsult: 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 Microsoft.Spark.Worker.net461.win-x64-<version> (amely letölthető) kell használni, 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 érdemes használni?

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