.NET for Apache Spark-alkalmazás üzembe helyezése az Amazon EMR Sparkban

Ez az oktatóanyag bemutatja, hogyan helyezhet üzembe .NET for Apache Spark-alkalmazást az Amazon EMR Sparkban. Az Amazon EMR egy felügyelt fürtplatform, amely leegyszerűsíti a big data-keretrendszerek futtatását az AWS-en.

Eben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • A Microsoft.Spark.Worker előkészítése
  • A Spark .NET-alkalmazás közzététele
  • Az alkalmazás üzembe helyezése az Amazon EMR Sparkban
  • Futtassa az alkalmazást

Megjegyzés

Az AWS EMR Spark Linux-alapú. Ezért ha az alkalmazást az AWS EMR Sparkban szeretné üzembe helyezni, győződjön meg arról, hogy az alkalmazás .NET Standard-kompatibilis, és hogy az alkalmazás fordításához .NET Core-fordítót használ.

Előfeltételek

Mielőtt hozzákezd, tegye a következőket:

  • Töltse le az AWS parancssori felületét.
  • Töltse le install-worker.sh a helyi gépére. Ezt a segédszkriptet később az Apache Spark-függő fájlok .NET-hez való másolásához fogja használni a Spark-fürt munkavégző csomópontjaiba.

Feldolgozói függőségek előkészítése

A Microsoft.Spark.Worker egy háttérösszetevő, amely a Spark-fürt egyes munkavégző csomópontjaiban található. Ha C# UDF-et (felhasználó által definiált függvényt) szeretne végrehajtani, a Sparknak tudnia kell, hogyan indíthatja el a .NET CLR-t az UDF végrehajtásához. A Microsoft.Spark.Worker osztálygyűjteményt biztosít a Spark számára, amelyek lehetővé teszik ezt a funkciót.

  1. Válassza ki a fürtön üzembe helyezendő Microsoft.Spark.Worker Linux netcoreapp kiadást.

    Ha például használni netcoreapp3.1szeretné.NET for Apache Spark v1.0.0, töltse le a Microsoft.Spark.Worker.netcoreapp3.1.linux-x64-1.0.0.tar.gz fájlt.

  2. Töltsön fel Microsoft.Spark.Worker.<release>.tar.gz és install-worker.sh egy elosztott fájlrendszerbe (például S3), amelyhez a fürtnek hozzáférése van.

A .NET előkészítése az Apache Spark-alkalmazáshoz

  1. Kövesse az Első lépések oktatóanyagot az alkalmazás létrehozásához.

  2. A Spark .NET-alkalmazás közzététele önállóan.

    Futtassa a következő parancsot Linuxon.

    dotnet publish -c Release -f netcoreapp3.1 -r ubuntu.16.04-x64
    
  3. A <your app>.zip közzétett fájlok előállítása.

    Futtassa a következő parancsot Linux rendszeren a következő paranccsal zip.

    zip -r <your app>.zip .
    
  4. Töltse fel a következő elemeket egy elosztott fájlrendszerbe (például S3), amelyhez a fürt hozzáféréssel rendelkezik:

    • microsoft-spark-<spark_majorversion-spark_minorversion>_<scala_majorversion.scala_minorversion>-<spark_dotnet_version>.jar: Ez a jar a Microsoft.Spark NuGet-csomag része, és az alkalmazás buildkimeneti könyvtárában van elhelyezve.
    • <your app>.zip
    • Az egyes végrehajtók munkakönyvtárába helyezendő fájlok (például függőségi fájlok vagy minden feldolgozó számára elérhető közös adatok) vagy szerelvények (például a felhasználó által definiált függvényeket vagy kódtárakat tartalmazó DLL-ek), amelyektől az alkalmazás függ.

Üzembe helyezés az Amazon EMR Sparkban

Az Amazon EMR egy felügyelt fürtplatform, amely leegyszerűsíti a big data-keretrendszerek futtatását az AWS-en.

Megjegyzés

Az Amazon EMR Spark Linux-alapú. Ezért ha az alkalmazást az Amazon EMR Sparkban szeretné üzembe helyezni, győződjön meg arról, hogy az alkalmazás .NET Standard-kompatibilis, és hogy az alkalmazás fordításához a .NET Core-fordítót használja.

A Microsoft.Spark.Worker üzembe helyezése

Erre a lépésre csak fürt létrehozásakor van szükség.

Futtatás install-worker.sh fürtlétrehozás közben Bootstrap-műveletekkel.

Futtassa a következő parancsot Linuxon az AWS parancssori felület használatával.

aws emr create-cluster \
--name "Test cluster" \
--release-label emr-5.23.0 \
--use-default-roles \
--ec2-attributes KeyName=myKey \
--applications Name=Spark \
--instance-count 3 \
--instance-type m1.medium \
--bootstrap-actions Path=s3://mybucket/<some dir>/install-worker.sh,Name="Install Microsoft.Spark.Worker",Args=["aws","s3://mybucket/<some dir>/Microsoft.Spark.Worker.<release>.tar.gz","/usr/local/bin"]

Futtassa az alkalmazást

Az alkalmazást kétféleképpen futtathatja az Amazon EMR Sparkban: spark-submit és Amazon EMR Steps.

Spark-submit használata

A spark-submit paranccsal elküldheti az Apache Spark-feladatokhoz tartozó .NET-et az Amazon EMR Sparknak.

  1. ssh a fürt egyik csomópontjára.

  2. Futtassa az spark-submit parancsot.

    spark-submit \
    --master yarn \
    --class org.apache.spark.deploy.dotnet.DotnetRunner \
    --files <comma-separated list of assemblies that contain UDF definitions, if any> \
    s3://mybucket/<some dir>/microsoft-spark-<spark_majorversion-spark_minorversion>_<scala_majorversion.scala_minorversion>-<spark_dotnet_version>.jar \
    s3://mybucket/<some dir>/<your app>.zip <your app> <app args>
    

Az Amazon EMR lépéseinek használata

Az Amazon EMR-lépések segítségével feladatokat küldhet az EMR-fürtön telepített Spark-keretrendszerbe.

Futtassa a következő parancsot Linuxon az AWS parancssori felület használatával.

aws emr add-steps \
--cluster-id j-xxxxxxxxxxxxx \
--steps Type=spark,Name="Spark Program",Args=[--master,yarn,--files,s3://mybucket/<some dir>/<udf assembly>,--class,org.apache.spark.deploy.dotnet.DotnetRunner,s3://mybucket/<some dir>/microsoft-spark-<spark_majorversion-spark_minorversion>_<scala_majorversion.scala_minorversion>-<spark_dotnet_version>.jar,s3://mybucket/<some dir>/<your app>.zip,<your app>,<app arg 1>,<app arg 2>,...,<app arg n>],ActionOnFailure=CONTINUE

Következő lépések

Ebben az oktatóanyagban üzembe helyezte az Apache Sparkhoz készült .NET-alkalmazást az Amazon EMR Sparkban. Apache Spark-példaprojektekhez készült .NET esetén folytassa a GitHub.