Panduan Penskalaan Paralel Redshift Amazon dan Hasil Uji

gambar

Di Skyeng, kami menggunakan Amazon Redshift, termasuk penskalaan paralel, sehingga artikel oleh Stefan Gromall, pendiri dotgo.com, untuk intermix.io, tampak menarik bagi kami. Setelah transfer - sedikit pengalaman kami dari insinyur menurut Daniyar Belkhodzhaev.

Arsitektur Amazon Redshift memungkinkan untuk penskalaan dengan menambahkan node baru ke cluster. Harus mengatasi jumlah permintaan puncak dapat menyebabkan penyediaan node yang berlebihan. Concurrency Scaling, berbeda dengan menambahkan node baru, meningkatkan daya komputasi sesuai kebutuhan.

Penskalaan paralel Amazon Redshift memberi cluster Redshift kekuatan tambahan untuk menangani permintaan puncak. Ini bekerja dengan mentransfer permintaan ke cluster "paralel" baru di latar belakang. Permintaan dialihkan berdasarkan konfigurasi dan aturan WLM.

Harga untuk penskalaan paralel didasarkan pada model kredit penggunaan gratis. Di atas norma pinjaman gratis, pembayaran didasarkan pada waktu ketika gugusan penskalaan paralel memproses permintaan.

Penulis menguji penskalaan paralel pada salah satu cluster internal. Dalam posting ini, ia akan berbicara tentang hasil tes dan memberikan tips tentang cara memulai.

Persyaratan cluster


Untuk menggunakan penskalaan paralel, klaster Amazon Redshift harus memenuhi persyaratan berikut:

  • platform: EC2-VPC;
  • jenis simpul: dc2.8xlarge, ds2.8xlarge, dc2.large atau ds2.xlarge;
  • jumlah node: dari 2 hingga 32 (cluster dengan satu node tidak didukung).

Jenis permintaan yang valid


Penskalaan paralel tidak cocok untuk semua jenis kueri. Di versi pertama, itu hanya memproses permintaan baca yang memenuhi tiga syarat:

  • Kueri SELECT baca-saja (meskipun lebih banyak jenis direncanakan);
  • kueri tidak merujuk ke tabel dengan susunan INTERLEAVED;
  • kueri tidak menggunakan Amazon Redshift Spectrum untuk referensi tabel eksternal.

Untuk merutekan ke klaster penskalaan paralel, permintaan tersebut harus diantri. Selain itu, kueri yang cocok untuk antrian SQA (Akselerasi Query Pendek) tidak akan dieksekusi dalam klaster penskalaan paralel.

Antrian dan SQA memerlukan konfigurasi Redshift Workload Management (WLM) yang benar . Kami menyarankan Anda untuk mengoptimalkan WLM Anda terlebih dahulu - ini akan mengurangi kebutuhan untuk penskalaan paralel. Dan ini penting karena penskalaan paralel gratis hanya untuk beberapa jam saja. AWS mengklaim bahwa penskalaan paralel akan gratis untuk 97% pelanggan, yang membawa kita ke masalah penetapan harga.

Biaya Penskalaan Paralel


Untuk penskalaan paralel, AWS menawarkan model kredit. Setiap cluster Amazon Redshift yang aktif mengakumulasi pinjaman setiap jam, hingga satu jam pinjaman penskalaan paralel gratis per hari.

Anda hanya membayar bila menggunakan kluster penskalaan paralel melebihi jumlah pinjaman yang Anda terima.

Biaya dihitung pada tingkat permintaan per detik untuk klaster paralel yang digunakan lebih dari tarif gratis. Pembayaran dilakukan hanya selama eksekusi permintaan Anda, dengan pembayaran minimum satu menit, setiap kali Anda mengaktifkan cluster penskalaan paralel. Tarif berdasarkan permintaan per detik dihitung berdasarkan prinsip umum penetapan harga Amazon Redshift , yaitu tergantung pada jenis node dan jumlah node di cluster Anda.

Menjalankan penskalaan paralel


Penskalaan paralel dimulai untuk setiap antrian WLM. Pergi ke konsol Redshift AWS dan pilih "Manajemen Beban Kerja" di menu navigasi kiri. Pilih grup WLM dari cluster Anda di menu drop-down berikutnya.

Anda akan melihat kolom baru yang disebut "Mode Penskalaan Concurrency" di sebelah setiap antrian. Nilai standarnya adalah "Off." Klik "Ubah", dan Anda dapat mengubah pengaturan untuk setiap antrian.



Konfigurasi


Penskalaan paralel berfungsi dengan meneruskan pertanyaan yang relevan ke kelompok khusus baru. Cluster baru memiliki ukuran yang sama (jenis dan jumlah node) seperti cluster utama.

Jumlah default cluster yang digunakan untuk penskalaan paralel adalah satu (1) dengan kemampuan untuk mengkonfigurasi total hingga sepuluh (10) cluster.
Jumlah total cluster untuk penskalaan paralel dapat ditetapkan oleh parameter max_concurrency_scaling_clusters. Meningkatkan pengaturan ini menyediakan kluster redundan tambahan.



Pemantauan


Konsol Redshift AWS memiliki beberapa grafik tambahan. Grafik Max Configured Concurrency Scaling Clusters menampilkan nilai max_concurrency_scaling_clusters dari waktu ke waktu.



Jumlah cluster penskalaan aktif ditampilkan di bagian "Aktivitas Penskalaan Concurrency" di antarmuka pengguna:



Di tab "Permintaan", ada kolom yang menunjukkan apakah permintaan dieksekusi di cluster utama atau di cluster penskalaan paralel:



Terlepas dari apakah permintaan tertentu dieksekusi di cluster utama atau melalui cluster scaling paralel, itu disimpan di stl_query.concurrency_scaling_status.



Nilai 1 menunjukkan bahwa permintaan sedang berjalan di cluster penskalaan paralel, sedangkan nilai lain menunjukkan bahwa itu berjalan di cluster utama.

Contoh:



Informasi tentang penskalaan paralel juga disimpan di beberapa tabel dan tampilan lain, misalnya, SVCS_CONCURRENCY_SCALING_USAGE. Selain itu, ada sejumlah tabel katalog yang menyimpan informasi tentang penskalaan paralel.

Hasil


Para penulis meluncurkan penskalaan paralel untuk satu antrian di kluster internal sekitar pukul 6:30 malam GMT pada 03/29/2019. Mereka mengubah parameter max_concurrency_scaling_clusters menjadi 3 pada sekitar jam 8:30 malam, 29 Maret 2019.

Untuk mensimulasikan antrian permintaan, dan mengurangi jumlah slot untuk antrian ini dari 15 menjadi 5.

Berikut ini adalah diagram dasbor intermix.io yang menunjukkan jumlah permintaan yang berjalan dan mengantri setelah mengurangi jumlah slot.



Kami melihat bahwa waktu tunggu untuk permintaan dalam antrian meningkat, sementara waktu maksimum lebih dari 5 menit.



Berikut adalah informasi yang relevan dari konsol AWS tentang apa yang terjadi selama ini:



Redshift meluncurkan tiga (3) kelompok skala paralel yang dikonfigurasi. Tampaknya cluster ini tidak sepenuhnya digunakan, meskipun banyak permintaan di cluster kami yang antri.

Grafik penggunaan berkorelasi dengan grafik aktivitas penskalaan:



Setelah beberapa jam, penulis memeriksa antrian, dan tampaknya 6 permintaan dieksekusi dengan penskalaan paralel. Kami juga secara selektif memeriksa dua permintaan melalui antarmuka pengguna. Mereka tidak memeriksa bagaimana menggunakan nilai-nilai ini ketika beberapa cluster paralel aktif sekaligus.



Kesimpulan


Penskalaan paralel dapat mengurangi waktu antrian permintaan selama beban puncak.

Menurut hasil tes dasar, ternyata situasi dengan permintaan pemuatan sebagian telah membaik. Namun, penskalaan paralel saja tidak menyelesaikan semua masalah dengan konkurensi.

Ini karena pembatasan pada jenis kueri yang dapat menggunakan penskalaan paralel. Sebagai contoh, penulis memiliki banyak tabel dengan kunci sortir yang disisipkan, dan sebagian besar beban kerja kami adalah catatan.

Meskipun penskalaan paralel bukan solusi universal dalam konfigurasi WLM, dalam hal apa pun, menggunakan fungsi ini sederhana dan dapat dimengerti.

Oleh karena itu, penulis merekomendasikan untuk menggunakannya untuk antrian WLM Anda. Mulailah dengan satu klaster paralel tunggal dan pantau beban puncak melalui konsol untuk menentukan apakah cluster baru sepenuhnya digunakan.

Ketika AWS menambahkan dukungan untuk jenis kueri dan tabel tambahan, penskalaan paralel harus secara bertahap menjadi lebih dan lebih efisien.
Komentar oleh Belkhodzhaev Daniyar, seorang insinyur menurut Skyeng

Kami di Skyeng juga segera menarik perhatian pada kemungkinan peningkatan skala paralel.
Fungsionalitasnya sangat menarik, terutama mengingat fakta bahwa menurut AWS, sebagian besar pengguna bahkan tidak perlu membayar ekstra untuk ini.

Kebetulan pada pertengahan April kami mengalami kesibukan yang tidak biasa pada cluster Redshift. Selama periode ini, kami sering menggunakan bantuan Concurrency Scaling, terkadang cluster tambahan bekerja 24 jam sehari tanpa henti.

Ini memungkinkan, jika tidak sepenuhnya menyelesaikan masalah antrian, setidaknya untuk membuat situasi dapat diterima.

Pengamatan kami sebagian besar bertepatan dengan kesan orang-orang dari intermix.io.

Kami juga memperhatikan bahwa meskipun ada permintaan yang menunggu dalam antrian, tidak semua permintaan segera dialihkan ke cluster paralel. Rupanya ini disebabkan oleh fakta bahwa cluster paralel masih membutuhkan waktu untuk memulai. Akibatnya, selama beban puncak jangka pendek, kami masih memiliki antrian kecil, dan alarm yang sesuai punya waktu untuk bekerja.

Setelah menyingkirkan beban abnormal pada bulan April, kami, seperti yang diharapkan AWS, beralih ke mode penggunaan episodik - sebagai bagian dari norma bebas.
Anda dapat melacak biaya penskalaan bersamaan di AWS Cost Explorer. Anda perlu memilih Layanan - Redshift, Jenis Penggunaan - CS, misalnya, USW2-CS: dc2.large.

Rincian harga dalam bahasa Rusia dapat ditemukan di sini.

Source: https://habr.com/ru/post/id451538/


All Articles