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-submit elő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.
myLocalSparkApp.dll#appSeen.dll . A YARN-on való futtatáskor az alkalmazásnak a nevet kell használnia hivatkozásként appSeen.dll myLocalSparkApp.dll . |
--Archívum | Az egyes végrehajtók munkakönyvtárába kinyerendő archívumok vesszővel tagolt listája.
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-submit
indí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