Bagikan melalui


Mengelola sumber daya untuk kluster Apache Spark pada Azure HDInsight

Pelajari cara mengakses antarmuka seperti Apache Ambari UI, Apache Hadoop YARN UI, dan Spark History Server yang terkait dengan kluster Apache Spark Anda, dan cara menyetel konfigurasi kluster untuk kinerja optimal.

Membuka Spark History Server

Spark History Server adalah UI web untuk aplikasi Spark yang sudah selesai maupun masih berjalan. Ia merupakan perpanjangan dari Spark Web UI. Untuk informasi selengkapnya, lihat Spark History Server.

Membuka Yarn UI

Anda dapat menggunakan YARN UI untuk memantau aplikasi yang saat ini berjalan pada kluster Spark.

  1. Dari portal Azure, buka kluster Spark. Untuk informasi selengkapnya, lihat Cantumkan dan tunjukkan kluster.

  2. Dari dasbor Kluster, pilih Yarn. Saat diminta, masukkan info masuk admin untuk kluster Spark.

    Launch YARN UI.

    Tip

    Atau, Anda juga dapat meluncurkan YARN UI dari Ambari UI. Dari Ambari UI, arahkan ke YARN>Tautan Cepat>Aktif>Resource Manager UI.

Mengoptimalkan kluster untuk aplikasi Spark

Tiga parameter utama yang dapat digunakan untuk konfigurasi Spark, tergantung dari kebutuhan aplikasi, adalah spark.executor.instances, spark.executor.cores, dan spark.executor.memory. Executor adalah proses yang diluncurkan untuk aplikasi Spark. Ia berjalan pada simpul pekerja dan bertanggung jawab untuk menjalankan tugas untuk aplikasi. Jumlah default eksekutor dan ukuran eksekutor untuk setiap kluster dihitung berdasarkan jumlah simpul pekerja dan ukuran simpul pekerja. Informasi ini disimpan di spark-defaults.conf pada head node kluster.

Ketiga parameter konfigurasi ini dapat dikonfigurasi pada tingkat kluster (untuk semua aplikasi yang berjalan pada kluster) dan juga ditentukan untuk setiap aplikasi individu.

Mengubah parameter menggunakan Ambari UI

  1. Dari Ambari UI arahkan ke Spark2>Konfigurasi>spark2-defaults Kustom.

    Set parameters using Ambari custom.

  2. Nilai default tidak bermasalah saat ada empat aplikasi Spark yang berjalan bersamaan pada kluster. Anda bisa mengubah nilai ini dari antarmuka pengguna, seperti yang ditampilkan dalam cuplikan layar berikut:

    Set parameters using Ambari.

  3. Pilih Simpan untuk menyimpan perubahan konfigurasi. Di bagian atas halaman, Anda diminta untuk memulai ulang semua layanan yang terdampak. Pilih Hidupkan ulang.

    Restart services.

Mengubah parameter untuk aplikasi yang berjalan di Jupyter Notebook

Untuk aplikasi yang berjalan di Jupyter Notebook, Anda dapat menggunakan keajaiban %%configure untuk membuat perubahan konfigurasi. Idealnya, Anda harus membuat perubahan tersebut di awal aplikasi, sebelum Anda menjalankan sel kode pertama Anda. Tindakan ini memastikan konfigurasi diterapkan ke sesi Livy, ketika ia dibuat. Untuk mengubah konfigurasi pada tahap selanjutnya dalam aplikasi, Anda harus menggunakan parameter -f. Akan tetapi, dengan melakukannya semua kemajuan dalam aplikasi hilang.

Cuplikan berikut menunjukkan cara mengubah konfigurasi untuk aplikasi yang berjalan di Jupyter.

%%configure
{"executorMemory": "3072M", "executorCores": 4, "numExecutors":10}

Parameter konfigurasi harus diteruskan sebagai string JSON dan harus berada di baris berikutnya setelah keajaiban, seperti yang ditampilkan di kolom contoh.

Mengubah parameter untuk aplikasi yang dikirim menggunakan spark-submit

Perintah berikut adalah contoh cara mengubah parameter konfigurasi untuk aplikasi batch yang dikirim menggunakanspark-submit.

spark-submit --class <the application class to execute> --executor-memory 3072M --executor-cores 4 –-num-executors 10 <location of application jar file> <application parameters>

Mengubah parameter untuk aplikasi yang dikirim menggunakan cURL

Perintah berikut adalah contoh cara mengubah parameter konfigurasi untuk aplikasi batch yang dikirim menggunakan cURL.

curl -k -v -H 'Content-Type: application/json' -X POST -d '{"file":"<location of application jar file>", "className":"<the application class to execute>", "args":[<application parameters>], "numExecutors":10, "executorMemory":"2G", "executorCores":5' localhost:8998/batches

Catatan

Salin file JAR ke akun penyimpanan kluster Anda. Jangan menyalin file JAR langsung ke head node.

Mengubah parameter-parameter ini pada Spark Thrift Server

Spark Thrift Server menyediakan akses JDBC/ODBC ke kluster Spark dan digunakan untuk melayani kueri Spark SQL. Alat seperti Power BI, Tableau, dan sebagainya, menggunakan protokol ODBC untuk berkomunikasi dengan Spark Thrift Server untuk menjalankan kueri Spark SQL sebagai Spark Application. Ketika kluster Spark dibuat, dua instans Spark Thrift Server dimulai, satu untuk setiap head node. Setiap Spark Thrift Server terlihat sebagai aplikasi Spark di YARN UI.

Spark Thrift Server menggunakan alokasi eksekutor dinamis Spark dan karenanya spark.executor.instances tidak digunakan. Sebaliknya, Spark Thrift Server menggunakan spark.dynamicAllocation.maxExecutors dan spark.dynamicAllocation.minExecutors untuk menentukan jumlah eksekutor. Parameter konfigurasi spark.executor.cores, dan spark.executor.memory digunakan untuk memodifikasi ukuran eksekutor. Anda dapat mengubah parameter ini seperti yang ditampilkan di langkah-langkah berikut:

  • Perluas kategori spark2-thrift-sparkconf Tingkat Lanjut untuk memperbarui parameter spark.dynamicAllocation.maxExecutors, dan spark.dynamicAllocation.minExecutors.

    Configure Spark thrift server.

  • Perluas kategori spark2-thrift-sparkconf Kustom untuk memperbarui parameter spark.executor.cores, dan spark.executor.memory.

    Configure Spark thrift server parameter.

Mengubah memori driver dari Spark Thrift Server

Memori driver Spark Thrift Server dikonfigurasi hingga 25% dari ukuran RAM node head, asalkan ukuran RAM total head node lebih besar dari 14 GB. Anda dapat menggunakan Ambari UI untuk mengubah konfigurasi memori driver, seperti yang ditampilkan di cuplikan layar berikut:

Dari Ambari UI, arahkan ke Spark2>Konfigurasi>spark2-env Tingkat Lanjut. Kemudian sediakan nilai untukspark_thrift_cmd_opts.

Mengklaim kembali sumber daya kluster Spark

Karena alokasi dinamis Spark, satu-satunya sumber daya yang dikonsumsi oleh thrift server adalah sumber daya untuk dua master aplikasi. Untuk mengklaim kembali sumber daya ini, Anda harus menghentikan layanan Thrift Server yang berjalan pada kluster.

  1. Dari Ambari UI, dari panel kiri, pilih Spark2.

  2. Di halaman berikutnya, pilih Spark2 Thrift Servers.

    Restart thrift server1.

  3. Anda akan melihat dua headnode tempat Spark2 Thrift Server berjalan. Pilih salah satu headnode.

    Restart thrift server2.

  4. Halaman berikutnya mencantumkan semua layanan yang berjalan pada headnode tersebut. Dari daftar, pilih tombol dropdown di samping Spark2 Thrift Server, lalu pilih Hentikan.

    Restart thrift server3.

  5. Ulangi langkah-langkah ini pada headnode lain.

Memulai ulang layanan Jupyter

Luncurkan Ambari Web UI seperti yang ditampilkan di awal artikel. Dari panel navigasi kiri, pilih Jupyter, pilih Tindakan Layanan, lalu pilih Mulai Ulang Semua. Tindakan ini memulai layanan Jupyter pada semua headnode.

Restart Jupyter.

Memantau sumber daya

Luncurkan YARN UI seperti yang ditampilkan di awal artikel. Dalam tabel Metrik Kluster di atas layar, periksa nilai kolom Memori yang Digunakan dan Total Memori. Jika dua nilai tersebut hampir sama, mungkin tidak ada cukup sumber daya untuk memulai aplikasi berikutnya. Hal yang sama berlaku untuk kolom VCores yang Digunakan dan Total VCores. Juga, dalam tampilan utama, jika ada aplikasi yang tetap berada dalam status DITERIMA dan tidak bertransisi ke status BERJALAN atau GAGAL, hal ini juga bisa menjadi indikasi bahwa ia tidak mendapatkan sumber daya yang cukup untuk memulai.

Resource Limit.

Menghentikan aplikasi yang berjalan

  1. Di Yarn UI, dari panel kiri, pilih Berjalan. Dari daftar aplikasi yang berjalan, tentukan aplikasi yang akan dihentikan dan pilih ID.

    Kill App1.

  2. Pilih Hentikan Application di pojok kanan atas, lalu pilih OK.

    Kill App2.

Lihat juga

Untuk analis data

Untuk pengembang Apache Spark