Sprievodca paralelným škálovaním Amazon Redshift a výsledky testov

Sprievodca paralelným škálovaním Amazon Redshift a výsledky testov

V Skyeng používame Amazon Redshift vrátane paralelného škálovania, takže tento článok Stefana Gromolla, zakladateľa dotgo.com, pre intermix.io nás zaujal. Po preklade trochu našich skúseností od dátového inžiniera Daniyara Belkhodzhaeva.

Architektúra Amazon Redshift umožňuje škálovanie pridaním nových uzlov do klastra. Potreba vyrovnať sa s maximálnym počtom požiadaviek môže viesť k nadmernému poskytovaniu uzlov. Concurrency Scaling, na rozdiel od pridávania nových uzlov, zvyšuje výpočtový výkon podľa potreby.

Paralelné škálovanie Amazon Redshift poskytuje klastrom Redshift dodatočnú kapacitu na spracovanie špičkových objemov požiadaviek. Funguje tak, že požiadavky presúva do nových „paralelných“ klastrov na pozadí. Požiadavky sú smerované na základe konfigurácie a pravidiel WLM.

Paralelné škálovanie cien je založené na úverovom modeli s bezplatnou úrovňou. Nad bezplatnými kreditmi je platba založená na čase, keď Parallel Scaling Cluster spracováva požiadavky.

Autor testoval paralelné škálovanie na jednom z interných klastrov. V tomto príspevku bude hovoriť o výsledkoch testov a poskytne tipy, ako začať.

Požiadavky klastra

Ak chcete použiť paralelné škálovanie, váš klaster Amazon Redshift musí spĺňať nasledujúce požiadavky:

- plošina: EC2-VPC;
- typ uzla: dc2.8xlarge, ds2.8xlarge, dc2.large alebo ds2.xlarge;
— počet uzlov: od 2 do 32 (klastre s jedným uzlom nie sú podporované).

Prijateľné typy žiadostí

Paralelné škálovanie nie je vhodné pre všetky typy dopytov. V prvej verzii spracováva iba požiadavky na čítanie, ktoré spĺňajú tri podmienky:

— SELECT dotazy sú len na čítanie (hoci je plánovaných viac typov);
— dotaz neodkazuje na tabuľku so štýlom triedenia INTERLEAVED;
- Dotaz nepoužíva Amazon Redshift Spectrum na odkazovanie na externé tabuľky.

Aby bola požiadavka smerovaná do Parallel Scaling Cluster, musí byť zaradená do frontu. Okrem toho dopyty vhodné pre front SQA (Short Query Acceleration), nebude fungovať v paralelných škálovaných klastroch.

Fronty a SQA vyžadujú správnu konfiguráciu Redshift Workload Management (WLM). Odporúčame najskôr optimalizovať váš WLM – zníži sa tým potreba paralelného škálovania. A to je dôležité, pretože paralelné škálovanie je zadarmo len na určitý počet hodín. AWS tvrdí, že paralelné škálovanie bude pre 97 % zákazníkov bezplatné, čím sa dostávame k otázke cenotvorby.

Náklady na paralelné škálovanie

AWS ponúka kreditný model pre paralelné škálovanie. Každý aktívny klaster Amazon Redshift Akumuluje kredity každú hodinu, až jednu hodinu bezplatných kreditov na paralelné škálovanie za deň.

Platíte len vtedy, keď využitie vašich paralelných škálovacích klastrov presiahne množstvo kreditov, ktoré ste dostali.

Cena sa vypočítava rýchlosťou za sekundu na požiadanie pre paralelný klaster, ktorý sa používa nad bezplatnou rýchlosťou. Účtuje sa vám len doba trvania vašich požiadaviek, pričom minimálna výška poplatku je jedna minúta pri každej aktivácii Parallel Scaling Cluster. Sadzba za sekundu na požiadanie sa vypočítava na základe všeobecných zásad tvorby cien Amazon Redshift, to znamená, že to závisí od typu uzla a počtu uzlov vo vašom klastri.

Spustenie paralelného škálovania

Paralelné škálovanie sa spúšťa pre každý front WLM. Prejdite na konzolu AWS Redshift a v ľavej navigačnej ponuke vyberte položku Workload Management. Z nasledujúcej rozbaľovacej ponuky vyberte skupinu parametrov WLM vášho klastra.

Vedľa každého frontu uvidíte nový stĺpec s názvom „Režim škálovania súbežnosti“. Predvolená hodnota je "Zakázané". Kliknite na "Upraviť" a môžete zmeniť nastavenia pre každý front.

Sprievodca paralelným škálovaním Amazon Redshift a výsledky testov

konfigurácia

Paralelné škálovanie funguje tak, že sa príslušné požiadavky preposielajú novým vyhradeným klastrom. Nové klastre majú rovnakú veľkosť (typ a počet uzlov) ako hlavný klaster.

Predvolený počet klastrov používaných na paralelné škálovanie je jeden (1), pričom je možné nakonfigurovať celkovo až desať (10) klastrov.
Celkový počet klastrov pre paralelné škálovanie možno nastaviť parametrom max_concurrency_scaling_clusters. Zvýšenie hodnoty tohto parametra poskytuje ďalšie redundantné klastre.

Sprievodca paralelným škálovaním Amazon Redshift a výsledky testov

monitorovanie

V konzole AWS Redshift je k dispozícii niekoľko ďalších grafov. Graf Max Concurrency Scaling Clusters zobrazuje hodnotu max_concurrency_scaling_clusters v priebehu času.

Sprievodca paralelným škálovaním Amazon Redshift a výsledky testov

Počet aktívnych škálovacích klastrov sa zobrazuje v používateľskom rozhraní v časti „Činnosť škálovania súbežnosti“:

Sprievodca paralelným škálovaním Amazon Redshift a výsledky testov

Na karte Dotazy je stĺpec označujúci, či bol dotaz vykonaný v hlavnom klastri alebo v klastri paralelného škálovania:

Sprievodca paralelným škálovaním Amazon Redshift a výsledky testov

Bez ohľadu na to, či bol konkrétny dotaz vykonaný v hlavnom klastri alebo prostredníctvom paralelného škálovacieho klastra, je uložený v stl_query.concurrency_scaling_status.

Sprievodca paralelným škálovaním Amazon Redshift a výsledky testov

Hodnota 1 znamená, že dotaz bol vykonaný v klastri paralelnej škály, zatiaľ čo ostatné hodnoty naznačujú, že bol vykonaný v primárnom klastri.

Príklad:

Sprievodca paralelným škálovaním Amazon Redshift a výsledky testov

Informácie o mierke súbežnosti sú uložené aj v niektorých ďalších tabuľkách a zobrazeniach, ako napríklad SVCS_CONCURRENCY_SCALING_USAGE. Okrem toho existuje množstvo katalógových tabuliek, ktoré uchovávajú informácie o paralelnom škálovaní.

výsledky

Autori spustili paralelné škálovanie pre jeden front v internom klastri približne o 18:30:00 GMT dňa 29.03.2019. 3. 20. Parameter max_concurrency_scaling_clusters zmenili na hodnotu 30 približne o 00:29.03.2019:XNUMX dňa XNUMX. XNUMX. XNUMX.

Aby sme simulovali front žiadostí, znížili sme počet slotov pre tento front z 15 na 5.

Nižšie je tabuľka intermix.io znázorňujúca počet spustených požiadaviek a vo fronte po znížení počtu slotov.

Sprievodca paralelným škálovaním Amazon Redshift a výsledky testov

Vidíme, že čas čakania na požiadavky vo fronte sa zvýšil, pričom maximálny čas je viac ako 5 minút.

Sprievodca paralelným škálovaním Amazon Redshift a výsledky testov

Tu sú relevantné informácie z konzoly AWS o tom, čo sa stalo počas tejto doby:

Sprievodca paralelným škálovaním Amazon Redshift a výsledky testov

Redshift spustil tri (3) klastre paralelného škálovania podľa konfigurácie. Zdá sa, že tieto klastre boli nedostatočne využívané, aj keď veľa požiadaviek v našom klastri bolo vo fronte.

Graf používania koreluje s grafom aktivity škálovania:

Sprievodca paralelným škálovaním Amazon Redshift a výsledky testov

Po niekoľkých hodinách autori skontrolovali front a vyzeralo to, že 6 požiadaviek beží pri paralelnom škálovaní. Cez používateľské rozhranie sme náhodne otestovali aj dve požiadavky. Nekontrolovali sme, ako použiť tieto hodnoty, keď je aktívnych niekoľko paralelných klastrov naraz.

Sprievodca paralelným škálovaním Amazon Redshift a výsledky testov

Závery

Paralelné škálovanie môže znížiť čas strávený požiadavkami vo fronte počas špičkového zaťaženia.

Na základe výsledkov základného testu sa ukázalo, že situácia s načítaním požiadaviek sa čiastočne zlepšila. Samotné paralelné škálovanie však nevyriešilo všetky problémy so súbežnosťou.

Je to kvôli obmedzeniam typov dotazov, ktoré môžu používať paralelné škálovanie. Autori majú napríklad veľa tabuliek s prekladanými kľúčmi na triedenie a väčšinu našej práce tvorí písanie.

Hoci paralelné škálovanie nie je univerzálnym riešením pre nastavenie WLM, používanie tejto funkcie je jednoduché a priamočiare.

Preto autor odporúča použiť ho pre vaše WLM fronty. Začnite s jedným paralelným klastrom a monitorujte špičkové zaťaženie prostredníctvom konzoly, aby ste zistili, či sú nové klastre plne využívané.

Keďže AWS pridáva podporu pre ďalšie typy dotazov a tabuľky, paralelné škálovanie by malo byť postupne čoraz efektívnejšie.

Komentár od Daniyara Belkhodzhaeva, dátového inžiniera Skyeng

My v Skyengu sme si tiež okamžite všimli vznikajúcu možnosť paralelného škálovania.
Funkcionalita je veľmi atraktívna, najmä ak vezmeme do úvahy, že AWS odhaduje, že väčšina používateľov si za ňu ani nebude musieť priplatiť.

Stalo sa, že v polovici apríla sme mali nezvyčajný nával požiadaviek na klaster Redshift. Počas tohto obdobia sme sa často uchýlili k Concurrency Scaling; niekedy ďalší klaster pracoval 24 hodín denne bez zastavenia.

To umožnilo ak nie úplne vyriešiť problém s radmi, tak aspoň urobiť situáciu prijateľnou.

Naše postrehy sa do značnej miery zhodujú s dojmami chalanov z intermix.io.

Všimli sme si tiež, že aj keď vo fronte čakali požiadavky, nie všetky požiadavky boli okamžite preposlané do paralelného klastra. Zjavne sa to deje preto, že spustenie paralelného klastra stále trvá. Výsledkom je, že počas krátkodobého špičkového zaťaženia máme stále malé fronty a príslušné alarmy majú čas na spustenie.

Keď sme sa v apríli zbavili abnormálnej záťaže, podľa očakávania AWS sme vstúpili do režimu občasného používania - v rámci bezplatnej normy.
Svoje náklady na paralelné škálovanie môžete sledovať v AWS Cost Explorer. Musíte vybrať Služba - Červený posun, Typ použitia - CS, napríklad USW2-CS:dc2.large.

Viac o cenách si môžete prečítať v ruštine tu.

Zdroj: hab.com

Pridať komentár