Amazon Redshift Parallel Scaling Guide ja testitulokset

Amazon Redshift Parallel Scaling Guide ja testitulokset

Skyengillä käytämme Amazon Redshiftiä, mukaan lukien rinnakkaisskaalaus, joten tämä Stefan Gromoll, dotgo.comin perustaja, intermix.io-sivustolla oli kiinnostava. Käännöksen jälkeen hieman kokemustamme tietoinsinööri Daniyar Belkhodzhaevilta.

Amazon Redshift -arkkitehtuuri mahdollistaa skaalauksen lisäämällä uusia solmuja klusteriin. Tarve selviytyä pyyntöjen huippumäärästä voi johtaa solmujen ylivalvontaan. Samanaikaisuuden skaalaus, toisin kuin uusien solmujen lisääminen, lisää laskentatehoa tarpeen mukaan.

Amazon Redshift -rinnakkaisskaalaus antaa Redshift-klustereille lisäkapasiteettia huippupyyntömäärien käsittelyyn. Se toimii siirtämällä pyynnöt uusiin "rinnakkaisryhmiin" taustalla. Pyynnöt reititetään WLM-määritysten ja sääntöjen perusteella.

Rinnakkaisskaalaushinnoittelu perustuu luottomalliin, jossa on ilmainen taso. Ilmaisten luottojen lisäksi maksu perustuu aikaan, jolloin Parallel Scaling Cluster käsittelee pyynnöt.

Kirjoittaja testasi rinnakkaisskaalausta yhdessä sisäisistä klustereista. Tässä viestissä hän kertoo testituloksista ja antaa vinkkejä alkuun pääsemiseen.

Klusterin vaatimukset

Jotta voit käyttää rinnakkaisskaalausta, Amazon Redshift -klusterisi on täytettävä seuraavat vaatimukset:

- alusta: EC2-VPC;
— solmun tyyppi: dc2.8xlarge, ds2.8xlarge, dc2.large tai ds2.xlarge;
— solmujen lukumäärä: 2 - 32 (yksisolmun klustereita ei tueta).

Hyväksytyt pyyntötyypit

Rinnakkaisskaalaus ei sovellu kaikentyyppisille kyselyille. Ensimmäisessä versiossa se käsittelee vain lukupyynnöt, jotka täyttävät kolme ehtoa:

— SELECT-kyselyt ovat vain luku -muotoisia (vaikka lisää tyyppejä suunnitellaan);
— kysely ei viittaa taulukkoon, jonka lajittelutyyli on INTERLEAVED;
- Kysely ei käytä Amazon Redshift Spectrumia viittaamaan ulkoisiin taulukoihin.

Jotta pyyntö voidaan reitittää Parallel Scaling Clusteriin, se on asetettava jonoon. Lisäksi jonoon kelpaavat kyselyt SQA (lyhyen kyselyn kiihdytys), ei toimi rinnakkaisen mittakaavan klustereissa.

Jonot ja SQA vaativat oikean määrityksen Redshift Workload Management (WLM). Suosittelemme optimoimaan WLM:si ensin - tämä vähentää rinnakkaisskaalauksen tarvetta. Ja tämä on tärkeää, koska rinnakkaisskaalaus on ilmaista vain tietyn tunnin ajan. AWS väittää, että rinnakkaisskaalaus on ilmaista 97 prosentille asiakkaista, mikä vie meidät hinnoittelukysymykseen.

Rinnakkaisskaalauksen kustannukset

AWS tarjoaa luottomallin rinnakkaisskaalaukseen. Jokainen aktiivinen klusteri Amazonin punainen siirto Kerää krediittejä tunneittain, jopa yksi tunti ilmaisia ​​rinnakkaisskaalauspisteitä päivässä.

Maksat vain, kun Parallel Scaling Clusters -käyttösi ylittää saamiesi hyvitysten määrän.

Kustannukset lasketaan sekunnissa on-demand -hinnalla rinnakkaisklusterille, jota käytetään vapaan hinnan yläpuolella. Sinua veloitetaan vain pyyntöjesi ajalta, ja vähintään yhden minuutin maksu joka kerta, kun Rinnakkaisskaalausklusteri aktivoidaan. Sekunti on-demand -hinta lasketaan yleisten hinnoitteluperiaatteiden mukaisesti Amazonin punainen siirto, eli se riippuu solmun tyypistä ja klusterin solmujen lukumäärästä.

Rinnakkaisskaalauksen käynnistäminen

Rinnakkaisskaalaus käynnistetään jokaiselle WLM-jonolle. Siirry AWS Redshift -konsoliin ja valitse vasemmasta navigointivalikosta Workload Management. Valitse klusterin WLM-parametriryhmä seuraavasta avattavasta valikosta.

Näet jokaisen jonon vieressä uuden sarakkeen nimeltä "Concurrency Scaling Mode". Oletusasetus on "Ei käytössä". Napsauta "Muokkaa" ja voit muuttaa kunkin jonon asetuksia.

Amazon Redshift Parallel Scaling Guide ja testitulokset

kokoonpano

Rinnakkaisskaalaus toimii välittämällä asianmukaiset pyynnöt uusiin dedikoituihin klustereihin. Uusilla klustereilla on sama koko (tyyppi ja solmujen lukumäärä) kuin pääklusterilla.

Rinnakkaisskaalaukseen käytettyjen klustereiden oletusmäärä on yksi (1), ja yhteensä voidaan määrittää enintään kymmenen (10) klusteria.
Rinnakkaisskaalauksen klusterien kokonaismäärä voidaan asettaa parametrilla max_concurrency_scaling_clusters. Tämän parametrin arvon kasvattaminen tuottaa lisää redundantteja klustereita.

Amazon Redshift Parallel Scaling Guide ja testitulokset

seuranta

AWS Redshift -konsolissa on saatavilla useita lisäkaavioita. Max Configured Concurrency Scaling Clusters -kaavio näyttää max_concurrency_scaling_clusters-arvon ajan kuluessa.

Amazon Redshift Parallel Scaling Guide ja testitulokset

Aktiivisten skaalausklusterien määrä näkyy käyttöliittymässä "Concurrency Scaling Activity" -osiossa:

Amazon Redshift Parallel Scaling Guide ja testitulokset

Kyselyt-välilehdessä on sarake, joka osoittaa, suoritettiinko kysely pääklusterissa vai rinnakkaisskaalausklusterissa:

Amazon Redshift Parallel Scaling Guide ja testitulokset

Riippumatta siitä, suoritettiinko tietty kysely pääklusterissa vai rinnakkaisen skaalausklusterin kautta, se tallennetaan kansioon stl_query.concurrency_scaling_status.

Amazon Redshift Parallel Scaling Guide ja testitulokset

Arvo 1 osoittaa, että kysely suoritettiin rinnakkaismittakaavaklusterissa, kun taas muut arvot osoittavat, että se suoritettiin ensisijaisessa klusterissa.

Esimerkiksi:

Amazon Redshift Parallel Scaling Guide ja testitulokset

Samanaikaisuuden skaalaustiedot on tallennettu myös joihinkin muihin taulukoihin ja näkymiin, kuten SVCS_CONCURRENCY_SCALING_USAGE. Lisäksi on useita luettelotaulukoita, jotka tallentavat tietoja rinnakkaisskaalauksesta.

Tulokset

Kirjoittajat aloittivat yhden jonon rinnakkaisskaalauksen sisäisessä klusterissa noin klo 18 GMT 30. Muuttivat max_concurrency_scaling_clusters-parametrin arvoon 00 noin klo 29.03.2019 3.

Pyyntöjonon simuloimiseksi pienensimme tämän jonon aikavälien määrää 15:stä 5:een.

Alla on intermix.io-koontinäyttökaavio, joka näyttää käynnissä olevien ja jonossa olevien pyyntöjen määrän paikkojen määrän vähentämisen jälkeen.

Amazon Redshift Parallel Scaling Guide ja testitulokset

Näemme, että jonossa olevien pyyntöjen odotusaika on pidentynyt, maksimiaika on yli 5 minuuttia.

Amazon Redshift Parallel Scaling Guide ja testitulokset

Tässä on oleellista tietoa AWS-konsolista tänä aikana tapahtuneesta:

Amazon Redshift Parallel Scaling Guide ja testitulokset

Redshift käynnisti kolme (3) rinnakkaista skaalausklusteria määritetyllä tavalla. Vaikuttaa siltä, ​​että nämä klusterit olivat vajaakäytössä, vaikka monet klusterimme pyynnöt olivat jonossa.

Käyttökaavio korreloi skaalausaktiivisuuskaavion kanssa:

Amazon Redshift Parallel Scaling Guide ja testitulokset

Muutaman tunnin kuluttua kirjoittajat tarkistivat jonon ja näytti siltä, ​​​​että 6 pyyntöä oli käynnissä rinnakkain skaalaus. Testasimme myös satunnaisesti kaksi pyyntöä käyttöliittymän kautta. Emme ole tarkistaneet, kuinka näitä arvoja käytetään, kun useita rinnakkaisia ​​klustereita on aktiivisia kerralla.

Amazon Redshift Parallel Scaling Guide ja testitulokset

Tulokset

Rinnakkaisskaalaus voi vähentää aikaa, jonka pyynnöt viettävät jonossa huippukuormituksen aikana.

Perustestin tulosten perusteella kävi ilmi, että latauspyyntöjen tilanne on osittain parantunut. Rinnakkaisskaalaus ei kuitenkaan yksinään ratkaissut kaikkia samanaikaisuusongelmia.

Tämä johtuu rajoituksista, jotka koskevat kyselytyyppejä, jotka voivat käyttää rinnakkaisskaalausta. Tekijöillä on esimerkiksi monia taulukoita, joissa on lomitettuja lajitteluavaimia, ja suurin osa työmäärästämme on kirjoittamista.

Vaikka rinnakkaisskaalaus ei ole yleinen ratkaisu WLM:n määrittämiseen, tämän ominaisuuden käyttäminen on yksinkertaista ja suoraviivaista.

Siksi kirjoittaja suosittelee sen käyttöä WLM-jonoissasi. Aloita yhdestä rinnakkaisklusterista ja seuraa huippukuormitusta konsolin kautta selvittääksesi, ovatko uudet klusterit täysin käytössä.

Kun AWS lisää tuen lisäkyselytyypeille ja -taulukoille, rinnakkaisskaalauksen pitäisi vähitellen muuttua tehokkaammaksi.

Kommentti Daniyar Belkhodzhaevilta, Skyengin tietoinsinööriltä

Me Skyengissä huomasimme myös heti esiin nousevan rinnakkaisskaalauksen mahdollisuuden.
Toimivuus on erittäin houkutteleva, varsinkin kun otetaan huomioon, että AWS arvioi, että useimpien käyttäjien ei tarvitse edes maksaa siitä ylimääräistä.

Sattui niin, että huhtikuun puolivälissä saimme Redshift-klusteriin epätavallisen paljon pyyntöjä. Tänä aikana turvauduimme usein Concurrency Scalingiin; joskus ylimääräinen klusteri toimi 24 tuntia vuorokaudessa ilman taukoa.

Tämä mahdollisti ellei ongelman ratkaisemisen kokonaan jonoilla, niin ainakin tilanteen hyväksymisen.

Havaintomme ovat suurelta osin yhtenevät intermix.io:n kavereiden vaikutelmien kanssa.

Huomasimme myös, että vaikka jonossa oli pyyntöjä, kaikkia pyyntöjä ei välitetty välittömästi rinnakkaisklusteriin. Ilmeisesti näin tapahtuu, koska rinnakkaisklusterin käynnistyminen vie vielä aikaa. Tästä johtuen lyhytaikaisten ruuhkahuippujen aikana meillä on edelleen pieniä jonoja ja vastaavilla hälytyksillä on aikaa laukea.

Päästyämme eroon epänormaalista kuormituksesta huhtikuussa, siirryimme AWS:n odotusten mukaisesti satunnaiseen käyttöön - vapaan normin sisällä.
Voit seurata rinnakkaisskaalauskustannuksiasi AWS Cost Explorerissa. Sinun on valittava Service - Redshift, Usage Type - CS, esimerkiksi USW2-CS:dc2.large.

Voit lukea lisää hinnoista venäjäksi täällä.

Lähde: will.com

Lisää kommentti