Amazon Redshift Parallel Scaling Vodnik in rezultati testa

Amazon Redshift Parallel Scaling Vodnik in rezultati testa

Pri Skyeng uporabljamo Amazon Redshift, vključno z vzporednim skaliranjem, zato se nam je zdel zanimiv ta članek Stefana Gromolla, ustanovitelja dotgo.com, za intermix.io. Po prevodu nekaj naših izkušenj podatkovnega inženirja Daniyarja Belkhodzhaeva.

Arhitektura Amazon Redshift omogoča skaliranje z dodajanjem novih vozlišč v gručo. Potreba po obvladovanju največjega števila zahtev lahko privede do prekomernega zagotavljanja vozlišč. Skaliranje sočasnosti v nasprotju z dodajanjem novih vozlišč po potrebi poveča računalniško moč.

Vzporedno skaliranje Amazon Redshift daje gručem Redshift dodatno zmogljivost za obvladovanje največjih količin zahtev. Deluje tako, da premakne zahteve v nove "vzporedne" gruče v ozadju. Zahteve so usmerjene na podlagi konfiguracije in pravil WLM.

Cene vzporednega skaliranja temeljijo na kreditnem modelu z brezplačno stopnjo. Nad brezplačnimi krediti plačilo temelji na času, ko gruča vzporednega skaliranja obdela zahteve.

Avtor je preizkusil vzporedno skaliranje na enem od notranjih grozdov. V tej objavi bo govoril o rezultatih testiranja in dal nasvete, kako začeti.

Zahteve grozda

Za uporabo vzporednega skaliranja mora vaša gruča Amazon Redshift izpolnjevati naslednje zahteve:

- platforma: EC2-VPC;
— vrsta vozlišča: dc2.8xlarge, ds2.8xlarge, dc2.large ali ds2.xlarge;
— število vozlišč: od 2 do 32 (gruče z enim vozliščem niso podprte).

Sprejemljive vrste zahtev

Vzporedno skaliranje ni primerno za vse vrste poizvedb. V prvi različici obdeluje le zahteve za branje, ki izpolnjujejo tri pogoje:

— Poizvedbe SELECT so samo za branje (čeprav je načrtovanih več vrst);
— poizvedba se ne sklicuje na tabelo s slogom razvrščanja INTERLEAVED;
- Poizvedba ne uporablja Amazon Redshift Spectrum za sklicevanje na zunanje tabele.

Za preusmeritev v gručo vzporednega skaliranja mora biti zahteva postavljena v čakalno vrsto. Poleg tega poizvedbe, primerne za čakalno vrsto SQA (pospeševanje kratkih poizvedb), ne bo deloval v grozdih vzporednega merila.

Čakalne vrste in SQA zahtevajo ustrezno konfiguracijo Redshift Workload Management (WLM). Priporočamo, da najprej optimizirate svoj WLM – to bo zmanjšalo potrebo po vzporednem skaliranju. In to je pomembno, ker je vzporedno skaliranje brezplačno le določeno število ur. AWS trdi, da bo vzporedno skaliranje brezplačno za 97 % strank, kar nas pripelje do vprašanja cen.

Stroški vzporednega skaliranja

AWS ponuja kreditni model za vzporedno skaliranje. Vsaka aktivna gruča Amazon RedShift Nabira kredite vsako uro, do ene ure brezplačnih kreditov za vzporedno skaliranje na dan.

Plačate le, če vaša uporaba grozdov za vzporedno skaliranje preseže znesek kreditov, ki ste jih prejeli.

Strošek je izračunan po stopnji na zahtevo na sekundo za vzporedno gručo, ki se uporablja nad brezplačno ceno. Zaračunamo vam samo za čas trajanja vaših zahtev, z najmanj eno minuto vsakič, ko je aktivirana gruča vzporednega skaliranja. Cena na sekundo na zahtevo se izračuna na podlagi splošnih načel oblikovanja cen Amazon RedShift, kar pomeni, da je odvisno od vrste vozlišča in števila vozlišč v vaši gruči.

Zagon vzporednega skaliranja

Vzporedno skaliranje se sproži za vsako čakalno vrsto WLM. Pojdite na konzolo AWS Redshift in v levem navigacijskem meniju izberite Workload Management. V naslednjem spustnem meniju izberite skupino parametrov WLM vaše gruče.

Poleg vsake čakalne vrste boste videli nov stolpec z imenom »Način skaliranja sočasnosti«. Privzeto je "Onemogočeno". Kliknite »Uredi« in lahko spremenite nastavitve za vsako čakalno vrsto.

Amazon Redshift Parallel Scaling Vodnik in rezultati testa

Konfiguracija

Vzporedno skaliranje deluje tako, da posreduje ustrezne zahteve novim namenskim gručam. Nove gruče imajo enako velikost (vrsto in število vozlišč) kot glavna gruča.

Privzeto število gruč, ki se uporabljajo za vzporedno skaliranje, je ena (1), z možnostjo konfiguracije do skupno desetih (10) gruč.
Skupno število gruč za vzporedno skaliranje je mogoče nastaviti s parametrom max_concurrency_scaling_clusters. Povečanje vrednosti tega parametra zagotavlja dodatne redundantne gruče.

Amazon Redshift Parallel Scaling Vodnik in rezultati testa

Spremljanje

V konzoli AWS Redshift je na voljo več dodatnih grafov. Grafikon Max Configured Concurrency Scaling Clusters prikazuje vrednost max_concurrency_scaling_clusters skozi čas.

Amazon Redshift Parallel Scaling Vodnik in rezultati testa

Število aktivnih gruč za skaliranje je prikazano v uporabniškem vmesniku v razdelku »Dejavnost skaliranja sočasnosti«:

Amazon Redshift Parallel Scaling Vodnik in rezultati testa

Na zavihku Poizvedbe je stolpec, ki označuje, ali je bila poizvedba izvedena v glavni gruči ali v gruči za vzporedno skaliranje:

Amazon Redshift Parallel Scaling Vodnik in rezultati testa

Ne glede na to, ali je bila določena poizvedba izvedena v glavni gruči ali prek vzporedne gruče za skaliranje, je shranjena v stl_query.concurrency_scaling_status.

Amazon Redshift Parallel Scaling Vodnik in rezultati testa

Vrednost 1 pomeni, da je bila poizvedba izvedena v gruči vzporednega merila, medtem ko druge vrednosti kažejo, da je bila izvedena v primarni gruči.

Primer:

Amazon Redshift Parallel Scaling Vodnik in rezultati testa

Informacije o skaliranju sočasnosti so shranjene tudi v nekaterih drugih tabelah in pogledih, kot je SVCS_CONCURRENCY_SCALING_USAGE. Poleg tega obstajajo številne kataloške tabele, ki hranijo informacije o vzporednem skaliranju.

Ugotovitve

Avtorji so začeli vzporedno skaliranje za eno čakalno vrsto v notranji gruči ob približno 18:30:00 GMT dne 29.03.2019. marca 3. Spremenili parameter max_concurrency_scaling_clusters na 20 ob približno 30:00:29.03.2019 dne XNUMX. marca XNUMX.

Za simulacijo čakalne vrste zahtev smo zmanjšali število rež za to čakalno vrsto s 15 na 5.

Spodaj je grafikon nadzorne plošče intermix.io, ki prikazuje število zahtev, ki se izvajajo in čakajo v čakalni vrsti po zmanjšanju števila rež.

Amazon Redshift Parallel Scaling Vodnik in rezultati testa

Opažamo, da se je čakalna doba za zahtevke v čakalni vrsti podaljšala, največja pa je več kot 5 minut.

Amazon Redshift Parallel Scaling Vodnik in rezultati testa

Tukaj so ustrezne informacije s konzole AWS o tem, kaj se je zgodilo v tem času:

Amazon Redshift Parallel Scaling Vodnik in rezultati testa

Redshift je zagnal tri (3) vzporedne gruče za skaliranje, kot je konfigurirano. Kaže, da so bile te gruče premalo izkoriščene, čeprav je bilo veliko zahtev v naši gruči v čakalni vrsti.

Graf uporabe je v korelaciji z grafom aktivnosti skaliranja:

Amazon Redshift Parallel Scaling Vodnik in rezultati testa

Po nekaj urah so avtorji preverili čakalno vrsto in bilo je videti, kot da se 6 zahtev izvaja pri vzporednem skaliranju. Prav tako smo naključno preizkusili dve zahtevi prek uporabniškega vmesnika. Nismo preverili, kako uporabiti te vrednosti, ko je aktivnih več vzporednih gruč hkrati.

Amazon Redshift Parallel Scaling Vodnik in rezultati testa

Ugotovitve

Vzporedno skaliranje lahko zmanjša čas, ki ga zahteve preživijo v čakalni vrsti med največjimi obremenitvami.

Na podlagi rezultatov osnovnega testa se je izkazalo, da se je stanje z nakladalnimi zahtevami delno izboljšalo. Vendar samo vzporedno skaliranje ni rešilo vseh težav s sočasnostjo.

To je posledica omejitev vrst poizvedb, ki lahko uporabljajo vzporedno skaliranje. Na primer, avtorji imajo veliko tabel s prepletenimi ključi za razvrščanje in večino našega dela predstavlja pisanje.

Čeprav vzporedno skaliranje ni univerzalna rešitev za nastavitev WLM, je uporaba te funkcije preprosta in enostavna.

Zato avtor priporoča, da ga uporabite za svoje čakalne vrste WLM. Začnite z eno vzporedno gručo in spremljajte največjo obremenitev prek konzole, da ugotovite, ali so nove gruče v celoti izkoriščene.

Ker AWS dodaja podporo za dodatne vrste poizvedb in tabele, bi moralo vzporedno skaliranje postopoma postati vse bolj učinkovito.

Komentar Daniyarja Belkhodzhaeva, Skyeng Data Engineer

Prav tako smo pri Skyeng takoj opazili nastajajočo možnost vzporednega skaliranja.
Funkcionalnost je zelo privlačna, sploh če upoštevamo, da AWS ocenjuje, da večini uporabnikov zanjo niti ne bo treba doplačati.

Tako se je zgodilo, da smo sredi aprila imeli nenavaden naval zahtevkov v gručo Redshift. V tem obdobju smo se pogosto zatekli k skaliranju sočasnosti, včasih je dodatna gruča delovala 24 ur na dan brez prekinitve.

To je omogočilo, če že ne popolno rešitev problema s čakalnimi vrstami, pa vsaj sprejemljivo stanje.

Naša opažanja se v veliki meri ujemajo z vtisi fantov iz intermix.io.

Opazili smo tudi, da čeprav so v čakalni vrsti čakale zahteve, vse zahteve niso bile takoj posredovane v vzporedno gručo. Očitno se to zgodi, ker vzporedna gruča še vedno potrebuje čas za zagon. Posledično imamo ob kratkotrajnih koničnih obremenitvah še vedno majhne čakalne vrste, ustrezni alarmi pa imajo čas za sprožitev.

Ko smo se v aprilu znebili nenormalnih obremenitev, smo, kot je pričakoval AWS, prešli v način občasne uporabe - v okviru proste norme.
Svojim stroškom vzporednega skaliranja lahko sledite v AWS Cost Explorer. Izbrati morate Storitev - Redshift, Vrsta uporabe - CS, na primer USW2-CS:dc2.large.

Več o cenah lahko preberete v ruščini tukaj.

Vir: www.habr.com

Dodaj komentar