Tutorial: Menyebarkan aplikasi .NET untuk Apache Spark ke Azure HDInsight
Tutorial ini mengajarkan Anda cara menyebarkan aplikasi .NET untuk Apache Spark ke cloud melalui kluster Azure HDInsight. HDInsight memudahkan untuk membuat dan mengonfigurasi kluster Spark di Azure karena kluster Spark di HDInsight kompatibel dengan Azure Storage dan Azure Data Lake Storage.
Dalam tutorial ini, Anda akan mempelajari cara:
- Akses akun penyimpanan Anda menggunakan Azure Storage Explorer.
- Membuat kluster Azure HDInsight.
- Terbitkan aplikasi .NET untuk Apache Spark Anda.
- Membuat dan menjalankan tindakan skrip HDInsight.
- Jalankan aplikasi .NET untuk Apache Spark pada kluster HDInsight.
Prasyarat
Sebelum memulai, lakukan tugas berikut:
- Jika Anda tidak memiliki langganan Azure, buat akun gratis.
- Masuk ke portal Azure.
- Instal Azure Storage Explorer di komputer Windows, Linux, atau MacOS Anda.
- Selesaikan tutorial .NET untuk Apache Spark - Mulai dalam 10 Menit.
Mengakses akun penyimpanan Anda
Buka Azure Storage Explorer.
Pilih Tambahkan Akun di menu sebelah kiri, dan masuk ke akun Azure Anda.

Setelah masuk, Anda akan melihat semua akun penyimpanan yang Anda miliki dan sumber daya apa pun yang telah Anda unggah ke akun penyimpanan Anda.
Membuat kluster HDInsight
Penting
Penagihan untuk kluster HDInsight diprorata per menit, bahkan jika Anda tidak menggunakannya. Pastikan untuk menghapus kluster Anda setelah selesai menggunakannya. Untuk informasi selengkapnya, lihat bagian Membersihkan sumber daya dari tutorial ini.
Kunjungi portal Azure.
Pilih + Buat sumber daya. Kemudian, pilih HDInsight dari kategori Analitik .

Di bawah Dasar, berikan nilai berikut ini:
Properti Deskripsi Langganan Dari menu drop-down, pilih salah satu langganan Azure aktif Anda. Grup sumber daya Tentukan apakah Anda ingin membuat grup sumber daya baru atau menggunakan grup sumber daya yang sudah ada. Grup sumber daya adalah penampung yang menampung sumber daya terkait untuk sebuah solusi Azure. Nama kluster Berikan nama ke kluster HDInsight Spark Anda. Lokasi Pilih lokasi untuk grup sumber daya. Templat menggunakan lokasi ini untuk membuat kluster serta untuk penyimpanan kluster default. Jenis kluster Pilih Spark sebagai jenis kluster. Versi Kluster Bidang ini akan diisi otomatis dengan versi default setelah jenis kluster dipilih. Pilih Spark versi 2.3 atau 2.4. Nama pengguna masuk kluster Masukkan nama pengguna masuk kluster. Nama defaultnya adalah admin. Sandi login kluster Masukkan kata sandi masuk apa pun. Nama pengguna Secure Shell (SSH) Masukkan nama pengguna SSH. Secara default, akun ini memiliki kata sandi yang sama dengan akun nama pengguna Cluster Login. Pilih Berikutnya: Storage >> untuk melanjutkan ke halaman Storage. Di Penyimpanan, berikan nilai berikut ini:
Properti Deskripsi Jenis penyimpanan utama Gunakan nilai default Azure Storage. Metode pemilihan Gunakan nilai default Pilih dari daftar. Akun penyimpanan primer Pilih langganan Anda dan salah satu akun penyimpanan aktif Anda dalam langganan tersebut. Kontainer Kontainer ini adalah kontainer blob tertentu di akun penyimpanan Anda di mana kluster Anda mencari file untuk menjalankan aplikasi Anda di cloud. Anda dapat memberinya nama yang tersedia. Di bawah Tinjau + buat, pilih Buat. Dibutuhkan sekitar 20 menit untuk membuat kluster. Kluster harus dibuat sebelum Anda dapat melanjutkan ke langkah berikutnya.
Menerbitkan aplikasi Anda
Selanjutnya, Anda menerbitkan mySparkApp yang dibuat di .NET untuk Apache Spark - Mulai dalam tutorial 10 Menit, yang memberi kluster Spark Anda akses ke semua file yang diperlukan untuk menjalankan aplikasi Anda.
Jalankan perintah berikut untuk menerbitkan mySparkApp:
Di Windows:
cd mySparkApp dotnet publish -c Release -f netcoreapp3.1 -r win-x64Di Linux:
cd mySparkApp foo@bar:~/path/to/app$ dotnet publish -c Release -f netcoreapp3.1 -r ubuntu.16.04-x64Lakukan tugas berikut untuk membuat zip file aplikasi yang dipublikasikan sehingga Anda dapat dengan mudah mengunggahnya ke kluster HDInsight Anda. Zip konten folder terbitkan, publish.zip misalnya, yang dibuat sebagai hasil dari Langkah 1. Semua rakitan harus berada di lapisan pertama file ZIP dan tidak boleh ada lapisan folder perantara. Ini berarti ketika Anda membuka zippublish.zip, semua rakitan diekstraksi ke direktori kerja Anda saat ini.
Di Windows:
Gunakan program ekstraksi, seperti 7-Zip atau WinZip, untuk mengekstrak file ke direktori bin dengan semua biner yang diterbitkan.
Di Linux, jalankan perintah berikut:
zip -r publish.zip
Upload file ke Azure
Selanjutnya, Anda menggunakan Azure Storage Explorer untuk mengunggah lima file berikut ke kontainer blob yang Anda pilih untuk penyimpanan kluster Anda:
- Microsoft.Spark.Worker
- install-worker.sh
- publish.zip
- microsoft-spark-2-4_2.11-1.0.0.jar
- input.txt
Buka Azure Storage Explorer dan navigasi ke akun penyimpanan Anda dari menu sebelah kiri. Telusuri paling detail kontainer blob untuk kluster Anda di bawah Kontainer Blob di akun penyimpanan Anda.
Microsoft.Spark.Worker membantu Apache Spark menjalankan aplikasi Anda, seperti fungsi yang ditentukan pengguna (UDF) yang mungkin telah Anda tulis. Unduh Microsoft.Spark.Worker. Kemudian, pilih Upload di Azure Storage Explorer untuk mengunggah pekerja.

install-worker.sh adalah skrip yang memungkinkan Anda menyalin .NET untuk file dependen Apache Spark ke dalam simpul kluster Anda.
Buat file baru bernama install-worker.sh di komputer lokal Anda, dan tempelkan konten install-worker.sh yang terletak di GitHub. Kemudian, unggah install-worker.sh ke kontainer blob Anda.
Kluster Anda memerlukan file publish.zip yang berisi file yang dipublikasikan aplikasi Anda. Buka folder yang diterbitkan, mySparkApp/bin/Release/netcoreapp3.1/ubuntu.16.04-x64, dan temukan publish.zip. Kemudian unggah publish.zip ke kontainer blob Anda.
Kluster Anda memerlukan kode aplikasi yang dipaketkan sebagai jar, disertakan sebagai bagian dari nuget Microsoft.Spark dan dikolokasikan di direktori output build aplikasi Anda. Navigasi ke folder yang diterbitkan, mySparkApp/bin/Release/netcoreapp3.1/ubuntu.16.04-x64, dan temukan microsoft-spark-2-4_2.11-1.0.0.jar. Kemudian, unggah file jar ke kontainer blob Anda.
Mungkin ada beberapa file .jar (untuk versi 2.3.x, 2.4.x dan 3.0.x dari Spark). Anda perlu memilih file .jar yang cocok dengan versi Spark yang Anda pilih selama pembuatan kluster. Misalnya, pilih microsoft-spark-2-4_2.11-1.0.0.jar jika Anda memilih Spark 2.4 selama pembuatan kluster.
Kluster Anda memerlukan input ke aplikasi Anda. Navigasi ke direktori mySparkApp Anda dan temukan input.txt. Upload file input Anda ke direktori pengguna/sshuser di kontainer blob Anda. Anda akan terhubung ke kluster Anda melalui ssh, dan folder ini adalah tempat kluster Anda mencari inputnya. File input.txt adalah satu-satunya file yang diunggah ke direktori tertentu.
Menjalankan tindakan skrip HDInsight
Setelah kluster berjalan dan Anda telah mengunggah file ke Azure, Anda menjalankan skrip install-worker.sh pada kluster.
Navigasi ke kluster HDInsight Spark Anda di portal Azure, lalu pilih Tindakan skrip.
Pilih + Kirim baru dan berikan nilai berikut:
Properti Deskripsi Jenis skrip Kustom Nama Menginstal Pekerja URI skrip bash https://mystorageaccount.blob.core.windows.net/mycontainer/install-worker.shUntuk mengonfirmasi URI ini, klik kanan install-worker.sh di Azure Storage Explorer dan pilih Properti.Jenis node Worker Parameter azure wasbs://mycontainer@myStorageAccount.blob.core.windows.net/Microsoft.Spark.Worker.netcoreapp3.1.linux-x64-1.0.0.tar.gz /usr/local/bin Pilih Buat untuk mengirimkan skrip Anda.
Jalankan aplikasi Anda
Navigasikan ke kluster HDInsight Spark Anda di portal Azure, lalu pilih masuk SSH + Kluster.
Salin informasi login ssh dan tempelkan login ke terminal. Masuk ke kluster Anda menggunakan kata sandi yang Anda tetapkan selama pembuatan kluster. Anda akan melihat pesan yang menyambut Anda di Ubuntu dan Spark.
Gunakan perintah spark-submit untuk menjalankan aplikasi Anda di kluster HDInsight Anda. Ingatlah untuk mengganti mycontainer dan mystorageaccount dalam contoh skrip dengan nama sebenarnya dari kontainer blob dan akun penyimpanan Anda.
$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 mySparkAppSaat aplikasi berjalan, Anda akan melihat tabel hitungan kata yang sama dari memulai eksekusi lokal yang ditulis ke konsol. Selamat, Anda telah menjalankan aplikasi .NET untuk Apache Spark pertama Anda di cloud!
Membersihkan sumber daya
HDInsight menyimpan data Anda di Azure Storage, sehingga Anda dapat menghapus kluster dengan aman saat tidak digunakan. Anda juga dikenakan biaya untuk klaster HDInsight, meski saat klaster tidak digunakan. Karena biaya untuk kluster berkali-kali lebih banyak daripada biaya untuk penyimpanan, akan lebih ekonomis untuk menghapus kluster saat tidak digunakan.
Anda juga dapat memilih nama grup sumber daya untuk membuka halaman grup sumber daya, lalu memilih Hapus grup sumber daya. Dengan menghapus grup sumber daya, Anda menghapus kluster HDInsight dan akun penyimpanan default.
Langkah berikutnya
Dalam tutorial ini, Anda menyebarkan aplikasi .NET untuk Apache Spark ke Azure HDInsight. Untuk mempelajari selengkapnya tentang HDInsight, lanjutkan ke Dokumentasi Azure HDInsight.