Ghid de scalare paralelă Amazon Redshift și rezultatele testelor

Ghid de scalare paralelă Amazon Redshift și rezultatele testelor

La Skyeng folosim Amazon Redshift, inclusiv scalarea paralelă, așa că am găsit interesant acest articol al lui Stefan Gromoll, fondatorul dotgo.com, pentru intermix.io. După traducere, puțin din experiența noastră de la inginerul de date Daniyar Belkhodzhaev.

Arhitectura Amazon Redshift permite scalarea prin adăugarea de noi noduri la cluster. Necesitatea de a face față unui număr maxim de solicitări poate duce la supraprovizionarea nodurilor. Scalare simultană, spre deosebire de adăugarea de noi noduri, crește puterea de calcul după cum este necesar.

Scalare paralelă Amazon Redshift oferă clusterelor Redshift capacitate suplimentară pentru a gestiona volumele de solicitări de vârf. Funcționează prin mutarea cererilor în noi clustere „paralele” în fundal. Solicitările sunt direcționate pe baza configurației și regulilor WLM.

Prețurile de scalare paralelă se bazează pe un model de credit cu un nivel gratuit. Peste creditele gratuite, plata se bazează pe timpul în care Parallel Scaling Cluster procesează cererile.

Autorul a testat scalarea paralelă pe unul dintre clusterele interne. În această postare, el va vorbi despre rezultatele testelor și va oferi sfaturi despre cum să începeți.

Cerințele clusterului

Pentru a utiliza scalarea paralelă, clusterul dvs. Amazon Redshift trebuie să îndeplinească următoarele cerințe:

- platforma: EC2-VPC;
- tipul nodului: dc2.8xlarge, ds2.8xlarge, dc2.large sau ds2.xlarge;
- numărul de noduri: de la 2 la 32 (clusterele cu un singur nod nu sunt acceptate).

Tipuri de cereri acceptabile

Scalare paralelă nu este potrivită pentru toate tipurile de interogări. În prima versiune, procesează doar cererile de citire care îndeplinesc trei condiții:

— Interogările SELECT sunt doar în citire (deși sunt planificate mai multe tipuri);
— interogarea nu face referire la un tabel cu stilul de sortare INTERLEAVED;
- Interogarea nu folosește Amazon Redshift Spectrum pentru a face referire la tabele externe.

Pentru a fi direcționată către clusterul de scalare paralelă, cererea trebuie să fie pusă în coadă. În plus, interogările eligibile pentru coadă SQA (accelerare scurtă a interogărilor), nu va rula pe clustere la scară paralelă.

Cozile și SQA necesită o configurare adecvată Redshift Workload Management (WLM). Vă recomandăm să optimizați mai întâi WLM - acest lucru va reduce nevoia de scalare paralelă. Și acest lucru este important deoarece scalarea paralelă este gratuită doar pentru un anumit număr de ore. AWS susține că scalarea paralelă va fi gratuită pentru 97% dintre clienți, ceea ce ne aduce la problema prețurilor.

Costul scalarii paralele

AWS oferă un model de credit pentru scalare paralelă. Fiecare cluster activ Amazon RedShift Acumulează credite pe oră, până la o oră de credite gratuite de scalare paralelă pe zi.

Plătiți numai atunci când utilizarea Clusterelor de scalare paralelă depășește valoarea creditelor pe care le-ați primit.

Costul este calculat la o rată la cerere pe secundă pentru un cluster paralel care este utilizat peste rata gratuită. Sunteți taxat doar pentru durata solicitărilor dvs., cu o taxă minimă de un minut de fiecare dată când este activat un cluster de scalare paralelă. Rata la cerere pe secundă este calculată pe baza principiilor generale de tarifare Amazon RedShift, adică depinde de tipul de nod și de numărul de noduri din clusterul tău.

Lansarea Parallel Scaling

Scalare paralelă este declanșată pentru fiecare coadă WLM. Accesați consola AWS Redshift și selectați Workload Management din meniul de navigare din stânga. Selectați grupul de parametri WLM al clusterului dvs. din următorul meniu derulant.

Veți vedea o nouă coloană numită „Modul de scalare simultană” lângă fiecare coadă. Valoarea implicită este „Dezactivat”. Faceți clic pe „Editați” și puteți modifica setările pentru fiecare coadă.

Ghid de scalare paralelă Amazon Redshift și rezultatele testelor

configurație

Scalare paralelă funcționează prin transmiterea cererilor adecvate către noi clustere dedicate. Noile clustere au aceeași dimensiune (tip și număr de noduri) ca și clusterul principal.

Numărul implicit de clustere utilizate pentru scalarea paralelă este unul (1), cu posibilitatea de a configura până la un total de zece (10) clustere.
Numărul total de clustere pentru scalarea paralelă poate fi setat de parametrul max_concurrency_scaling_clusters. Creșterea valorii acestui parametru oferă clustere redundante suplimentare.

Ghid de scalare paralelă Amazon Redshift și rezultatele testelor

monitorizarea

Există mai multe grafice suplimentare disponibile în consola AWS Redshift. Graficul Clusterelor de scalare simultană maximă configurate afișează valoarea max_concurrency_scaling_clusters în timp.

Ghid de scalare paralelă Amazon Redshift și rezultatele testelor

Numărul de clustere de scalare active este afișat în interfața cu utilizatorul în secțiunea „Activitate de scalare simultană”:

Ghid de scalare paralelă Amazon Redshift și rezultatele testelor

În fila Interogări, există o coloană care indică dacă interogarea a fost executată în clusterul principal sau în clusterul de scalare paralelă:

Ghid de scalare paralelă Amazon Redshift și rezultatele testelor

Indiferent dacă o anumită interogare a fost executată în clusterul principal sau printr-un cluster de scalare paralelă, aceasta este stocată în stl_query.concurrency_scaling_status.

Ghid de scalare paralelă Amazon Redshift și rezultatele testelor

O valoare de 1 indică faptul că interogarea a fost executată în clusterul de scară paralelă, în timp ce alte valori indică faptul că a fost executată în clusterul primar.

Exemplu:

Ghid de scalare paralelă Amazon Redshift și rezultatele testelor

Informațiile privind scalarea simultană sunt stocate și în alte tabele și vizualizări, cum ar fi SVCS_CONCURRENCY_SCALING_USAGE. În plus, există o serie de tabele de catalog care stochează informații despre scalarea paralelă.

Constatări

Autorii au început scalarea paralelă pentru o coadă din clusterul intern la aproximativ 18:30:00 GMT pe 29.03.2019. S-au schimbat parametrul max_concurrency_scaling_clusters la 3 la aproximativ 20:30:00 pe 29.03.2019.

Pentru a simula o coadă de solicitări, am redus numărul de sloturi pentru această coadă de la 15 la 5.

Mai jos este o diagramă a tabloului de bord intermix.io care arată numărul de solicitări care rulează și care sunt în coadă după reducerea numărului de sloturi.

Ghid de scalare paralelă Amazon Redshift și rezultatele testelor

Vedem că timpul de așteptare pentru solicitările în coadă a crescut, timpul maxim fiind mai mare de 5 minute.

Ghid de scalare paralelă Amazon Redshift și rezultatele testelor

Iată informațiile relevante din consola AWS despre ceea ce s-a întâmplat în acest timp:

Ghid de scalare paralelă Amazon Redshift și rezultatele testelor

Redshift a lansat trei (3) clustere de scalare paralelă conform configurației. Se pare că aceste clustere au fost subutilizate, chiar dacă multe solicitări din clusterul nostru au fost puse în coadă.

Graficul de utilizare se corelează cu graficul activității de scalare:

Ghid de scalare paralelă Amazon Redshift și rezultatele testelor

După câteva ore, autorii au verificat coada și părea că 6 solicitări rulau la scalare paralelă. De asemenea, am testat aleatoriu două solicitări prin interfața cu utilizatorul. Nu am verificat cum să folosim aceste valori atunci când mai multe clustere paralele sunt active simultan.

Ghid de scalare paralelă Amazon Redshift și rezultatele testelor

Constatări

Scalarea paralelă poate reduce timpul petrecut de solicitări în coadă în timpul sarcinilor de vârf.

Pe baza rezultatelor testului de bază, s-a dovedit că situația cu solicitările de încărcare s-a îmbunătățit parțial. Cu toate acestea, scalarea paralelă în sine nu a rezolvat toate problemele de concurență.

Acest lucru se datorează restricțiilor privind tipurile de interogări care pot utiliza scalarea paralelă. De exemplu, autorii au multe tabele cu chei de sortare intercalate, iar cea mai mare parte a volumului nostru de lucru este scris.

Deși scalarea paralelă nu este o soluție universală pentru configurarea WLM, utilizarea acestei caracteristici este simplă și simplă.

Prin urmare, autorul recomandă utilizarea acestuia pentru cozile dvs. WLM. Începeți cu un cluster paralel și monitorizați sarcina maximă prin consolă pentru a determina dacă noile clustere sunt utilizate pe deplin.

Pe măsură ce AWS adaugă suport pentru tipuri și tabele de interogare suplimentare, scalarea paralelă ar trebui să devină treptat din ce în ce mai eficientă.

Comentariu de la Daniyar Belkhodzhaev, inginer de date Skyeng

Noi, cei de la Skyeng, am observat imediat posibilitatea de scalare paralelă.
Funcționalitatea este foarte atractivă, mai ales având în vedere că AWS estimează că majoritatea utilizatorilor nici măcar nu vor trebui să plătească în plus pentru aceasta.

S-a întâmplat că la mijlocul lunii aprilie am avut o serie neobișnuită de solicitări către grupul Redshift. În această perioadă, am apelat adesea la Concurrency Scaling; uneori, un cluster suplimentar funcționa 24 de ore pe zi fără oprire.

Acest lucru a făcut posibil, dacă nu rezolvarea completă a problemei cu cozile, atunci măcar să facă situația acceptabilă.

Observațiile noastre coincid în mare măsură cu impresiile băieților de la intermix.io.

De asemenea, am observat că, deși au existat solicitări în așteptare în coadă, nu toate solicitările au fost imediat redirecționate către clusterul paralel. Se pare că acest lucru se întâmplă deoarece clusterul paralel are încă nevoie de timp pentru a începe. Drept urmare, în timpul sarcinilor de vârf de scurtă durată avem încă cozi mici, iar alarmele corespunzătoare au timp să se declanșeze.

După ce am scăpat de încărcăturile anormale în aprilie, noi, așa cum se aștepta AWS, am intrat în modul de utilizare ocazional - în cadrul normei gratuite.
Puteți urmări costurile de scalare paralelă în AWS Cost Explorer. Trebuie să selectați Service - Redshift, Utilizare Type - CS, de exemplu USW2-CS:dc2.large.

Puteți citi mai multe despre prețuri în limba rusă aici.

Sursa: www.habr.com

Adauga un comentariu