شعار زيفيرنت

قم بتشغيل استعلامات Trino بشكل أسرع 2.7 مرة مع Amazon EMR 6.15.0 | خدمات الويب الأمازون

التاريخ:

ترينو هو محرك استعلام SQL موزع مفتوح المصدر مصمم لأحمال العمل التحليلية التفاعلية. على AWS، يمكنك تشغيل Trino أمازون EMR، حيث تتمتع بالمرونة اللازمة لتشغيل الإصدار المفضل لديك من Trino مفتوح المصدر الأمازون الحوسبة المرنة السحابية (Amazon EC2) المثيلات التي تديرها، أو قيد التشغيل أمازون أثينا لتجربة بدون خادم. عند استخدام Trino على Amazon EMR أو Athena، فإنك تحصل على أحدث ابتكارات مجتمع مفتوح المصدر إلى جانب التحسينات المملوكة لشركة AWS.

بدءًا من Amazon EMR 6.8.0 والإصدار 2 من محرك Athena، قامت AWS بتطوير خطة الاستعلام وتحسينات سلوك المحرك التي تعمل على تحسين أداء الاستعلام على Trino. في هذا المنشور، نقارن Amazon EMR 6.15.0 مع Trino 426 مفتوح المصدر ونظهر أن استعلامات TPC-DS تعمل بشكل أسرع بما يصل إلى 2.7 مرة على Amazon EMR 6.15.0 Trino 426 مقارنة بـ المصدر المفتوح ترينو 426. سنشرح لاحقًا بعضًا من تحسينات الأداء التي طورتها AWS والتي تساهم في تحقيق هذه النتائج.

إعداد المعيار

في الاختبار الذي أجريناه، استخدمنا مجموعة بيانات تبلغ 3 تيرابايت مخزنة في Amazon S3 بتنسيق Parquet مضغوط ويتم تخزين البيانات التعريفية لقواعد البيانات والجداول في غراء AWS كتالوج البيانات. يستخدم هذا المعيار مخطط بيانات TPC-DS غير المعدل وعلاقات الجدول. يتم تقسيم جداول الحقائق على عمود التاريخ وتحتوي على 200-2100 قسم. لم تكن إحصائيات الجدول والعمود موجودة لأي من الجداول. استخدمنا استعلامات TPC-DS من Trino مفتوح المصدر جيثب مستودع بدون تعديل. تم تشغيل الاستعلامات المعيارية بشكل تسلسلي على مجموعتين مختلفتين من Amazon EMR 6.15.0: واحدة مع Amazon EMR Trino 426 والأخرى مع Trino 426 مفتوح المصدر. استخدمت كلتا المجموعتين منسق r1xlarge واحد و5.4 مثيل عامل r20xlarge.

النتائج الملاحظة

تُظهر معاييرنا أداءً أفضل باستمرار مع Trino على Amazon EMR 6.15.0 مقارنةً بـ Trino مفتوح المصدر. كان إجمالي وقت تشغيل استعلام Trino على Amazon EMR أسرع بمقدار 2.7 مرة مقارنة بالمصدر المفتوح. يعرض الرسم البياني التالي تحسينات الأداء التي تم قياسها بواسطة إجمالي وقت تشغيل الاستعلام (بالثواني) للاستعلامات المعيارية.

أظهرت العديد من استعلامات TPC-DS مكاسب في الأداء أسرع بخمس مرات مقارنة باستعلامات Trino مفتوحة المصدر. وأظهرت بعض الاستعلامات أداءً أفضل، مثل الاستعلام 72 الذي تحسن بمقدار 160 مرة. يعرض الرسم البياني التالي أهم 10 استعلامات TPC-DS مع أكبر تحسن في وقت التشغيل. للحصول على تمثيل موجز وتجنب انحراف تحسينات الأداء في الرسم البياني، قمنا باستبعاد q72.

تحسينات الأداء

الآن بعد أن فهمنا مكاسب الأداء مع Trino على Amazon EMR، فلنتعمق أكثر في بعض الابتكارات الرئيسية التي طورتها هندسة AWS والتي تساهم في هذه التحسينات.

يعد اختيار ترتيب صلة أفضل ونوع صلة أمرًا بالغ الأهمية لتحسين أداء الاستعلام لأنه يمكن أن يؤثر على مقدار البيانات التي تتم قراءتها من جدول معين، وكم البيانات التي يتم نقلها إلى المراحل المتوسطة عبر الشبكة، ومقدار الذاكرة المطلوبة للإنشاء جدول التجزئة لتسهيل الانضمام. عادةً ما تكون قرارات الانضمام وخوارزمية الانضمام وظيفة يتم تنفيذها بواسطة أدوات التحسين المستندة إلى التكلفة، والتي تستخدم الإحصائيات لتحسين خطط الاستعلام من خلال تحديد كيفية ضم الجداول والاستعلامات الفرعية.

ومع ذلك، غالبًا ما تكون إحصائيات الجدول غير متوفرة أو قديمة أو باهظة الثمن بحيث لا يمكن جمعها على جداول كبيرة. عندما لا تتوفر الإحصائيات، يستخدم Amazon EMR وAthena بيانات تعريف ملف S3 لتحسين خطط الاستعلام. يتم استخدام البيانات التعريفية لملف S3 لاستنتاج الاستعلامات الفرعية الصغيرة والجداول في الاستعلام أثناء تحديد ترتيب الصلة أو نوع الصلة. على سبيل المثال، فكر في الاستعلام التالي:

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

ترتيب الانضمام النحوي هو store_sales ينضم store_returns ينضم call_center. باستخدام قواعد تحسين نوع الانضمام واختيار الطلب في Amazon EMR، يتم تحديد ترتيب الانضمام الأمثل حتى لو لم تكن هذه الجداول تحتوي على إحصائيات. بالنسبة للاستعلام السابق إذا call_center يعتبر جدولًا صغيرًا بعد تقدير الحجم التقريبي من خلال بيانات تعريف ملف S3، ستنضم قواعد تحسين الانضمام الخاصة بـ EMR store_sales مع call_center أولاً وقم بتحويل الصلة إلى صلة بث، مما يؤدي إلى تسريع الاستعلام وتقليل استهلاك الذاكرة. تعمل إعادة ترتيب الانضمام على تقليل حجم النتيجة المتوسطة، مما يساعد على تقليل وقت تشغيل الاستعلام الإجمالي بشكل أكبر.

باستخدام Amazon EMR 6.10.0 والإصدارات الأحدث، يتم تشغيل تحسينات الانضمام المستندة إلى بيانات تعريف الملفات S3 بشكل افتراضي. إذا كنت تستخدم Amazon EMR 6.8.0 أو 6.9.0، فيمكنك تشغيل هذه التحسينات عن طريق تعيين خصائص الجلسة من عملاء Trino أو إضافة الخصائص التالية إلى تصنيف trino-config عند إنشاء مجموعتك. تشير إلى تكوين التطبيقات للحصول على تفاصيل حول كيفية تجاوز التكوينات الافتراضية لأحد التطبيقات.

التكوين لاختيار نوع الانضمام:

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

التكوين لإعادة ترتيب الانضمام:

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

وفي الختام

باستخدام Amazon EMR 6.8.0 والإصدارات الأحدث، يمكنك تشغيل الاستعلامات على Trino بشكل أسرع بكثير من Trino مفتوح المصدر. كما هو موضح في منشور المدونة هذا، أظهر معيار TPC-DS الخاص بنا تحسنًا بمقدار 2.7 مرة في إجمالي وقت تشغيل الاستعلام مع Trino على Amazon EMR 6.15.0. التحسينات التي تمت مناقشتها في هذا المنشور، والعديد من التحسينات الأخرى، متاحة أيضًا عند تشغيل استعلامات Trino على Athena حيث يتم ملاحظة تحسينات مماثلة في الأداء. لمعرفة المزيد، راجع قم بتشغيل الاستعلامات بشكل أسرع 3 مرات مع توفير في التكلفة يصل إلى 70% على أحدث محرك Amazon Athena.

في إطار مهمتنا المتمثلة في الابتكار نيابة عن العملاء، تقوم Amazon EMR وAthena بشكل متكرر بإصدار تحسينات في الأداء والموثوقية على أحدث إصداراتهما. افحص ال أمازون EMR و أمازون أثينا صفحات الإصدار للتعرف على الميزات والتحسينات الجديدة.


حول المؤلف

بهارجافي ساجي هو مهندس تطوير البرمجيات في أمازون أثينا. انضمت إلى AWS في عام 2020 وعملت في مجالات مختلفة من Amazon EMR وAthena Engine V3، بما في ذلك ترقية المحرك وموثوقية المحرك وأداء المحرك.

سوشيل كومار شيفاشانكار هو المدير الهندسي لفريق EMR Trino وAthena Query Engine. لقد كان يركز على مجال تحليل البيانات الضخمة منذ عام 2014.

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة