Amazon Redshift Parallel Scaling Guide ja testitulemused

Amazon Redshift Parallel Scaling Guide ja testitulemused

Skyengis kasutame Amazon Redshifti, sealhulgas paralleelset skaleerimist, nii et leidsime intermix.io jaoks huvitava artikli, mille autoriks on Stefan Gromoll, dotgo.com asutaja. Pärast tõlget veidi meie kogemustest andmeinsener Daniyar Belkhodzhaev.

Amazoni punase nihke arhitektuur võimaldab skaleerimist, lisades klastrisse uusi sõlmi. Vajadus tulla toime suure taotluste arvuga võib põhjustada sõlmede ülevarustamist. Samaaegsuse skaleerimine, mitte uute sõlmede lisamine, suurendab vastavalt vajadusele arvutusvõimsust.

Amazon Redshifti paralleelne skaleerimine annab Redshifti klastritele täiendava võimsuse, et käsitleda taotluste tippmahtusid. See toimib, liigutades päringuid taustal uutesse paralleelsetesse klastritesse. Taotlused suunatakse WLM-i konfiguratsiooni ja reeglite alusel.

Paralleelse skaleerimise hinnakujundus põhineb tasuta tasemega krediidimudelil. Tasuta krediitidest kõrgemal põhineb maksmine ajal, mil Parallel Scaling Cluster töötleb taotlusi.

Autor katsetas paralleelset skaleerimist ühel sisemisel klastril. Selles postituses räägib ta testitulemustest ja annab näpunäiteid, kuidas alustada.

Klastrite nõuded

Paralleelse skaleerimise kasutamiseks peab teie Amazon Redshifti klaster vastama järgmistele nõuetele.

- platvorm: EC2-VPC;
— sõlme tüüp: dc2.8xlarge, ds2.8xlarge, dc2.large või ds2.xlarge;
— sõlmede arv: 2 kuni 32 (ühe sõlme klastreid ei toetata).

Aktsepteeritavad taotluse tüübid

Paralleelne skaleerimine ei sobi igat tüüpi päringute jaoks. Esimeses versioonis töötleb see ainult lugemistaotlusi, mis vastavad kolmele tingimusele.

— SELECT päringud on kirjutuskaitstud (kuigi plaanis on rohkem tüüpe);
— päring ei viita tabelile INTERLEAVED sortimisstiiliga;
- Päring ei kasuta välistele tabelitele viitamiseks Amazon Redshift Spectrumi.

Paralleelskaleerimisklastrisse suunamiseks peab päring olema järjekorda pandud. Lisaks on järjekorda sobilikud päringud SQA (lühipäringu kiirendus), ei tööta paralleelskaala klastrites.

Järjekorrad ja SQA nõuavad õiget konfigureerimist Redshift Workload Management (WLM). Soovitame kõigepealt optimeerida oma WLM-i – see vähendab paralleelse skaleerimise vajadust. Ja see on oluline, kuna paralleelne skaleerimine on tasuta ainult teatud arvu tunde. AWS väidab, et paralleelne skaleerimine on 97% klientidest tasuta, mis toob meid hinnakujunduse küsimuseni.

Paralleelse skaleerimise maksumus

AWS pakub krediidimudelit paralleelseks skaleerimiseks. Iga aktiivne klaster Amazoni punane nihe Kogub ainepunkte tunnis, kuni üks tund tasuta paralleelse skaleerimise krediiti päevas.

Maksate ainult siis, kui teie Parallel Scaling Clusters kasutamine ületab saadud krediidisumma.

Kulud arvutatakse paralleelse klastri jaoks, mida kasutatakse vabast määrast kõrgemal, sekundi nõudmisel. Teilt võetakse tasu ainult oma päringute kestuse eest, iga paralleelse skaleerimisklastri aktiveerimise korral tuleb tasuda vähemalt üks minut. Sekundi tellitava tariifi arvutamisel lähtutakse üldistest hinnakujunduspõhimõtetest Amazoni punane nihe, see tähendab, et see sõltub sõlme tüübist ja sõlmede arvust teie klastris.

Paralleelse skaleerimise käivitamine

Iga WLM-i järjekorra jaoks käivitatakse paralleelne skaleerimine. Minge AWS Redshift konsooli ja valige vasakpoolsest navigeerimismenüüst Töökoormuse haldus. Valige järgmisest rippmenüüst oma klastri WLM-i parameetrirühm.

Näete iga järjekorra kõrval uut veergu nimega "Concurrency Scaling Mode". Vaikimisi on "Keelatud". Klõpsake "Muuda" ja saate muuta iga järjekorra sätteid.

Amazon Redshift Parallel Scaling Guide ja testitulemused

Konfiguratsioon

Paralleelne skaleerimine toimib, edastades asjakohased päringud uutele spetsiaalsetele klastritele. Uutel klastritel on sama suurus (tüüp ja sõlmede arv) kui põhiklastril.

Paralleelsel skaleerimisel kasutatavate klastrite vaikearv on üks (1), kokku on võimalik konfigureerida kuni kümme (10) klastrit.
Paralleelsel skaleerimisel kasutatavate klastrite koguarvu saab määrata parameetriga max_concurrency_scaling_clusters. Selle parameetri väärtuse suurendamine annab täiendavaid üleliigseid klastreid.

Amazon Redshift Parallel Scaling Guide ja testitulemused

Jälgimine

AWS Redshift konsoolis on saadaval mitu täiendavat graafikut. Maksimaalselt konfigureeritud samaaegsuse skaleerimise klastrite diagramm kuvab max_concurrency_scaling_clusters väärtust aja jooksul.

Amazon Redshift Parallel Scaling Guide ja testitulemused

Aktiivsete skaleerimisklastrite arv kuvatakse kasutajaliidese jaotises „Concurrency Scaling Activity“:

Amazon Redshift Parallel Scaling Guide ja testitulemused

Vahekaardil Päringud on veerg, mis näitab, kas päring täideti põhiklastris või paralleelses skaleerimise klastris:

Amazon Redshift Parallel Scaling Guide ja testitulemused

Olenemata sellest, kas konkreetne päring täideti põhiklastris või paralleelse skaleerimisklastri kaudu, salvestatakse see kaustas stl_query.concurrency_scaling_status.

Amazon Redshift Parallel Scaling Guide ja testitulemused

Väärtus 1 näitab, et päring täideti paralleelskaalas klastris, teised väärtused näitavad, et see täideti esmases klastris.

Näide:

Amazon Redshift Parallel Scaling Guide ja testitulemused

Samaaegsuse skaleerimise teavet salvestatakse ka mõnes teises tabelites ja vaadetes, näiteks SVCS_CONCURRENCY_SCALING_USAGE. Lisaks on mitmeid kataloogitabeleid, mis salvestavad teavet paralleelse skaleerimise kohta.

Järeldused

Autorid alustasid siseklastri ühe järjekorra paralleelset skaleerimist 18 umbes kell 30 GMT. Muutsid 00 parameetri max_concurrency_scaling_clusters väärtuseks 29.03.2019 umbes kell 3.

Taotluste järjekorra simuleerimiseks vähendasime selle järjekorra pesade arvu 15-lt 5-le.

Allpool on intermix.io armatuurlaua diagramm, mis näitab pärast pesade arvu vähendamist töötavate ja järjekorras olevate päringute arvu.

Amazon Redshift Parallel Scaling Guide ja testitulemused

Näeme, et järjekorras olevate päringute ooteaeg on pikenenud, kusjuures maksimaalne aeg on üle 5 minuti.

Amazon Redshift Parallel Scaling Guide ja testitulemused

Siin on asjakohane teave AWS-i konsoolist selle aja jooksul juhtunu kohta:

Amazon Redshift Parallel Scaling Guide ja testitulemused

Redshift käivitas kolm (3) paralleelset skaleerimisklastrit vastavalt konfiguratsioonile. Näib, et need klastrid olid alakasutatud, kuigi paljud meie klastri päringud olid järjekorras.

Kasutusgraafik korreleerub skaleerimistegevuse graafikuga:

Amazon Redshift Parallel Scaling Guide ja testitulemused

Mõne tunni pärast kontrollisid autorid järjekorda ja näis, et paralleelselt skaleeriti 6 päringut. Samuti testisime kasutajaliidese kaudu juhuslikult kahte päringut. Me pole kontrollinud, kuidas neid väärtusi kasutada, kui mitu paralleelset klastrit on korraga aktiivsed.

Amazon Redshift Parallel Scaling Guide ja testitulemused

Järeldused

Paralleelne skaleerimine võib vähendada aega, mis päringud tippkoormuse ajal järjekorras veedavad.

Põhitesti tulemuste põhjal selgus, et olukord taotluste laadimisega on osaliselt paranenud. Kuid paralleelne skaleerimine üksi ei lahendanud kõiki samaaegsusprobleeme.

Selle põhjuseks on piirangud päringute tüüpidele, mis võivad kasutada paralleelset skaleerimist. Näiteks on autoritel palju vahelduvate sortimisvõtmetega tabeleid ja suurem osa meie töökoormusest on kirjutamine.

Kuigi paralleelne skaleerimine ei ole universaalne lahendus WLM-i seadistamiseks, on selle funktsiooni kasutamine lihtne ja arusaadav.

Seetõttu soovitab autor seda kasutada oma WLM-i järjekordade jaoks. Alustage ühe paralleelse klastriga ja jälgige konsooli kaudu tippkoormust, et teha kindlaks, kas uued klastrid on täielikult ära kasutatud.

Kuna AWS lisab tuge täiendavatele päringutüüpidele ja tabelitele, peaks paralleelne skaleerimine järk-järgult muutuma üha tõhusamaks.

Kommentaar Skyengi andmeinsenerilt Daniyar Belkhodzhaevilt

Meie Skyengis märkasime kohe ka paralleelse skaleerimise tekkivat võimalust.
Funktsionaalsus on väga atraktiivne, eriti kui arvestada, et AWS hinnangul ei pea enamik kasutajaid selle eest isegi lisatasu maksma.

Juhtus nii, et aprilli keskel oli meil Punase nihke klastris ebatavaline taotluste tuul. Sel perioodil kasutasime sageli samaaegsuse skaleerimist; mõnikord töötas lisaklaster 24 tundi ööpäevas ilma peatumata.

See võimaldas kui mitte järjekordadega probleemi täielikult lahendada, siis vähemalt olukorra vastuvõetavaks muuta.

Meie tähelepanekud langevad suures osas kokku intermix.io kuttide muljetega.

Samuti märkasime, et kuigi järjekorras ootasid päringuid, ei edastatud kõiki päringuid kohe paralleelklastrisse. Ilmselt juhtub see seetõttu, et paralleelklastri käivitamine võtab veel aega. Seetõttu on lühiajaliste tippkoormuste ajal endiselt väikesed järjekorrad ja vastavatel häiretel on aega käivituda.

Olles aprillis vabanenud ebanormaalsetest koormustest, läksime AWS ootuspäraselt juhukasutuse režiimile - vaba normi piires.
Saate jälgida oma paralleelse skaleerimise kulusid AWS Cost Exploreris. Peate valima Service - Redshift, Usage Type - CS, näiteks USW2-CS:dc2.large.

Hindade kohta saate täpsemalt lugeda vene keeles siia.

Allikas: www.habr.com

Lisa kommentaar