Amazon Redshift Vodič za paralelno skaliranje i rezultati testiranja

Amazon Redshift Vodič za paralelno skaliranje i rezultati testiranja

U Skyengu koristimo Amazon Redshift, uključujući paralelno skaliranje, pa smo smatrali zanimljivim ovaj članak Stefana Gromola, osnivača dotgo.com, za intermix.io. Nakon prijevoda, malo našeg iskustva od inžinjera podataka Daniyara Belkhodzhaeva.

Amazon Redshift Architecture omogućava skaliranje dodavanjem novih čvorova u klaster. Potreba da se nosi sa najvećim brojem zahtjeva može dovesti do prekomjernog obezbjeđivanja čvorova. Skaliranje konkurentnosti, za razliku od dodavanja novih čvorova, povećava računarsku snagu prema potrebi.

Amazon Redshift paralelno skaliranje daje Redshift klasterima dodatni kapacitet za rukovanje najvećim količinama zahtjeva. Radi tako što premješta zahtjeve u nove "paralelne" klastere u pozadini. Zahtjevi se usmjeravaju na osnovu WLM konfiguracije i pravila.

Paralelno skaliranje cijena zasniva se na kreditnom modelu sa besplatnim nivoom. Iznad besplatnih kredita, plaćanje se zasniva na vremenu kada Parallel Scaling Cluster obrađuje zahtjeve.

Autor je testirao paralelno skaliranje na jednom od internih klastera. U ovom postu će govoriti o rezultatima testiranja i dati savjete kako da počnete.

Zahtjevi klastera

Da biste koristili paralelno skaliranje, vaš Amazon Redshift klaster mora ispunjavati sljedeće zahtjeve:

- platforma: EC2-VPC;
— tip čvora: dc2.8xlarge, ds2.8xlarge, dc2.large ili ds2.xlarge;
— broj čvorova: od 2 do 32 (klasteri sa jednim čvorom nisu podržani).

Prihvatljive vrste zahtjeva

Paralelno skaliranje nije prikladno za sve vrste upita. U prvoj verziji obrađuje samo zahtjeve za čitanje koji zadovoljavaju tri uslova:

— SELECT upiti su samo za čitanje (iako je planirano više tipova);
— upit ne upućuje na tabelu sa INTERLEAVED stilom sortiranja;
- Upit ne koristi Amazon Redshift Spectrum za referenciranje vanjskih tablica.

Za usmjeravanje u klaster paralelnog skaliranja, zahtjev se mora staviti u red čekanja. Dodatno, upiti podobni za red SQA (Ubrzanje kratkih upita), neće raditi na paralelnim klasterima.

Redovi i SQA zahtijevaju odgovarajuću konfiguraciju Redshift upravljanje radnim opterećenjem (WLM). Preporučujemo da prvo optimizirate svoj WLM - to će smanjiti potrebu za paralelnim skaliranjem. A ovo je važno jer je paralelno skaliranje besplatno samo određeni broj sati. AWS tvrdi da će paralelno skaliranje biti besplatno za 97% kupaca, što nas dovodi do pitanja cijena.

Trošak paralelnog skaliranja

AWS nudi kreditni model za paralelno skaliranje. Svaki aktivni klaster Amazon RedShift Akumulira kredite po satu, do jednog sata besplatnih kredita za paralelno skaliranje dnevno.

Plaćate samo kada vaša upotreba klastera za paralelno skaliranje premašuje iznos kredita koji ste primili.

Trošak se izračunava po sekundi na zahtjev za paralelni klaster koji se koristi iznad besplatne stope. Naplaćuje vam se samo za vrijeme trajanja vaših zahtjeva, uz minimalnu naplatu od jedne minute svaki put kada se aktivira klaster paralelnog skaliranja. Stopa po sekundi na zahtjev se izračunava na osnovu općih principa cijena Amazon RedShift, odnosno zavisi od tipa čvora i broja čvorova u vašem klasteru.

Pokretanje paralelnog skaliranja

Paralelno skaliranje se pokreće za svaki WLM red. Idite na AWS Redshift konzolu i odaberite Upravljanje radnim opterećenjem iz lijevog navigacijskog menija. Izaberite grupu WLM parametara vašeg klastera sa sledećeg padajućeg menija.

Vidjet ćete novu kolonu pod nazivom "Mod istovremenog skaliranja" pored svakog reda čekanja. Podrazumevano je "Disabled". Kliknite na "Uredi" i možete promijeniti postavke za svaki red čekanja.

Amazon Redshift Vodič za paralelno skaliranje i rezultati testiranja

Konfiguracija

Paralelno skaliranje radi prosljeđivanjem odgovarajućih zahtjeva novim namjenskim klasterima. Novi klasteri imaju istu veličinu (tip i broj čvorova) kao i glavni klaster.

Zadani broj klastera koji se koristi za paralelno skaliranje je jedan (1), sa mogućnošću konfigurisanja do ukupno deset (10) klastera.
Ukupan broj klastera za paralelno skaliranje može se postaviti parametrom max_concurrency_scaling_clusters. Povećanje vrijednosti ovog parametra daje dodatne redundantne klastere.

Amazon Redshift Vodič za paralelno skaliranje i rezultati testiranja

Monitoring

Postoji nekoliko dodatnih grafova dostupnih u AWS Redshift konzoli. Grafikon Max Configured Concurrency Scaling Clusters prikazuje vrijednost max_concurrency_scaling_clusters tokom vremena.

Amazon Redshift Vodič za paralelno skaliranje i rezultati testiranja

Broj aktivnih klastera za skaliranje prikazan je u korisničkom sučelju u odjeljku “Concurrency Scaling Activity”:

Amazon Redshift Vodič za paralelno skaliranje i rezultati testiranja

Na kartici Upiti nalazi se stupac koji pokazuje da li je upit izvršen u glavnom klasteru ili u klasteru paralelnog skaliranja:

Amazon Redshift Vodič za paralelno skaliranje i rezultati testiranja

Bez obzira da li je određeni upit izvršen u glavnom klasteru ili kroz klaster paralelnog skaliranja, on je pohranjen u stl_query.concurrency_scaling_status.

Amazon Redshift Vodič za paralelno skaliranje i rezultati testiranja

Vrijednost 1 označava da je upit izvršen u klasteru paralelne skale, dok druge vrijednosti pokazuju da je izvršen u primarnom klasteru.

Primjer:

Amazon Redshift Vodič za paralelno skaliranje i rezultati testiranja

Informacije o skaliranju paralelnosti također se pohranjuju u nekim drugim tabelama i pogledima, kao što je SVCS_CONCURRENCY_SCALING_USAGE. Osim toga, postoji niz kataloških tablica koje pohranjuju informacije o paralelnom skaliranju.

Rezulʹtaty

Autori su započeli paralelno skaliranje za jedan red u internom klasteru oko 18:30:00 GMT 29.03.2019. 3. 20. Promjenili parametar max_concurrency_scaling_clusters u 30 otprilike u 00:29.03.2019:XNUMX XNUMX. XNUMX. XNUMX.

Da bismo simulirali red zahtjeva, smanjili smo broj slotova za ovaj red sa 15 na 5.

Ispod je grafikon intermix.io kontrolne ploče koji prikazuje broj pokrenutih zahtjeva i čekanja u redu nakon smanjenja broja slotova.

Amazon Redshift Vodič za paralelno skaliranje i rezultati testiranja

Vidimo da se povećalo vrijeme čekanja na zahtjeve u redu, s tim da je maksimalno vrijeme duže od 5 minuta.

Amazon Redshift Vodič za paralelno skaliranje i rezultati testiranja

Evo relevantnih informacija sa AWS konzole o tome šta se dogodilo za to vreme:

Amazon Redshift Vodič za paralelno skaliranje i rezultati testiranja

Redshift je pokrenuo tri (3) paralelna klastera kako je konfigurisano. Čini se da su ovi klasteri nedovoljno iskorišteni, iako su mnogi zahtjevi u našem klasteru bili u redu čekanja.

Grafikon upotrebe korelira s grafom aktivnosti skaliranja:

Amazon Redshift Vodič za paralelno skaliranje i rezultati testiranja

Nakon nekoliko sati, autori su provjerili red čekanja i izgledalo je kao da 6 zahtjeva radi u paralelnom skaliranju. Također smo nasumično testirali dva zahtjeva kroz korisnički interfejs. Nismo provjerili kako koristiti ove vrijednosti kada je nekoliko paralelnih klastera aktivno istovremeno.

Amazon Redshift Vodič za paralelno skaliranje i rezultati testiranja

nalazi

Paralelno skaliranje može smanjiti vrijeme koje zahtjevi provode u redu za vrijeme vršnog opterećenja.

Na osnovu rezultata osnovnog testa pokazalo se da se situacija sa zahtjevima za učitavanje djelimično popravila. Međutim, samo paralelno skaliranje nije riješilo sve probleme istovremenosti.

To je zbog ograničenja na tipove upita koji mogu koristiti paralelno skaliranje. Na primjer, autori imaju mnogo tabela sa isprepletenim ključevima sortiranja, a većina našeg posla je pisanje.

Iako paralelno skaliranje nije univerzalno rješenje za postavljanje WLM-a, korištenje ove funkcije je jednostavno i jednostavno.

Stoga autor preporučuje da ga koristite za svoje WLM redove. Počnite s jednim paralelnim klasterom i pratite vršno opterećenje kroz konzolu kako biste utvrdili da li se novi klasteri u potpunosti koriste.

Kako AWS dodaje podršku za dodatne tipove upita i tabele, paralelno skaliranje bi postepeno trebalo da postane sve efikasnije.

Komentar Danijara Belkhodžajeva, Skyeng data inženjera

Mi u Skyengu smo također odmah primijetili mogućnost paralelnog skaliranja.
Funkcionalnost je vrlo atraktivna, pogotovo ako se uzme u obzir da AWS procjenjuje da većina korisnika neće morati ni dodatno platiti.

Desilo se da smo sredinom aprila imali neobičnu navalu zahtjeva prema Redshift klasteru. U tom periodu često smo pribjegavali skaliranju konkurentnosti; ponekad je dodatni klaster radio 24 sata dnevno bez prestanka.

To je omogućilo, ako ne potpuno rješavanje problema s redovima, onda barem da situaciju učini prihvatljivom.

Naša zapažanja se uglavnom poklapaju sa utiscima momaka iz intermix.io.

Također smo primijetili da iako je bilo zahtjeva koji čekaju u redu, svi zahtjevi nisu odmah proslijeđeni u paralelni klaster. Očigledno se to događa zato što paralelnom klasteru još uvijek treba vremena da se pokrene. Kao rezultat toga, tokom kratkotrajnih vršnih opterećenja i dalje imamo male redove, a odgovarajući alarmi imaju vremena da se aktiviraju.

Oslobodivši se nenormalnih opterećenja u aprilu, mi smo, kako je AWS i očekivao, ušli u režim povremene upotrebe - u okviru slobodne norme.
Možete pratiti svoje troškove paralelnog skaliranja u AWS Cost Exploreru. Morate odabrati Service - Redshift, Usage Type - CS, na primjer USW2-CS:dc2.large.

Više o cijenama možete pročitati na ruskom ovdje.

izvor: www.habr.com

Dodajte komentar