Amazon EMR Spark'a Apache Spark için .NET dağıtma
Bu öğretici, Amazon EMR Spark'a bir .NET Apache Spark uygulaması dağıtmayı öğretir. Amazon EMR, AWS üzerinde büyük veri çerçeveleri çalıştırmayı basitleştiren bir yönetilen küme platformudur.
Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:
- Microsoft.Spark.Worker'i hazırlama
- Spark .NET uygulamanızı yayımlama
- Uygulamanızı Amazon EMR Spark'a dağıtma
- Uygulamanızı çalıştırma
Not
AWS EMR Spark, Linux tabanlıdır. Bu nedenle, uygulamanızı AWS EMR Spark'a dağıtmakla ilgileniyorsanız, uygulamanızın uyumlu olduğundan ve uygulamanızı derlemek için .NET Core derleyicisini .NET Standard emin olun.
Önkoşullar
Başlamadan önce şunları yapın:
- AWS CLI'yi indirin.
- Dosyaları install-worker.sh makinenize indirin. Bu, daha sonra bağımlı dosyaları Spark kümenizin çalışan düğümlerine Apache Spark için .NET'i kopyalamak üzere kullanabileceğiniz bir yardımcı betiktir.
Çalışan bağımlılıklarını hazırlama
Microsoft.Spark.Worker, Spark kümenizin tek tek çalışan düğümlerini temel alan bir arka uç bileşenidir. Bir C# UDF (Kullanıcı Tanımlı İşlev) yürütmek istediğinizde Spark'ın UDF'yi yürütmek için .NET CLR'yi nasıl başlat gerektiğini anlayacaktır. Microsoft.Spark.Worker, Spark'a bu işlevselliği sağlayan bir sınıf koleksiyonu sağlar.
Kümenize dağıtılacak bir Microsoft.Spark.Worker Linux netcoreapp sürümü seçin.
Örneğin, kullanmak için
.NET for Apache Spark v1.0.0netcoreapp3.1Microsoft.Spark.Worker.netcoreapp3.1.linux-x64-1.0.0.tar.gz'yi indirebilirsiniz.Microsoft.Spark.Worker.<release>.tar.gzUpload ve install-worker.sh erişimi olan bir dağıtılmış dosya sistemine (örneğin, S3) erişebilirsiniz.
.NET'inizi Apache Spark hazırlama
Uygulama Başlarken oluşturmak için öğreticiyi izleyin.
Spark .NET uygulamalarınızı kendi içinde yayımlayın.
Linux'ta aşağıdaki komutu çalıştırın.
dotnet publish -c Release -f netcoreapp3.1 -r ubuntu.16.04-x64Yayımlanan
<your app>.zipdosyalar için üretin.kullanarak Linux üzerinde aşağıdaki komutu
zipçalıştırın.zip -r <your app>.zip .Upload kümenizin erişimi olan bir dağıtılmış dosya sistemine (örneğin, S3) aşağıdaki öğeleri dağıtabilirsiniz:
microsoft-spark-<spark_majorversion-spark_minorversion>_<scala_majorversion.scala_minorversion>-<spark_dotnet_version>.jar: Bu jar, Microsoft.Spark NuGet paketinin bir parçası olarak dahil edilir ve uygulamanın derleme çıkış dizininde birlikte bulunur.<your app>.zip- Dosyalar (bağımlılık dosyaları veya her çalışan tarafından erişilebilen ortak veriler gibi) ya da derlemeler (kullanıcı tanımlı işlevlerinizi veya uygulamanıza bağımlı olan kitaplıklarınızı içeren URL'ler gibi) her yürütücü için çalışma dizinine yerleştirilir.
Amazon EMR Spark'a dağıtma
Amazon EMR, AWS üzerinde büyük veri çerçeveleri çalıştırmayı basitleştiren bir yönetilen küme platformudur.
Not
Amazon EMR Spark, Linux tabanlıdır. Bu nedenle, uygulamanızı Amazon EMR Spark'a dağıtmakla ilgileniyorsanız, uygulamanızın uyumlu olduğundan ve uygulamanızı derlemek için .NET Core derleyicisini .NET Standard emin olun.
Microsoft.Spark.Worker dağıtma
Bu adım yalnızca küme oluşturma sırasında gereklidir.
install-worker.sh BootstrapActions kullanarak küme oluşturma sırasında çalıştırın.
AWS CLI kullanarak Linux'ta aşağıdaki komutu çalıştırın.
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"]
Uygulamanızı çalıştırma
Amazon EMR Spark'ta uygulama çalıştırmanın iki yolu vardır: spark-submit ve Amazon EMR Adımları.
spark-submit kullanma
Spark-submit komutunu kullanarak amazon EMR Spark'a iş Apache Spark .NET gönderebilirsiniz.
sshkümedeki düğümlerden birini seçin.spark-submitöğesini çalıştırın.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>
Amazon EMR Adımlarını Kullanma
Amazon EMR Adımları, EMR kümesinde yüklü Spark çerçevesine iş göndermek için kullanılabilir.
AWS CLI kullanarak Linux'ta aşağıdaki komutu çalıştırın.
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
Sonraki adımlar
Bu öğreticide, .NET for Apache Spark Amazon EMR Spark'a dağıttınız. Örnek projeler için .NET Apache Spark devam GitHub.