Zephyrnet Logosu

Amazon EMR 2.7 ile Trino sorgularını 6.15.0 kat daha hızlı çalıştırın | Amazon Web Hizmetleri

Tarih:

Trino etkileşimli analitik iş yükleri için tasarlanmış açık kaynaklı, dağıtılmış bir SQL sorgu motorudur. AWS'de Trino'yu çalıştırabilirsiniz Amazon EMR'siaçık kaynak Trino'nun tercih ettiğiniz sürümünü çalıştırma esnekliğine sahip olduğunuz yer Amazon Elastik Bilgi İşlem Bulutu Yönettiğiniz veya üzerinde (Amazon EC2) bulut sunucuları Amazon Atina sunucusuz bir deneyim için. Trino'yu Amazon EMR veya Athena'da kullandığınızda, en son açık kaynak topluluğu yeniliklerinin yanı sıra AWS tarafından geliştirilen özel optimizasyonlara da sahip olursunuz.

AWS, Amazon EMR 6.8.0 ve Athena motor sürüm 2'den başlayarak Trino'da sorgu performansını artıran sorgu planı ve motor davranışı optimizasyonları geliştirmektedir. Bu yazıda Amazon EMR 6.15.0'ı açık kaynak Trino 426 ile karşılaştırıyoruz ve TPC-DS sorgularının Amazon EMR 2.7 Trino 6.15.0'da buna kıyasla 426 kat daha hızlı çalıştığını gösteriyoruz açık kaynak Trino 426. Daha sonra, bu sonuçlara katkıda bulunan, AWS tarafından geliştirilen performans optimizasyonlarından birkaçını açıklayacağız.

Karşılaştırma kurulumu

Testlerimizde Amazon S3'te sıkıştırılmış Parquet formatında depolanan 3 TB veri kümesini kullandık ve veritabanları ve tablolara ilişkin meta veriler, Amazon SXNUMX'te depolandı. AWS Tutkal Veri Kataloğu. Bu kıyaslama, değiştirilmemiş TPC-DS veri şemasını ve tablo ilişkilerini kullanır. Gerçek tabloları tarih sütununda bölümlendirilmiştir ve 200-2100 bölüm içerir. Tabloların hiçbirinde tablo ve sütun istatistikleri mevcut değildi. Açık kaynak Trino'nun TPC-DS sorgularını kullandık Github havuzu değişiklik yapılmadan. Karşılaştırma sorguları iki farklı Amazon EMR 6.15.0 kümesinde sırayla çalıştırıldı: biri Amazon EMR Trino 426 ve diğeri açık kaynak Trino 426 ile. Her iki kümede de 1 r5.4xlarge koordinatörü ve 20 r5.4xlarge çalışan örneği kullanıldı.

Gözlemlenen sonuçlar

Karşılaştırmalarımız, açık kaynak Trino'ya kıyasla Amazon EMR 6.15.0'da Trino'nun sürekli olarak daha iyi performans gösterdiğini gösteriyor. Trino'nun Amazon EMR'deki toplam sorgu çalışma süresi, açık kaynağa kıyasla 2.7 kat daha hızlıydı. Aşağıdaki grafik, karşılaştırma sorguları için toplam sorgu çalışma süresine (saniye cinsinden) göre ölçülen performans iyileştirmelerini gösterir.

TPC-DS sorgularının çoğu, açık kaynak Trino'ya kıyasla beş kat daha hızlı performans artışı gösterdi. 72 kat iyileşen sorgu 160 gibi bazı sorgular daha da yüksek performans gösterdi. Aşağıdaki grafik, çalışma zamanında en büyük iyileşmeyi sağlayan ilk 10 TPC-DS sorgusunu göstermektedir. Kısa ve öz bir gösterim sağlamak ve grafikte performans iyileştirmelerinin çarpıklığını önlemek için q72'yi hariç tuttuk.

Performans iyileştirmeleri

Artık Trino'nun Amazon EMR'deki performans artışlarını anladığımıza göre, AWS mühendisliği tarafından geliştirilen ve bu iyileştirmelere katkıda bulunan bazı önemli yenilikleri daha derinlemesine inceleyelim.

Daha iyi bir birleştirme sırası ve birleştirme türü seçmek, daha iyi sorgu performansı açısından kritik öneme sahiptir çünkü belirli bir tablodan ne kadar veri okunacağını, ağ üzerinden ara aşamalara ne kadar veri aktarılacağını ve oluşturmak için ne kadar belleğe ihtiyaç duyulacağını etkileyebilir. birleştirmeyi kolaylaştırmak için bir karma tablosu. Birleştirme sırası ve birleştirme algoritması kararları, genellikle tabloların ve alt sorguların nasıl birleştirileceğine karar vererek sorgu planlarını iyileştirmek için istatistikleri kullanan, maliyete dayalı optimize ediciler tarafından gerçekleştirilen bir işlevdir.

Ancak tablo istatistikleri çoğu zaman mevcut değildir, güncelliğini kaybetmiştir veya büyük tablolarda toplanması çok pahalıdır. İstatistikler mevcut olmadığında Amazon EMR ve Athena, sorgu planlarını optimize etmek için S3 dosyası meta verilerini kullanır. S3 dosyası meta verileri, birleştirme sırasını veya birleştirme türünü belirlerken sorgudaki küçük alt sorguları ve tabloları anlamak için kullanılır. Örneğin aşağıdaki sorguyu göz önünde bulundurun:

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

Sözdizimsel birleştirme sırası şöyledir store_sales katıldı store_returns katıldı call_center. Amazon EMR birleştirme türü ve sipariş seçimi optimizasyon kuralları ile bu tablolarda istatistik olmasa bile en uygun birleştirme sırası belirlenir. Önceki sorgu için eğer call_center S3 dosya meta verileri aracılığıyla yaklaşık boyut tahmin edildikten sonra küçük bir tablo olarak kabul edilirse, EMR'nin birleştirme optimizasyon kuralları birleştirilecektir store_sales ile call_center önce birleştirmeyi yayın birleştirmeye dönüştürün, sorguyu hızlandırın ve bellek tüketimini azaltın. Birleştirmenin yeniden sıralanması, ara sonuç boyutunu en aza indirir ve bu da genel sorgu çalışma süresinin daha da azaltılmasına yardımcı olur.

Amazon EMR 6.10.0 ve üzeri sürümlerde S3 dosyası meta verisine dayalı birleştirme optimizasyonları varsayılan olarak açıktır. Amazon EMR 6.8.0 veya 6.9.0 kullanıyorsanız Trino istemcilerinden oturum özelliklerini ayarlayarak veya kümenizi oluştururken aşağıdaki özellikleri trino-config sınıflandırmasına ekleyerek bu optimizasyonları açabilirsiniz. Bakınız Uygulamaları yapılandırma Bir uygulamanın varsayılan yapılandırmalarının nasıl geçersiz kılınacağına ilişkin ayrıntılar için.

Birleştirme türü seçimi için yapılandırma:

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

Birleştirme yeniden sıralaması için yapılandırma:

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

Sonuç

Amazon EMR 6.8.0 ve sonraki sürümleriyle Trino'da sorguları açık kaynak Trino'ya göre çok daha hızlı çalıştırabilirsiniz. Bu blog yazısında gösterildiği gibi, TPC-DS karşılaştırmamız Amazon EMR 2.7'da Trino ile toplam sorgu çalışma süresinde 6.15.0 kat iyileşme gösterdi. Bu yazıda ve diğer birçok yazıda tartışılan optimizasyonlar, benzer performans iyileştirmelerinin gözlemlendiği Athena'da Trino sorguları çalıştırılırken de kullanılabilir. Daha fazla bilgi edinmek için bkz. En yeni Amazon Athena motorunda %3'e varan maliyet tasarrufuyla sorguları 70 kat daha hızlı çalıştırın.

Amazon EMR ve Athena, müşterilerimiz adına yenilik yapma misyonumuz kapsamında, en son sürümlerinde sıklıkla performans ve güvenilirlik iyileştirmeleri yayınlar. Kontrol edin Amazon EMR'si ve Amazon Atina Yeni özellikler ve geliştirmeler hakkında bilgi edinmek için sayfaları yayınlayın.


Yazarlar Hakkında

Bhargavi Sagi Amazon Athena'da Yazılım Geliştirme Mühendisidir. 2020 yılında AWS'ye katıldı ve motor yükseltmesi, motor güvenilirliği ve motor performansı dahil olmak üzere Amazon EMR ve Athena Engine V3'ün farklı alanları üzerinde çalışıyor.

Sushil Kumar Shivashankar EMR Trino ve Athena Query Engine ekibinin Mühendislik Müdürüdür. 2014'ten bu yana büyük veri analitiği alanına odaklanıyor.

spot_img

En Son İstihbarat

spot_img