.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-submit elő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.
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.
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-submit
indí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