Logo Zephyrnet

Chạy truy vấn Trino nhanh hơn 2.7 lần với Amazon EMR 6.15.0 | Dịch vụ web của Amazon

Ngày:

Trino là một công cụ truy vấn SQL phân tán mã nguồn mở được thiết kế cho khối lượng công việc phân tích tương tác. Trên AWS, bạn có thể chạy Trino trên Amazon EMR, nơi bạn có thể linh hoạt chạy phiên bản Trino nguồn mở ưa thích của mình trên Đám mây điện toán đàn hồi Amazon (Amazon EC2) các phiên bản mà bạn quản lý hoặc trên amazon Athena để có trải nghiệm không có máy chủ. Khi sử dụng Trino trên Amazon EMR hoặc Athena, bạn sẽ nhận được những cải tiến mới nhất của cộng đồng nguồn mở cùng với các tính năng tối ưu hóa độc quyền do AWS phát triển.

Bắt đầu từ Amazon EMR 6.8.0 và công cụ Athena phiên bản 2, AWS đã phát triển kế hoạch truy vấn và tối ưu hóa hành vi công cụ để cải thiện hiệu suất truy vấn trên Trino. Trong bài đăng này, chúng tôi so sánh Amazon EMR 6.15.0 với Trino 426 nguồn mở và cho thấy rằng các truy vấn TPC-DS chạy nhanh hơn tới 2.7 lần trên Amazon EMR 6.15.0 Trino 426 so với mã nguồn mở Trino 426. Sau đó, chúng tôi sẽ giải thích một số cách tối ưu hóa hiệu suất do AWS phát triển góp phần tạo nên những kết quả này.

thiết lập điểm chuẩn

Trong thử nghiệm, chúng tôi đã sử dụng tập dữ liệu 3 TB được lưu trữ trong Amazon S3 ở định dạng Parquet nén và siêu dữ liệu cho cơ sở dữ liệu cũng như các bảng được lưu trữ trong Keo AWS Danh mục dữ liệu. Điểm chuẩn này sử dụng lược đồ dữ liệu TPC-DS chưa sửa đổi và các mối quan hệ bảng. Các bảng sự kiện được phân vùng trên cột ngày tháng và chứa 200-2100 phân vùng. Thống kê bảng và cột không có mặt cho bất kỳ bảng nào. Chúng tôi đã sử dụng các truy vấn TPC-DS từ Trino nguồn mở Kho lưu trữ Github mà không cần sửa đổi. Các truy vấn điểm chuẩn được chạy tuần tự trên hai cụm Amazon EMR 6.15.0 khác nhau: một cụm có Amazon EMR Trino 426 và cụm còn lại có Trino 426 nguồn mở. Cả hai cụm đều sử dụng 1 điều phối viên r5.4xlarge và 20 phiên bản Worker r5.4xlarge.

Kết quả quan sát được

Điểm chuẩn của chúng tôi cho thấy hiệu suất tốt hơn một cách nhất quán với Trino trên Amazon EMR 6.15.0 so với Trino nguồn mở. Tổng thời gian chạy truy vấn của Trino trên Amazon EMR nhanh hơn 2.7 lần so với nguồn mở. Biểu đồ sau đây cho thấy mức cải thiện hiệu suất được đo bằng tổng thời gian chạy truy vấn (tính bằng giây) cho các truy vấn điểm chuẩn.

Nhiều truy vấn TPC-DS đã chứng minh hiệu suất tăng nhanh hơn gấp 72 lần so với Trino nguồn mở. Một số truy vấn thậm chí còn cho thấy hiệu suất cao hơn, như truy vấn 160 được cải thiện gấp 10 lần. Biểu đồ sau đây hiển thị 72 truy vấn TPC-DS hàng đầu có sự cải thiện lớn nhất về thời gian chạy. Để trình bày ngắn gọn và tránh làm sai lệch các cải tiến hiệu suất trong biểu đồ, chúng tôi đã loại trừ qXNUMX.

Cải tiến hiệu suất

Bây giờ chúng ta đã hiểu mức tăng hiệu suất với Trino trên Amazon EMR, hãy cùng tìm hiểu sâu hơn về một số cải tiến quan trọng do bộ phận kỹ thuật AWS phát triển góp phần vào những cải tiến này.

Việc chọn thứ tự nối và loại nối tốt hơn là rất quan trọng để có hiệu suất truy vấn tốt hơn vì nó có thể ảnh hưởng đến lượng dữ liệu được đọc từ một bảng cụ thể, lượng dữ liệu được truyền đến các giai đoạn trung gian qua mạng và lượng bộ nhớ cần thiết để xây dựng một bảng băm để tạo thuận lợi cho việc tham gia. Thứ tự tham gia và các quyết định thuật toán tham gia thường là một chức năng được thực hiện bởi trình tối ưu hóa dựa trên chi phí, sử dụng số liệu thống kê để cải thiện kế hoạch truy vấn bằng cách quyết định cách nối các bảng và truy vấn phụ.

Tuy nhiên, số liệu thống kê dạng bảng thường không có sẵn, lỗi thời hoặc quá đắt để thu thập trên các bảng lớn. Khi không có số liệu thống kê, Amazon EMR và Athena sử dụng siêu dữ liệu tệp S3 để tối ưu hóa kế hoạch truy vấn. Siêu dữ liệu tệp S3 được sử dụng để suy ra các truy vấn phụ và bảng nhỏ trong truy vấn trong khi xác định thứ tự nối hoặc loại nối. Ví dụ: hãy xem xét truy vấn sau:

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

Thứ tự nối cú pháp là store_sales tham gia store_returns tham gia call_center. Với quy tắc tối ưu hóa lựa chọn thứ tự và loại tham gia của Amazon EMR, thứ tự tham gia tối ưu được xác định ngay cả khi các bảng này không có số liệu thống kê. Đối với truy vấn trước nếu call_center được coi là một bảng nhỏ sau khi ước tính kích thước gần đúng thông qua siêu dữ liệu tệp S3, các quy tắc tối ưu hóa kết nối của EMR sẽ tham gia store_sales với call_center đầu tiên và chuyển đổi kết nối thành kết nối phát sóng, tăng tốc truy vấn và giảm mức tiêu thụ bộ nhớ. Việc sắp xếp lại tham gia sẽ giảm thiểu kích thước kết quả trung gian, giúp giảm hơn nữa thời gian chạy truy vấn tổng thể.

Với Amazon EMR 6.10.0 trở lên, tính năng tối ưu hóa kết nối dựa trên siêu dữ liệu tệp S3 được bật theo mặc định. Nếu bạn đang sử dụng Amazon EMR 6.8.0 hoặc 6.9.0, bạn có thể bật các tối ưu hóa này bằng cách đặt thuộc tính phiên từ máy khách Trino hoặc thêm các thuộc tính sau vào phân loại trino-config khi tạo cụm của bạn. tham khảo Cấu hình ứng dụng để biết chi tiết về cách ghi đè cấu hình mặc định cho một ứng dụng.

Cấu hình để chọn loại Tham gia:

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

Cấu hình để sắp xếp lại Tham gia:

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

Kết luận

Với Amazon EMR 6.8.0 trở lên, bạn có thể chạy truy vấn trên Trino nhanh hơn đáng kể so với Trino nguồn mở. Như được trình bày trong bài đăng trên blog này, điểm chuẩn TPC-DS của chúng tôi đã cho thấy tổng thời gian chạy truy vấn được cải thiện gấp 2.7 lần với Trino trên Amazon EMR 6.15.0. Các tối ưu hóa được thảo luận trong bài đăng này và nhiều tối ưu hóa khác cũng có sẵn khi chạy truy vấn Trino trên Athena nơi nhận thấy các cải tiến hiệu suất tương tự. Để tìm hiểu thêm, hãy tham khảo Chạy truy vấn nhanh hơn gấp 3 lần với mức tiết kiệm chi phí lên tới 70% trên công cụ Amazon Athena mới nhất.

Trong sứ mệnh đổi mới thay mặt cho khách hàng, Amazon EMR và Athena thường xuyên phát hành các cải tiến về hiệu suất và độ tin cậy trên các phiên bản mới nhất của họ. Kiểm tra Amazon EMRamazon Athena trang phát hành để tìm hiểu về các tính năng và cải tiến mới.


Về các tác giả

Bhargavi Sagi là Kỹ sư phát triển phần mềm trên Amazon Athena. Cô gia nhập AWS vào năm 2020 và đang làm việc trên các lĩnh vực khác nhau của Amazon EMR và Athena engine V3, bao gồm nâng cấp động cơ, độ tin cậy của động cơ và hiệu suất động cơ.

Sushil Kumar Shivashankar là Giám đốc Kỹ thuật của nhóm EMR Trino và Athena Query Engine. Anh ấy đã tập trung vào không gian phân tích dữ liệu lớn từ năm 2014.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img