Zephyrnet-logotyp

Kör Trino-frågor 2.7 gånger snabbare med Amazon EMR 6.15.0 | Amazon webbtjänster

Datum:

Trill är en distribuerad SQL-frågemotor med öppen källkod designad för interaktiva analytiska arbetsbelastningar. På AWS kan du köra Trino på Amazon EMR, där du har flexibiliteten att köra din föredragna version av öppen källkod Trino på Amazon Elastic Compute Cloud (Amazon EC2)-instanser som du hanterar, eller på Amazonas Athena för en serverlös upplevelse. När du använder Trino på Amazon EMR eller Athena får du de senaste innovationerna inom öppen källkodsgemenskap tillsammans med proprietära, AWS-utvecklade optimeringar.

Med start från Amazon EMR 6.8.0 och Athena-motorversion 2 har AWS utvecklat frågeplan och motorbeteendeoptimeringar som förbättrar frågeprestanda på Trino. I det här inlägget jämför vi Amazon EMR 6.15.0 med öppen källkod Trino 426 och visar att TPC-DS-frågor körde upp till 2.7 gånger snabbare på Amazon EMR 6.15.0 Trino 426 jämfört med öppen källkod Trino 426. Senare förklarar vi några av de AWS-utvecklade prestandaoptimeringarna som bidrar till dessa resultat.

Benchmark-inställning

I våra tester använde vi 3 TB-dataset lagrat i Amazon S3 i komprimerat parkettformat och metadata för databaser och tabeller lagras i AWS-lim Datakatalog. Detta riktmärke använder omodifierat TPC-DS-dataschema och tabellrelationer. Faktatabeller är uppdelade i datumkolumnen och innehöll 200-2100 partitioner. Tabell- och kolumnstatistik fanns inte för någon av tabellerna. Vi använde TPC-DS-frågor från Trino med öppen källkod Githubförvaret utan modifiering. Benchmark-frågor kördes sekventiellt på två olika Amazon EMR 6.15.0-kluster: ett med Amazon EMR Trino 426 och det andra med öppen källkod Trino 426. Båda klustren använde 1 r5.4xlarge-koordinator och 20 r5.4xlarge-arbetarinstanser.

Resultat observerade

Våra riktmärken visar genomgående bättre prestanda med Trino på Amazon EMR 6.15.0 jämfört med öppen källkod Trino. Den totala frågekörtiden för Trino på Amazon EMR var 2.7 gånger snabbare jämfört med öppen källkod. Följande diagram visar prestandaförbättringar mätt med den totala frågekörtiden (i sekunder) för benchmarkfrågorna.

Många av TPC-DS-frågorna visade prestandavinster över fem gånger snabbare jämfört med Trino med öppen källkod. Vissa frågor visade ännu bättre prestanda, som fråga 72 som förbättrades med 160 gånger. Följande diagram visar de 10 bästa TPC-DS-frågorna med den största förbättringen i körtid. För en kortfattad representation och för att undvika skevhet i prestandaförbättringar i grafen har vi uteslutit q72.

Prestandaförbättringar

Nu när vi förstår prestandavinsterna med Trino på Amazon EMR, låt oss gräva djupare in i några av de viktigaste innovationerna som utvecklats av AWS-teknik som bidrar till dessa förbättringar.

Att välja en bättre kopplingsordning och kopplingstyp är avgörande för bättre frågeprestanda eftersom det kan påverka hur mycket data som läses från en viss tabell, hur mycket data som överförs till mellanstadierna genom nätverket och hur mycket minne som behövs för att bygga upp en hashtabell för att underlätta en join. Beslut om algoritm för sammanfogning och sammanfogning är vanligtvis en funktion som utförs av kostnadsbaserade optimerare, som använder statistik för att förbättra frågeplaner genom att bestämma hur tabeller och underfrågor sammanfogas.

Tabellstatistik är dock ofta inte tillgänglig, inaktuell eller för dyr att samla in på stora tabeller. När statistik inte är tillgänglig använder Amazon EMR och Athena S3-filmetadata för att optimera frågeplaner. S3-filmetadata används för att sluta sig till små underfrågor och tabeller i frågan samtidigt som man bestämmer sammanfogningsordningen eller sammanfogningstypen. Tänk till exempel på följande fråga:

SELECT ss_promo_sk FROM store_sales ss, store_returns sr, call_center cc WHERE 
ss.ss_cdemo_sk = sr.sr_cdemo_sk AND ss.ss_customer_sk = cc.cc_call_center_sk 
AND cc_sq_ft > 0

Den syntaktiska sammanfogningsordningen är store_sales förenar store_returns förenar call_center. Med Amazon EMR-anslutningstyp och regler för optimering av orderval bestäms den optimala sammanfogningsordningen även om dessa tabeller inte har statistik. För den föregående frågan if call_center anses vara en liten tabell efter att ha uppskattat den ungefärliga storleken genom S3-filmetadata, kommer EMR:s anslutningsoptimeringsregler att gå med store_sales med call_center först och konvertera joinen till en broadcast join, påskynda frågan och minska minnesförbrukningen. Join-omordning minimerar den mellanliggande resultatstorleken, vilket bidrar till att ytterligare minska den totala frågekörningen.

Med Amazon EMR 6.10.0 och senare är S3-filmetadatabaserade kopplingsoptimeringar aktiverade som standard. Om du använder Amazon EMR 6.8.0 eller 6.9.0 kan du aktivera dessa optimeringar genom att ställa in sessionsegenskaperna från Trino-klienter eller lägga till följande egenskaper till trino-config-klassificeringen när du skapar ditt kluster. Hänvisa till Konfigurera applikationer för information om hur man åsidosätter standardkonfigurationerna för ett program.

Konfiguration för val av anslutningstyp:

session property: rule_based_join_type_selection=true
config property: rule-based-join-type-selection=true

Konfiguration för Join-ombeställning:

session property: rule_based_join_reorder=true
config property: rule-based-join-reorder=true

Slutsats

Med Amazon EMR 6.8.0 och senare kan du köra frågor på Trino betydligt snabbare än Trino med öppen källkod. Som visas i det här blogginlägget visade vårt TPC-DS-riktmärke en 2.7 gånger förbättring av den totala frågekörtiden med Trino på Amazon EMR 6.15.0. Optimeringarna som diskuteras i det här inlägget, och många andra, är också tillgängliga när du kör Trino-frågor på Athena där liknande prestandaförbättringar observeras. För att lära dig mer, se Kör frågor 3 gånger snabbare med upp till 70 % kostnadsbesparingar på den senaste Amazon Athena-motorn.

I vårt uppdrag att förnya på uppdrag av kunder släpper Amazon EMR och Athena ofta prestanda- och tillförlitlighetsförbättringar på sina senaste versioner. Kolla Amazon EMR och Amazonas Athena släppsidor för att lära dig om nya funktioner och förbättringar.


Om författarna

Bhargavi Sagi är en mjukvaruutvecklingsingenjör på Amazon Athena. Hon började på AWS 2020 och har arbetat med olika områden av Amazon EMR och Athena motor V3, inklusive motoruppgradering, motortillförlitlighet och motorprestanda.

Sushil Kumar Shivashankar är ingenjörschef för EMR Trino och Athena Query Engine-teamet. Han har fokuserat på big data analytics-området sedan 2014.

plats_img

VC Café

LifeSciVC

Senaste intelligens

VC Café

LifeSciVC

plats_img