Amazon Redshift Vodič za paralelno skaliranje i rezultati testa

Amazon Redshift Vodič za paralelno skaliranje i rezultati testa

U Skyeng-u koristimo Amazon Redshift, uključujući paralelno skaliranje, pa nam je ovaj članak Stefana Gromolla, osnivača dotgo.com, za intermix.io bio zanimljiv. Nakon prijevoda, malo našeg iskustva inženjera podataka Daniyara Belkhodzhaeva.

Arhitektura Amazon Redshift omogućuje skaliranje dodavanjem novih čvorova u klaster. Potreba da se izađe na kraj s najvećim brojem zahtjeva može dovesti do prekomjerne opskrbe čvorova. Skaliranje istovremenosti, za razliku od dodavanja novih čvorova, povećava računalnu snagu po potrebi.

Amazon Redshift paralelno skaliranje daje Redshift klasterima dodatni kapacitet za rukovanje vršnim količinama zahtjeva. Djeluje tako da premješta zahtjeve u nove "paralelne" klastere u pozadini. Zahtjevi se usmjeravaju na temelju WLM konfiguracije i pravila.

Paralelno skaliranje cijena temelji se na kreditnom modelu s besplatnim stupnjem. Iznad besplatnih kredita, plaćanje se temelji na vremenu koje Parallel Scaling Cluster obrađuje zahtjeve.

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

Zahtjevi klastera

Za korištenje paralelnog skaliranja, vaš Amazon Redshift klaster mora ispunjavati sljedeće zahtjeve:

- platforma: EC2-VPC;
— vrsta čvora: dc2.8xlarge, ds2.8xlarge, dc2.large ili ds2.xlarge;
— broj čvorova: od 2 do 32 (klasteri s 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 uvjeta:

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

Da bi se preusmjerio na klaster paralelnog skaliranja, zahtjev mora biti u redu čekanja. Dodatno, upiti koji ispunjavaju uvjete za red čekanja SQA (ubrzanje kratkih upita), neće raditi na paralelnim klasterima.

Redovi čekanja 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 to je važno jer je paralelno skaliranje besplatno samo određeni broj sati. AWS tvrdi da će paralelno skaliranje biti besplatno za 97% korisnika, što nas dovodi do pitanja cijena.

Trošak paralelnog skaliranja

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

Plaćate samo kada vaša upotreba klastera paralelnog skaliranja premaši količinu kredita koje ste primili.

Trošak se izračunava prema stopi po sekundi na zahtjev za paralelni klaster koji se koristi iznad besplatne stope. Naplaćuje vam se samo vrijeme trajanja vaših zahtjeva, s minimalnom naplatom od jedne minute svaki put kada se aktivira klaster za paralelno skaliranje. Stopa po sekundi na zahtjev izračunava se na temelju općih načela određivanja cijena Amazon RedShift, odnosno ovisi o vrsti čvora i broju čvorova u vašem klasteru.

Pokretanje paralelnog skaliranja

Paralelno skaliranje pokreće se za svaki WLM red. Idite na AWS Redshift konzolu i odaberite Workload Management s lijevog navigacijskog izbornika. Odaberite WLM grupu parametara vašeg klastera sa sljedećeg padajućeg izbornika.

Vidjet ćete novi stupac pod nazivom "Način skaliranja istovremenosti" pokraj svakog reda čekanja. Zadana postavka je "Onemogućeno". Kliknite "Uredi" i možete promijeniti postavke za svaki red čekanja.

Amazon Redshift Vodič za paralelno skaliranje i rezultati testa

Konfiguracija

Paralelno skaliranje funkcionira 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 koriste za paralelno skaliranje je jedan (1), uz mogućnost konfiguriranja 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 osigurava dodatne redundantne klastere.

Amazon Redshift Vodič za paralelno skaliranje i rezultati testa

nadgledanje

Na AWS Redshift konzoli dostupno je nekoliko dodatnih grafikona. Grafikon Max Configured Concurrency Scaling Clusters prikazuje vrijednost max_concurrency_scaling_clusters tijekom vremena.

Amazon Redshift Vodič za paralelno skaliranje i rezultati testa

Broj aktivnih klastera za skaliranje prikazan je na korisničkom sučelju u odjeljku "Aktivnost skaliranja istovremenosti":

Amazon Redshift Vodič za paralelno skaliranje i rezultati testa

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

Amazon Redshift Vodič za paralelno skaliranje i rezultati testa

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

Amazon Redshift Vodič za paralelno skaliranje i rezultati testa

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

Primjer:

Amazon Redshift Vodič za paralelno skaliranje i rezultati testa

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

Nalazi

Autori su započeli paralelno skaliranje za jedan red u internom klasteru u približno 18:30:00 GMT dana 29.03.2019. Promijenili su parametar max_concurrency_scaling_clusters na 3 u približno 20:30:00 29.03.2019.

Kako bismo simulirali red zahtjeva, smanjili smo broj utora za ovaj red s 15 na 5.

Ispod je grafikon nadzorne ploče intermix.io koji prikazuje broj pokrenutih zahtjeva i čekanja nakon smanjenja broja utora.

Amazon Redshift Vodič za paralelno skaliranje i rezultati testa

Vidimo da se vrijeme čekanja za zahtjeve u redu čekanja povećalo, a maksimalno vrijeme je više od 5 minuta.

Amazon Redshift Vodič za paralelno skaliranje i rezultati testa

Evo relevantnih informacija s AWS konzole o tome što se dogodilo u to vrijeme:

Amazon Redshift Vodič za paralelno skaliranje i rezultati testa

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

Grafikon upotrebe korelira s grafikonom aktivnosti skaliranja:

Amazon Redshift Vodič za paralelno skaliranje i rezultati testa

Nakon nekoliko sati, autori su provjerili red i izgledalo je kao da se izvodi 6 zahtjeva u paralelnom skaliranju. Također smo nasumično testirali dva zahtjeva putem korisničkog sučelja. Nismo provjerili kako koristiti ove vrijednosti kada je nekoliko paralelnih klastera aktivno istovremeno.

Amazon Redshift Vodič za paralelno skaliranje i rezultati testa

Zaključci

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

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

To je zbog ograničenja vrsta upita koji mogu koristiti paralelno skaliranje. Na primjer, autori imaju mnogo tablica s isprepletenim ključevima za sortiranje, a većina našeg posla je pisanje.

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

Stoga autor preporuča da ga koristite za svoje WLM redove. Započnite s jednim paralelnim klasterom i pratite vršno opterećenje putem konzole kako biste utvrdili jesu li novi klasteri u potpunosti iskorišteni.

Kako AWS dodaje podršku za dodatne vrste upita i tablice, paralelno skaliranje bi postupno trebalo postati sve učinkovitije.

Komentar Daniyara Belkhodzhaeva, inženjera podataka Skyeng

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

Dogodilo se da smo sredinom travnja imali neobičan nalet zahtjeva prema klasteru Redshift. Tijekom tog razdoblja često smo pribjegavali skaliranju istovremenosti; ponekad je dodatni klaster radio 24 sata dnevno bez prestanka.

Time je omogućeno, ako ne potpuno rješavanje problema s redovima čekanja, onda barem da se stanje učini prihvatljivim.

Naša zapažanja uvelike se poklapaju s dojmovima momaka iz intermix.io.

Također smo primijetili da iako je bilo zahtjeva koji su čekali u redu čekanja, nisu svi zahtjevi odmah proslijeđeni paralelnom klasteru. Očigledno se to događa jer paralelnom klasteru još uvijek treba vremena da se pokrene. Kao rezultat toga, tijekom kratkotrajnih vršnih opterećenja još uvijek imamo male redove, a odgovarajući alarmi imaju vremena za aktiviranje.

Nakon što smo se riješili nenormalnih opterećenja u travnju, kao što je AWS i očekivao, ušli smo u povremeni način korištenja - unutar besplatne 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