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:
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:
Birleştirme yeniden sıralaması için yapılandırma:
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.
- SEO Destekli İçerik ve Halkla İlişkiler Dağıtımı. Bugün Gücünüzü Artırın.
- PlatoData.Network Dikey Üretken Yapay Zeka. Kendine güç ver. Buradan Erişin.
- PlatoAiStream. Web3 Zekası. Bilgi Genişletildi. Buradan Erişin.
- PlatoESG. karbon, temiz teknoloji, Enerji, Çevre, Güneş, Atık Yönetimi. Buradan Erişin.
- PlatoSağlık. Biyoteknoloji ve Klinik Araştırmalar Zekası. Buradan Erişin.
- Kaynak: https://aws.amazon.com/blogs/big-data/run-trino-queries-2-7-times-faster-with-amazon-emr-6-15-0/