Konsep Inti Apache Spark di Azure Synapse Analytics

Apache Spark merupakan kerangka kerja pemrosesan paralel yang mendukung pemrosesan dalam memori untuk meningkatkan performa aplikasi analitik data besar. Apache Spark di Azure Synapse Analytics adalah salah satu implementasi Microsoft dari Apache Spark di cloud.

Azure Synapse memudahkan untuk membuat dan mengonfigurasi kemampuan Spark di Azure. Azure Synapse menyediakan implementasi berbeda dari kemampuan Spark ini yang didokumentasikan di sini.

Kumpulan Spark

Kumpulan Apache Spark tanpa server dibuat di portal Microsoft Azure. Ini adalah definisi dari kumpulan Spark yang, ketika diinstasiasi, digunakan untuk membuat instans Spark yang memproses data. Saat kumpulan Spark dibuat, ia hanya ada sebagai metadata, dan tidak ada sumber daya yang dikonsumsi, dijalankan, atau dibebankan biayanya. Suatu kumpulan Spark memiliki serangkaian properti yang mengontrol karakteristik instans Spark. Karakteristik ini termasuk tetapi tidak terbatas pada nama, ukuran, perilaku penskalaan, waktu untuk beroperasi.

Karena tidak ada biaya dolar atau sumber daya yang terkait dengan pembuatan kumpulan Spark, nomor apa pun dapat dibuat dengan sejumlah konfigurasi yang berbeda. Izin juga dapat diterapkan ke kumpulan Spark yang memungkinkan pengguna hanya memiliki akses ke beberapa dan bukan yang lain.

Praktik terbaik adalah membuat kumpulan Spark yang lebih kecil yang dapat digunakan untuk pengembangan dan penelusuran kesalahan dan kemudian yang lebih besar untuk menjalankan beban kerja produksi.

Anda dapat membaca cara membuat kumpulan Spark dan melihat semua properti mereka di sini Mulai menggunakan kumpulan Spark di Azure Synapse Analytics

Instans Spark

Instans Spark dibuat saat Anda terhubung ke kumpulan Spark, membuat sesi, dan menjalankan pekerjaan. Karena beberapa pengguna mungkin memiliki akses ke satu kumpulan Spark, suatu instans Spark baru dibuat untuk setiap pengguna yang terhubung.

Saat Anda mengirimkan pekerjaan kedua, jika ada kapasitas di kumpulan, instans Spark yang ada juga memiliki kapasitas. Kemudian, instans yang ada memproses pekerjaan. Jika tidak, jika kapasitas tersedia di tingkat kumpulan, instans Spark baru dibuat.

Penagihan untuk instans dimulai saat Azure VM dimulai. Penagihan untuk instans kumpulan Spark berhenti saat instans kumpulan berubah menjadi berakhir. Untuk informasi selengkapnya tentang bagaimana Azure VM dimulai dan dibatalkan alokasinya, lihat Status dan status penagihan Azure Virtual Machines.

Contoh

Contoh 1

  • Anda membuat kumpulan Spark yang disebut SP1; ini memiliki ukuran kluster tetap 20 node sedang
  • Anda mengirimkan pekerjaan notebook, J1 yang menggunakan 10 simpul, instans Spark, SI1 dibuat untuk memproses pekerjaan
  • Anda sekarang mengirimkan pekerjaan lain, J2, yang menggunakan 10 simpul karena masih ada kapasitas di kumpulan dan instans, J2, diproses oleh SI1
  • Jika J2 meminta 11 node, tidak akan ada kapasitas di SP1 atau SI1. Dalam hal ini, jika J2 berasal dari notebook, maka pekerjaan ditolak; jika J2 berasal dari pekerjaan batch, itu diantrekan.
  • Penagihan dimulai pada pengiriman pekerjaan notebook J1.
    • Kumpulan Spark dibuat dengan 20 simpul sedang, masing-masing dengan 8 vCore, dan biasanya membutuhkan waktu ~ 3 menit untuk memulai. 20 x 8 = 160 vCore.
    • Bergantung pada waktu mulai kumpulan Spark yang tepat, batas waktu diam, dan runtime dua pekerjaan notebook; kumpulan kemungkinan berjalan selama antara 18 dan 20 menit (waktu instansiasi kumpulan Spark + runtime pekerjaan notebook + batas waktu diam).
    • Dengan asumsi runtime 20 menit, 160 x 0,3 jam = 48 jam vCore.
    • Catatan: Jam vCore ditagih per menit dan harga vCore bervariasi menurut wilayah Azure. Untuk informasi selengkapnya, lihat Harga Azure Synapse

Contoh 2

  • Anda membuat panggilan kumpulan Spark SP2; ini memiliki skala otomatis yang diaktifkan dengan minimal 10 hingga maksimum 20 node sedang
  • Anda mengirimkan pekerjaan notebook J1 yang menggunakan 10 simpul; Spark instance SI1 dibuat untuk memproses pekerjaan
  • Anda sekarang mengirimkan pekerjaan lain J2 yang menggunakan 10 simpul; karena masih ada kapasitas di kumpulan instans secara otomatis menskalakan ke 20 simpul dan memproses J2.
  • Penagihan dimulai pada pengiriman pekerjaan notebook J1.
    • Kumpulan Spark dibuat dengan 10 simpul sedang, masing-masing dengan 8 vCore, dan biasanya membutuhkan waktu ~3 menit untuk memulai. 10 x 8, 80 vCore.
    • Pada pengiriman J2, kumpulan menskalakan otomatis dengan menambahkan 10 simpul sedang lainnya, dan biasanya membutuhkan waktu 4 menit untuk skala otomatis. Menambahkan 10 x 8, 80 vCore dengan total 160 vCore.
    • Tergantung pada waktu mulai kumpulan Spark, runtime pekerjaan notebook pertama J1, waktu untuk meningkatkan kumpulan, runtime notebook kedua, dan akhirnya batas waktu diam; kumpulan kemungkinan akan berjalan antara 22 dan 24 menit (waktu instansiasi kumpulan Spark + runtime kerja notebook J1 semuanya pada 80 vCore) + (waktu penskalaan otomatis kumpulan Spark + runtime pekerjaan notebook J2 + batas waktu menganggur semua pada 160 vCore).
    • 80 vCore selama 4 menit + 160 vCore selama 20 menit = 58,67 jam vCore.
    • Catatan: Jam vCore ditagih per menit dan harga vCore bervariasi menurut wilayah Azure. Untuk informasi selengkapnya, lihat Harga Azure Synapse

Contoh 3

  • Anda membuat kumpulan Spark yang disebut SP1; ini memiliki ukuran kluster tetap yaitu 20 simpul.
  • Anda mengirimkan pekerjaan notebook J1 yang menggunakan 10 simpul; Spark instance SI1 dibuat untuk memproses pekerjaan.
  • Pengguna lain U2, mengirimkan Pekerjaan J3 yang menggunakan 10 simpul; Spark instance SI2 baru dibuat untuk memproses pekerjaan.
  • Anda sekarang mengirimkan pekerjaan lain J2 yang menggunakan 10 simpul; karena masih ada kapasitas di kumpulan dan instans J2 diproses oleh SI1.
  • Penagihan dimulai pada pengiriman pekerjaan notebook J1.
    • Kumpulan Spark SI1 dibuat dengan 20 simpul sedang, masing-masing dengan 8 vCore, dan biasanya membutuhkan waktu ~ 3 menit untuk memulai. 20 x 8, 160 vCore.
    • Tergantung pada waktu mulai kumpulan Spark yang tepat, batas waktu ide dan runtime pekerjaan notebook pertama, dan ketiga; Kumpulan SI1 kemungkinan akan berjalan selama antara 18 dan 20 menit (waktu instansiasi kumpulan Spark + runtime pekerjaan notebook + batas waktu diam).
    • Kumpulan Spark SI2 lainnya dibuat dengan 20 simpul sedang, masing-masing dengan 8 vCore, dan biasanya membutuhkan waktu ~ 3 menit untuk memulai. 20 x 8, 160 vCore
    • Bergantung pada waktu mulai kumpulan Spark yang tepat, batas waktu ide dan runtime pekerjaan notebook pertama; Kumpulan SI2 kemungkinan berjalan selama antara 18 dan 20 menit (waktu instansiasi kumpulan Spark + runtime pekerjaan notebook + batas waktu diam).
    • Dengan asumsi kedua kumpulan berjalan selama masing-masing 20 menit, 160 x .03 x 2 = 96 vCore jam.
    • Catatan: Jam vCore ditagih per menit dan harga vCore bervariasi menurut wilayah Azure. Untuk informasi selengkapnya, lihat Harga Azure Synapse

Batasan kuota dan sumber daya di Apache Spark untuk Azure Synapse

Tingkat ruang kerja

Setiap ruang kerja Azure Synapse dilengkapi dengan kuota default vCores yang dapat digunakan untuk Spark. Kuota dibagi antara kuota pengguna dan kuota aliran data sehingga pola penggunaan tidak menggunakan semua vCores di ruang kerja. Kuotanya berbeda tergantung jenis langganan Anda tetapi simetris antara pengguna dan aliran data. Namun jika Anda meminta lebih banyak vCore daripada yang tersisa di ruang kerja, maka Anda akan mendapatkan kesalahan berikut:

Failed to start session: [User] MAXIMUM_WORKSPACE_CAPACITY_EXCEEDED
Your Spark job requested 480 vCores.
However, the workspace only has xxx vCores available out of quota of yyy vCores.
Try reducing the numbers of vCores requested or increasing your vCore quota. Click here for more information - https://go.microsoft.com/fwlink/?linkid=213499

Tautan dalam pesan mengarah ke artikel ini.

Artikel berikut ini menjelaskan cara meminta peningkatan kuota vCore ruang kerja.

  • Pilih "Azure Synapse Analytics" sebagai jenis layanan.
  • Di jendela detail Kuota, pilih Apache Spark (vCore) per ruang kerja

Meminta peningkatan kapasitas melalui portal Microsoft Azure

Tingkat kumpulan Spark

Saat Anda menentukan kumpulan Spark, Anda secara efektif menentukan kuota per pengguna untuk kumpulan tersebut, jika Anda menjalankan beberapa notebook, atau pekerjaan atau campuran dari 2 dimungkinkan untuk menghabiskan kuota kumpulan. Jika Anda melakukannya, maka pesan kesalahan akan dihasilkan

Failed to start session: Your Spark job requested xx vCores.
However, the pool is consuming yy vCores out of available zz vCores.Try ending the running job(s) in the pool, reducing the numbers of vCores requested, increasing the pool maximum size or using another pool

Untuk mengatasi masalah ini, Anda harus mengurangi penggunaan sumber daya kumpulan sebelum mengirimkan permintaan sumber daya baru dengan menjalankan buku catatan atau pekerjaan.

Langkah berikutnya