Panduan Penskalaan Paralel Amazon Redshift dan Hasil Pengujian

Panduan Penskalaan Paralel Amazon Redshift dan Hasil Pengujian

Di Skyeng kami menggunakan Amazon Redshift, termasuk penskalaan paralel, jadi menurut kami artikel oleh Stefan Gromoll, pendiri dotgo.com, untuk intermix.io ini menarik. Setelah diterjemahkan, sedikit pengalaman kami dari data engineer Daniyar Belkhodzhaev.

Arsitektur Amazon Redshift memungkinkan penskalaan dengan menambahkan node baru ke cluster. Kebutuhan untuk mengatasi jumlah permintaan puncak dapat menyebabkan penyediaan node yang berlebihan. Penskalaan Konkurensi, dibandingkan dengan penambahan node baru, meningkatkan daya komputasi sesuai kebutuhan.

Penskalaan paralel Amazon Redshift memberi klaster Redshift kapasitas tambahan untuk menangani volume permintaan puncak. Ia bekerja dengan memindahkan permintaan ke cluster β€œparalel” baru di latar belakang. Permintaan dirutekan berdasarkan konfigurasi dan aturan WLM.

Penetapan harga penskalaan paralel didasarkan pada model kredit dengan tingkat gratis. Di atas kredit gratis, pembayaran didasarkan pada waktu Parallel Scaling Cluster memproses permintaan.

Penulis menguji penskalaan paralel pada salah satu cluster internal. Dalam postingan kali ini, dia akan berbicara tentang hasil tes dan memberikan tips bagaimana memulainya.

Persyaratan klaster

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

- platform: EC2-VPC;
β€” jenis simpul: dc2.8xlarge, ds2.8xlarge, dc2.large atau ds2.xlarge;
β€” jumlah node: dari 2 hingga 32 (klaster simpul tunggal tidak didukung).

Jenis permintaan yang dapat diterima

Penskalaan paralel tidak cocok untuk semua jenis kueri. Pada versi pertama, ini hanya memproses permintaan baca yang memenuhi tiga kondisi:

β€” Kueri SELECT bersifat baca-saja (walaupun direncanakan lebih banyak tipe);
β€” kueri tidak mereferensikan tabel dengan gaya pengurutan INTERLEAVED;
- Kueri tidak menggunakan Amazon Redshift Spectrum untuk mereferensikan tabel eksternal.

Untuk dialihkan ke Parallel Scaling Cluster, permintaan harus diantrekan. Selain itu, kueri memenuhi syarat untuk antrean SQA (Akselerasi Kueri Singkat), tidak akan berjalan pada cluster skala paralel.

Antrian dan SQA memerlukan konfigurasi yang tepat Manajemen Beban Kerja Redshift (WLM). Kami menyarankan untuk mengoptimalkan WLM Anda terlebih dahulu - ini akan mengurangi kebutuhan penskalaan paralel. Dan ini penting karena penskalaan paralel hanya gratis selama beberapa jam tertentu. AWS mengklaim bahwa penskalaan paralel akan gratis untuk 97% pelanggan, yang membawa kita pada masalah harga.

Biaya penskalaan paralel

AWS menawarkan model kredit untuk penskalaan paralel. Setiap cluster aktif Pergeseran Merah Amazon Akumulasi kredit setiap jam, kredit penskalaan paralel gratis hingga satu jam per hari.

Anda hanya membayar bila penggunaan Parallel Scaling Clusters melebihi jumlah kredit yang Anda terima.

Biaya dihitung berdasarkan tarif per detik sesuai permintaan untuk klaster paralel yang digunakan di atas tarif gratis. Anda hanya dikenakan biaya selama durasi permintaan Anda, dengan biaya minimum satu menit setiap kali Parallel Scaling Cluster diaktifkan. Tarif sesuai permintaan per detik dihitung berdasarkan prinsip penetapan harga umum Pergeseran Merah Amazon, artinya bergantung pada jenis simpul dan jumlah simpul di klaster Anda.

Meluncurkan Penskalaan Paralel

Penskalaan paralel dipicu untuk setiap antrian WLM. Buka konsol AWS Redshift dan pilih Manajemen Beban Kerja dari menu navigasi sebelah kiri. Pilih grup parameter WLM klaster Anda dari menu drop-down berikut.

Anda akan melihat kolom baru bernama "Mode Penskalaan Konkurensi" di samping setiap antrean. Standarnya adalah "Dinonaktifkan". Klik "Edit" dan Anda dapat mengubah pengaturan untuk setiap antrean.

Panduan Penskalaan Paralel Amazon Redshift dan Hasil Pengujian

Konfigurasi

Penskalaan paralel bekerja dengan meneruskan permintaan yang sesuai ke cluster khusus baru. Cluster baru mempunyai ukuran (jenis dan jumlah node) yang sama dengan cluster utama.

Jumlah klaster default yang digunakan untuk penskalaan paralel adalah satu (1), dengan kemampuan untuk mengonfigurasi hingga total sepuluh (10) klaster.
Jumlah total cluster untuk penskalaan paralel dapat diatur oleh parameter max_concurrency_scaling_clusters. Meningkatkan nilai parameter ini akan menghasilkan cluster tambahan yang berlebihan.

Panduan Penskalaan Paralel Amazon Redshift dan Hasil Pengujian

Pemantauan

Ada beberapa grafik tambahan yang tersedia di konsol AWS Redshift. Bagan Kluster Penskalaan Konkurensi Konfigurasi Maks menampilkan nilai max_concurrency_scaling_clusters dari waktu ke waktu.

Panduan Penskalaan Paralel Amazon Redshift dan Hasil Pengujian

Jumlah cluster penskalaan aktif ditampilkan di antarmuka pengguna di bagian β€œAktivitas Penskalaan Konkurensi”:

Panduan Penskalaan Paralel Amazon Redshift dan Hasil Pengujian

Di tab Kueri, terdapat kolom yang menunjukkan apakah kueri dieksekusi di klaster utama atau di klaster penskalaan paralel:

Panduan Penskalaan Paralel Amazon Redshift dan Hasil Pengujian

Terlepas dari apakah kueri tertentu dieksekusi di klaster utama atau melalui klaster penskalaan paralel, kueri tersebut disimpan di stl_query.concurrency_scaling_status.

Panduan Penskalaan Paralel Amazon Redshift dan Hasil Pengujian

Nilai 1 menunjukkan bahwa kueri dieksekusi di cluster skala paralel, sedangkan nilai lainnya menunjukkan bahwa kueri dieksekusi di cluster utama.

Contoh:

Panduan Penskalaan Paralel Amazon Redshift dan Hasil Pengujian

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

Temuan

Penulis memulai penskalaan paralel untuk satu antrian di cluster internal sekitar pukul 18:30:00 GMT pada 29.03.2019/3/20. Mengubah parameter max_concurrency_scaling_clusters menjadi 30 sekitar pukul 00:29.03.2019:XNUMX pada XNUMX/XNUMX/XNUMX.

Untuk menyimulasikan antrian permintaan, kami mengurangi jumlah slot untuk antrian ini dari 15 menjadi 5.

Di bawah ini adalah bagan dasbor intermix.io yang menunjukkan jumlah permintaan yang berjalan dan mengantri setelah mengurangi jumlah slot.

Panduan Penskalaan Paralel Amazon Redshift dan Hasil Pengujian

Kami melihat waktu tunggu permintaan dalam antrian bertambah, dengan waktu maksimal lebih dari 5 menit.

Panduan Penskalaan Paralel Amazon Redshift dan Hasil Pengujian

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

Panduan Penskalaan Paralel Amazon Redshift dan Hasil Pengujian

Redshift meluncurkan tiga (3) cluster penskalaan paralel sebagaimana dikonfigurasi. Tampaknya klaster ini kurang dimanfaatkan, meskipun banyak permintaan di klaster kami yang berada dalam antrean.

Grafik penggunaan berkorelasi dengan grafik aktivitas penskalaan:

Panduan Penskalaan Paralel Amazon Redshift dan Hasil Pengujian

Setelah beberapa jam, penulis memeriksa antrian dan sepertinya 6 permintaan berjalan pada skala paralel. Kami juga menguji dua permintaan secara acak melalui antarmuka pengguna. Kami belum memeriksa cara menggunakan nilai-nilai ini ketika beberapa cluster paralel aktif sekaligus.

Panduan Penskalaan Paralel Amazon Redshift dan Hasil Pengujian

Temuan

Penskalaan paralel dapat mengurangi waktu yang dihabiskan permintaan dalam antrean selama beban puncak.

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

Hal ini disebabkan oleh pembatasan jenis kueri yang dapat menggunakan penskalaan paralel. Misalnya, penulis memiliki banyak tabel dengan kunci pengurutan yang disisipkan, dan sebagian besar beban kerja kami adalah menulis.

Meskipun penskalaan paralel bukanlah solusi universal untuk menyiapkan WLM, penggunaan fitur ini sederhana dan mudah.

Oleh karena itu, penulis menyarankan untuk menggunakannya untuk antrian WLM Anda. Mulailah dengan satu klaster paralel dan pantau beban puncak melalui konsol untuk menentukan apakah klaster baru telah dimanfaatkan sepenuhnya.

Saat AWS menambahkan dukungan untuk jenis kueri dan tabel tambahan, penskalaan paralel secara bertahap akan menjadi lebih efisien.

Komentar dari Daniyar Belkhodzhaev, Insinyur Data Skyeng

Kami di Skyeng juga segera menyadari kemungkinan munculnya penskalaan paralel.
Fungsionalitasnya sangat menarik, terutama mengingat AWS memperkirakan sebagian besar pengguna bahkan tidak perlu membayar ekstra untuk itu.

Kebetulan pada pertengahan April kami mendapat banyak permintaan yang tidak biasa ke cluster Redshift. Selama periode ini, kami sering menggunakan Concurrency Scaling; terkadang cluster tambahan bekerja 24 jam sehari tanpa henti.

Hal ini memungkinkan, jika tidak sepenuhnya menyelesaikan masalah antrian, setidaknya membuat situasinya 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 diteruskan ke cluster paralel. Rupanya hal ini terjadi karena cluster paralel masih membutuhkan waktu untuk dimulai. Akibatnya, selama beban puncak jangka pendek kami masih memiliki antrian kecil, dan alarm terkait punya waktu untuk terpicu.

Setelah menghilangkan beban abnormal pada bulan April, kami, seperti yang diharapkan AWS, memasuki mode penggunaan sesekali - dalam norma bebas.
Anda dapat melacak biaya penskalaan paralel di AWS Cost Explorer. Anda harus memilih Layanan - Redshift, Jenis Penggunaan - CS, misalnya USW2-CS:dc2.large.

Anda dapat membaca lebih lanjut tentang harga dalam bahasa Rusia di sini.

Sumber: www.habr.com

Tambah komentar