Pemantauan perencanaan kapasitas DPU - AWS Glue

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pemantauan perencanaan kapasitas DPU

Anda dapat menggunakan metrik tugas di AWS Glue untuk memperkirakan jumlah unit pemrosesan data (DPU) yang dapat digunakan untuk menskalakan keluar sebuah tugas AWS Glue.

catatan

Halaman ini hanya berlaku untuk AWS Glue versi 0.9 dan 1.0. Versi selanjutnya AWS Glue berisi fitur hemat biaya yang memperkenalkan pertimbangan tambahan saat perencanaan kapasitas.

Kode diprofilkan

Skrip berikut membaca partisi Amazon Simple Storage Service (Amazon S3) yang berisi 428 file JSON gzip. Skrip tersebut menerapkan pemetaan untuk mengubah nama bidang, dan mengkonversi dan menuliskannya mereka ke Amazon S3 dalam format Apache Parquet. Anda menyediakan 10 DPU sesuai default dan menjalankan tugas ini.

datasource0 = glueContext.create_dynamic_frame.from_options(connection_type="s3", connection_options = {"paths": [input_path], "useS3ListImplementation":True,"recurse":True}, format="json") applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [(map_spec]) datasink2 = glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": output_path}, format = "parquet")

Visualisasikan metrik yang diprofilkan di konsol AWS Glue

Job run 1: Dalam job run ini kami menunjukkan cara mencari apakah ada DPU yang kurang disediakan di cluster. Fungsi eksekusi tugas di AWS Glue menampilkan total jumlah pelaksana yang berjalan aktif, jumlah tahap yang telah selesai, dan jumlah maksimal pelaksana yang dibutuhkan.

Jumlah pelaksana maksimum yang dibutuhkan dihitung dengan menambahkan jumlah total tugas berjalan dan tugas yang tertunda, dan membaginya dengan tugas per pelaksana. Hasil ini adalah ukuran jumlah total pelaksana yang diperlukan untuk memenuhi beban saat ini.

Sebaliknya, jumlah pelaksana yang berjalan aktif mengukur berapa banyak pelaksana yang menjalankan tugas Apache Spark secara aktif. Saat tugas berlangsung, pelaksana maksimum yang diperlukan dapat mengubah dan biasanya turun menjelang akhir tugas saat antrean tugas tertunda berkurang.

Garis merah horizontal pada grafik berikut menunjukkan jumlah pelaksana maksimum yang dialokasikan, yang bergantung pada jumlah DPU yang Anda alokasikan untuk tugas tersebut. Dalam kasus ini, Anda mengalokasikan 10 DPU untuk eksekusi tugas tersebut. Satu DPU dicadangkan untuk pengelolaan. Sembilan DPU menjalankan masing-masing dua pelaksana dan satu pelaksana dicadangkan untuk driver Spark. Driver Spark berjalan dalam aplikasi utama. Jadi, jumlah maksimum pelaksana yang dialokasikan adalah 2*9 - 1 = 17 pelaksana.

Metrik tugas yang menunjukkan pelaksana aktif dan pelaksana maksimum yang dibutuhkan.

Sebagaimana ditunjukkan dalam grafik, jumlah maksimum pelaksana yang diperlukan mulai pada 107 pada awal tugas, sedangkan jumlah pelaksana aktif tetap 17. Jumlah ini sama dengan jumlah maksimum pelaksana yang dialokasikan dengan 10 DPU. Rasio antara jumlah maksimum pelaksana yang dibutuhkan dan jumlah maksimum pelaksana yang dialokasikan (menambahkan 1 ke kedua driver Spark) memberi Anda faktor kurang-penyediaan: 108/18 = 6x. Anda dapat menyediakan 6 (rasio kurang-penyediaan) *9 (kapasitas DPU saat ini - 1) + 1 DPU = 55 DPU untuk menskalakan keluar tugas untuk menjalankannya dengan paralelisme maksimum dan selesai dengan waktu lebih cepat.

Konsol AWS Glue menampilkan metrik tugas detail sebagai garis statis yang mewakili jumlah asli dari jumlah maksimum pelaksana yang dialokasikan. Konsol menghitung pelaksana maksimum yang dialokasikan dari definisi tugas untuk metrik. Sebaliknya, untuk metrik eksekusi tugas detail, konsol menghitung jumlah maksimum pelaksana dialokasikan dari konfigurasi eksekusi tugas, khususnya DPU yang dialokasikan untuk eksekusi tugas. Untuk melihat metrik masing-masing eksekusi tugas, pilih sebuah eksekusi tugas dan pilih Lihat metrik eksekusi.

Metrik tugas yang menunjukkan pergerakan data ETL.

Melihat byte Amazon S3 yang di-baca dan di-tulis, perhatikan bahwa tugas menghabiskan waktu enam menit streaming data dari Amazon S3 dan menuliskannya secara paralel. Semua inti pada DPU yang dialokasikan membaca dan menulis ke Amazon S3. Jumlah maksimum pelaksana yang dibutuhkan menjadi 107 juga cocok dengan jumlah file dalam input Amazon S3 path—yakni 428. Setiap pelaksana dapat meluncurkan empat tugas Spark untuk memproses empat file input (JSON gzip).

Tentukan kapasitas DPU yang optimal

Berdasarkan hasil dari eksekusi tugas sebelumnya, Anda dapat meningkatkan jumlah total DPU yang dialokasikan menjadi 55, dan melihat bagaimana performa tugas tersebut. Tugas selesai dalam waktu kurang dari tiga menit—setengah dari waktu yang dibutuhkan sebelumnya. Penskalaan keluar tugas tidak linear dalam hal ini karena eksekusi tugas merupakan eksekusi tugas singkat. Pekerjaan dengan tugas yang berumur panjang atau sejumlah besar tugas (sejumlah besar pelaksana maksimum yang dibutuhkan) mendapat manfaat dari percepatan kinerja skala close-to-linear DPU.

Grafik yang menunjukkan peningkatan jumlah total DPU yang dialokasikan

Sebagaimana yang ditunjukkan gambar di atas, jumlah pelaksana aktif mencapai jumlah pelaksana maksimum yang dialokasikan—yakni, 107 pelaksana. Demikian pula, jumlah pelaksana maksimum yang dibutuhkan tidak pernah berada di atas jumlah maksimum pelaksana yang dialokasikan. Jumlah maksimum pelaksana yang dibutuhkan dihitung dari jumlah tugas yang aktif berjalan dan tertunda, sehingga mungkin lebih kecil dari jumlah pelaksana aktif. Hal ini karena dapat ada pelaksana yang sebagian atau seluruhnya menganggur dalam waktu singkat dan belum dinonaktifkan.

Grafik yang menunjukkan jumlah pelaksana aktif mencapai jumlah maksimum pelaksana yang dialokasikan.

Eksekusi tugas ini menggunakan 6x pelaksana lebih untuk membaca dan menulis dari Amazon S3 secara paralel. Akibatnya, eksekusi tugas ini menggunakan lebih banyak bandwidth Amazon S3 untuk membaca dan menulis, dan selesai lebih cepat.

Identifikasi DPU yang dilebih-lebihkan

Selanjutnya, Anda dapat menentukan apakah penskalaan keluar tugas dengan 100 DPU (99 * 2 = 198 pelaksana) membantu untuk melakukan penskalaan keluar lebih lanjut. Seperti yang ditunjukkan dalam grafik berikut, tugas masih membutuhkan waktu tiga menit untuk selesai. Demikian pula, tugas tidak menskalakan keluar melampaui 107 pelaksana (55 konfigurasi DPU), dan tersisa 91 pelaksana di-sediakan-berlebih dan tidak digunakan sama sekali. Hal ini menunjukkan bahwa meningkatkan jumlah DPU mungkin tidak selalu meningkatkan performa, sebagaimana terbukti dari pelaksana maksimum yang dibutuhkan.

Grafik yang menunjukkan bahwa performa tugas tidak selalu naik dengan meningkatkan jumlah DPU.

Bandingkan perbedaan waktu

Tiga eksekusi tugas ditunjukkan dalam tabel berikut menunjukkan waktu eksekusi tugas untuk 10 DPU, 55 DPU, dan 100 DPU. Anda dapat menemukan bahwa kapasitas DPU untuk meningkatkan waktu pelaksanaan tugas menggunakan perkiraan yang Anda buat dengan memantau tugas pertama.

ID Tugas Jumlah DPU Waktu eksekusi
jr_c894524c8ef5048a4d9... 10 6 menit.
jr_1a466cf2575e7ffe6856... 55 3 menit.
jr_34fa1ed4c6aa9ff0a814... 100 3 menit.