Öğretici: Apache Spark uygulamasına bir .NET Azure HDInsight

Bu öğreticide, .NET for Apache Spark buluta Azure HDInsight öğretildi. HDInsight'ta Spark kümeleri Azure Depolama ve Azure Data Lake Depolama ile uyumlu olduğundan HDInsight, Azure'da Spark kümesi oluşturma ve yapılandırmayı Depolama.

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:

  • Depolama hesaplarınıza erişmek için Azure Depolama Gezgini.
  • Yeni bir Azure HDInsight oluşturun.
  • .NET'inizi Apache Spark yayımlayın.
  • HDInsight betik eylemi oluşturma ve çalıştırma.
  • HDInsight kümesinde Apache Spark için .NET çalıştırın.

Önkoşullar

Başlamadan önce aşağıdaki görevleri gerçekleştirin:

Depolama hesaplarınıza erişme

  1. Yeni Azure Depolama Gezgini.

  2. Sol menüden Hesap Ekle'yi seçin ve Azure hesabınızla oturum açın.

    Depolama Gezgini'dan Azure hesabında oturum Depolama Gezgini

    Oturum açmanın ardından, sahip olduğunuz tüm depolama hesaplarını ve depolama hesaplarınıza yüklediğiniz tüm kaynakları görüyor olun.

HDInsight kümesi oluşturma

Önemli

HDInsight kümeleri için faturalandırma, kullanmasanız bile dakika başına provok olarak paylaştırılıyor. Kullanmayı bitirdikten sonra kümenizi sildiğinizden emin olun. Daha fazla bilgi için bu öğreticinin Kaynakları temizleme bölümüne bakın.

  1. Azure portal.

  2. + Kaynak oluştur’u seçin. Ardından Analytics kategorisinden HDInsight'ı seçin.

    Azure portal'den HDInsight kaynağı oluşturma

  3. Temel Bilgiler bölümünde aşağıdaki değerleri sağlayın:

    Özellik Açıklama
    Abonelik Açılan listelerden etkin Azure aboneliklerinden birini seçin.
    Kaynak grubu Yeni bir kaynak grubu oluşturmayı veya mevcut bir kaynak grubunu kullanmayı seçin. Kaynak grubu, bir Azure çözümüne ilişkin kaynakları tutan bir kapsayıcıdır.
    Küme adı HDInsight Spark kümenize bir ad verin.
    Konum Kaynak grubu için bir konum seçin. Şablon hem kümeyi oluşturmak için hem de varsayılan küme depolaması için bu konumu kullanır.
    Küme türü Küme türü olarak Spark'ı seçin.
    Küme sürümü Küme türü seçildikten sonra bu alan varsayılan sürümle otomatik olarak doldurulacak. Spark'ın 2.3 veya 2.4 sürümünü seçin.
    Küme oturum açma kullanıcı adı Küme oturum açma kullanıcı adını girin. Varsayılan ad, admin şeklindedir.
    Küme oturum açma parolası Herhangi bir oturum açma parolası girin.
    Secure Shell (SSH) kullanıcı adı SSH kullanıcı adını girin. Varsayılan olarak bu hesap, Küme Oturum Açma kullanıcı adı hesabıyla aynı parolayı paylaşır.
  4. Depolama devam Depolama >>için Sonraki: Depolama seçin. Depolama bölümünde aşağıdaki değerleri sağlayın:

    Özellik Açıklama
    Birincil depolama türü Azure Depolama.
    Seçim yöntemi Listeden seç varsayılan değerini kullanın.
    Birincil depolama hesabı Aboneliğinizi ve bu abonelik içindeki etkin depolama hesaplarından birini seçin.
    Kapsayıcı Bu kapsayıcı, kümenizin uygulamanızı bulutta çalıştırmak için dosyaları araması için depolama hesabınıza özgü blob kapsayıcıdır. Bu kullanıcıya herhangi bir kullanılabilir ad veabilirsiniz.
  5. Gözden geçir ve oluştur altında Oluştur'a seçin. Kümenin oluşturulması yaklaşık 20 dakika sürer. Sonraki adıma devam etmek için kümenin oluşturulacak olması gerekir.

Uygulamanızı yayımlama

Ardından, Spark kümenize, uygulamanızı çalıştırmak için gereken tüm dosyalara erişim izni veren Apache Spark - Başlarken için .NET'te oluşturulan mySparkApp'i 10 Dakika içinde yayımlayacaksiniz.

  1. mySparkApp'i yayımlamak için aşağıdaki komutları çalıştırın:

    Windows:

    cd mySparkApp
    dotnet publish -c Release -f netcoreapp3.1 -r win-x64
    

    Linux'ta:

    cd mySparkApp
    foo@bar:~/path/to/app$ dotnet publish -c Release -f netcoreapp3.1 -r ubuntu.16.04-x64
    
  2. Yayımlanmış uygulama dosyalarınızı HDInsight kümenize kolayca yükleyebiliyor olmak için aşağıdaki görevleri gerçekleştirin. Örneğin, 1. adımpublish.zip oluşturulan yayımlama klasörünün içeriğini sıkıştırın. Tüm derlemeler ZIP dosyasının ilk katmanında olmalı ve ara klasör katmanına sahip olmayacaktır. Bu, dosyanın sıkıştırma publish.zip tüm derlemelerin geçerli çalışma dizininize ayıklanır.

    Windows:

    Dosyayı yayımlanan tüm ikili dosyalar ile birlikte bin dizinine ayıklamak için 7-Zip veya WinZip gibi bir ayıklama programı kullanın.

    Linux'ta aşağıdaki komutu çalıştırın:

    zip -r publish.zip
    

Upload Azure'a yükleme

Ardından, kümenizin depolama Azure Depolama Gezgini seçtiğiniz blob kapsayıcısı için aşağıdaki beş dosyayı yüklemek üzere aşağıdaki dosyaları yüklemek için Azure Depolama Gezgini'yi kullanın:

  • Microsoft.Spark.Worker
  • install-worker.sh
  • publish.zip
  • microsoft-spark-2-4_2.11-1.0.0.jar
  • input.txt
  1. Uygulama Azure Depolama Gezgini açın ve sol menüden depolama hesabınıza gidin. Depolama hesabınızla ilgili Blob Kapsayıcıları altında kümenizin blob kapsayıcısı için detaya gitme.

  2. Microsoft.Spark.Worker Apache Spark kullanıcı tanımlı işlevler (UFS) gibi uygulamalarınızı yürütmenize yardımcı olur. Microsoft.Spark.Worker'i indirin. Ardından, Upload yüklemek Azure Depolama Gezgini'yi seçin.

    Upload dosyaları Azure Depolama Gezgini

  3. Bu install-worker.sh, bağımlı dosyalar için .NET'i Apache Spark kümenizin düğümlerine kopyalamanıza olanak sağlayan bir betiktir.

    Yerel bilgisayarınızda install-worker.sh adlı yeni bir dosya oluşturun ve install-worker.sh dosyanın içeriğini GitHub. Ardından, install-worker.sh blob kapsayıcınıza yükleyin.

  4. Kümenizin, publish.zip yayımlanan dosyalarını içeren bir dosya olması gerekir. yayımlanmış klasörünüz olan mySparkApp/bin/Release/netcoreapp3.1/ubuntu.16.04-x64 klasörüne gidin ve publish.zip. Ardından publish.zip blob kapsayıcınıza yükleyin.

  5. Kümenizin jar olarak paketlenmiş, Microsoft.Spark nuget'in bir parçası olarak dahil edilen ve uygulamanın derleme çıkış dizininde birlikte yer alan uygulama koduna ihtiyacı vardır. yayımlanmış klasörünüz olan mySparkApp/bin/Release/netcoreapp3.1/ubuntu.16.04-x64 klasörüne gidin ve microsoft-spark-2-4_2.11-1.0.0.jar öğesini bulun. Ardından jar dosyasını blob kapsayıcınıza yükleyin.

    Birden çok .jar dosyası olabilir (2.3.x, 2.4.x ve 3.0.x Spark sürümleri için). Küme oluşturma sırasında seçtiğiniz Spark sürümüyle eşleşen .jar dosyasını seçmeniz gerekir. Örneğin, küme oluşturma sırasında Spark 2.4'ü seçerseniz microsoft-spark-2-4_2.11-1.0.0.jar'ı seçin.

  6. Kümenizin uygulamanıza girişi olması gerekir. mySparkApp dizininize gidin ve dizininiinput.txt. Upload blob kapsayıcısı içinde user/sshuser dizinine kaydedin. Kümenize ssh üzerinden bağlanacak ve bu klasör kümenizin girişini aramasını sağlar. input.txt dosyası, belirli bir dizine yüklenen tek dosyadır.

HDInsight betik eylemlerini çalıştırma

Kümeniz çalıştırıldıktan ve dosyalarınızı Azure'a yükledikten sonra, kümede install-worker.sh betiği çalıştırın.

  1. Azure portal'da HDInsight Spark kümenize gidin ve Betik eylemleri'ni seçin.

  2. + Yeni gönder'i seçin ve aşağıdaki değerleri kullanın:

    Özellik Açıklama
    Betik türü Özel
    Name Çalışan Yükleme
    Bash betiği URI'si https://mystorageaccount.blob.core.windows.net/mycontainer/install-worker.sh
    Bu URI'yi onaylamak için, install-worker.sh'Azure Depolama Gezgini'yi seçin.
    Düğüm türü Işçi
    Parametreler azure
    wasbs://mycontainer@myStorageAccount.blob.core.windows.net/Microsoft.Spark.Worker.netcoreapp3.1.linux-x64-1.0.0.tar.gz
    /usr/local/bin
  3. Betiğinizi göndermek için Oluştur'a tıklayın.

Uygulamanızı çalıştırma

  1. Azure portal'de HDInsight Spark kümenize gidin ve SSH + Küme oturum açma'ya tıklayın.

  2. ssh oturum açma bilgilerini kopyalayın ve oturum açma bilgilerini bir terminale yapıştırın. Küme oluşturma sırasında ayar parolayı kullanarak kümede oturum açma. Sizi Ubuntu ve Spark'a davet ediyor iletileri görüyorsanız.

  3. HdInsight kümeniz üzerinde uygulama çalıştırmak için spark-submit komutunu kullanın. Örnek betikte mycontainer ve mystorageaccount yerine blob kapsayıcınızı ve depolama hesabınızla ilgili gerçek adları kullanın.

    $SPARK_HOME/bin/spark-submit \
    --master yarn \
    --class org.apache.spark.deploy.dotnet.DotnetRunner \
    wasbs://mycontainer@mystorageaccount.blob.core.windows.net/microsoft-spark-2-4_2.11-1.0.0.jar \
    wasbs://mycontainer@mystorageaccount.blob.core.windows.net/publish.zip mySparkApp
    

    Uygulama çalıştırıldığı zaman, konsola yazılan, başlarken yerel çalıştırmadaki aynı sözcük sayısı tablosu görüntülenir. Tebrikler, bulutta bir uygulama için ilk .NET Apache Spark çalıştırıldınız!

Kaynakları temizleme

HDInsight, verilerinizi Azure Depolama'a kaydeder, böylece bir kümeyi kullanımda değilken güvenle silebilirsiniz. Ayrıca, kullanılmıyorken dahi HDInsight kümesi için sizden ücret kesilir. Küme ücretleri depolama ücretlerinin birkaç katı olduğundan, kullanılmadığında kümelerin silinmesi mantıklı olandır.

Kaynak grubu adını seçerek de kaynak grubu sayfasını açabilir ve sonra Kaynak grubunu sil’i seçebilirsiniz. Kaynak grubunu silerek hem HDInsight Spark kümesini hem de varsayılan depolama hesabını silersiniz.

Sonraki adımlar

Bu öğreticide, Apache Spark için .NET Azure HDInsight. HDInsight hakkında daha fazla bilgi edinmek için Azure HDInsight devam edin.