[PRESTO] - Concepts

Tổng quan

Để hiểu Presto trước tiên bạn phải hiểu các thuật ngữ và khái niệm được sử dụng trong toàn bộ tài liệu Presto.

Mặc dù rất dễ hiểu các câu lệnh và truy vấn, nhưng với tư cách là người dùng cuối, bạn nên làm quen với các khái niệm như các giai đoạn và phân tách để tận dụng tối đa Presto để thực hiện các truy vấn hiệu quả. Là quản trị viên Presto hoặc người đóng góp Presto, bạn nên hiểu cách khái niệm giai đoạn của Presto Quảng cáo cho các tác vụ và cách các tác vụ chứa một bộ trình điều khiển xử lý dữ liệu.

Phần này cung cấp một định nghĩa vững chắc cho các khái niệm cốt lõi được tham chiếu trong suốt Presto và các phần này được sắp xếp từ tổng quát nhất đến cụ thể nhất.

Các loại máy chủ

Có hai loại máy chủ Presto: điều phối viên (coordinators) và công nhân (workers). Phần sau đây giải thích sự khác biệt giữa hai loại.

Điều phối viên

Điều phối viên Presto là máy chủ chịu trách nhiệm phân tích cú pháp các câu lệnh, lập kế hoạch truy vấn và quản lý các nút worker Presto. Nó là bộ não của bộ cài đặt Presto và cũng là nút mà máy khách kết nối để gửi các câu lệnh để thực thi. Mỗi cài đặt Presto phải có một điều phối viên Presto cùng với một hoặc nhiều nhân viên Presto. Đối với mục đích phát triển hoặc thử nghiệm, một phiên bản Presto có thể được cấu hình để thực hiện cả hai vai trò.

Điều phối viên theo dõi hoạt động trên mỗi công nhân và điều phối việc thực hiện truy vấn. Điều phối viên tạo ra một mô hình logic của một truy vấn bao gồm một loạt các giai đoạn sau đó được dịch thành một chuỗi các nhiệm vụ được kết nối đang chạy trên một cụm công nhân Presto.

Các điều phối viên giao tiếp với công nhân và khách hàng bằng API REST.

Công nhân

Một nhân viên Presto là một máy chủ trong bản cài đặt Presto chịu trách nhiệm thực thi các tác vụ và xử lý dữ liệu. Các nút công nhân lấy dữ liệu từ các đầu nối và trao đổi dữ liệu trung gian với nhau. Điều phối viên chịu trách nhiệm lấy kết quả từ các công nhân và trả lại kết quả cuối cùng cho khách hàng.

Khi một quá trình công nhân Presto khởi động, nó sẽ tự quảng cáo đến máy chủ khám phá trong bộ điều phối, điều này làm cho nó có sẵn cho điều phối viên Presto để thực thi nhiệm vụ.

Công nhân giao tiếp với các công nhân khác và điều phối viên Presto bằng API REST.

Data Sources

Trong suốt tài liệu này, bạn sẽ đọc các thuật ngữ như trình kết nối, danh mục, lược đồ và bảng. Những khái niệm cơ bản này bao gồm mô hình Presto của một nguồn dữ liệu cụ thể và được mô tả trong phần sau.

Connector

Trình kết nối điều chỉnh Presto với nguồn dữ liệu như Hive hoặc cơ sở dữ liệu quan hệ. Bạn có thể nghĩ về một trình kết nối giống như cách bạn nghĩ về trình điều khiển cho cơ sở dữ liệu. Đây là một triển khai của Presto lề SPI cho phép Presto tương tác với tài nguyên bằng API tiêu chuẩn.

Presto chứa một số trình kết nối tích hợp: trình kết nối cho JMX, trình kết nối Hệ thống cung cấp quyền truy cập vào các bảng hệ thống tích hợp, trình kết nối Hive và trình kết nối TPCH được thiết kế để phục vụ dữ liệu điểm chuẩn TPC-H. Nhiều nhà phát triển bên thứ ba đã đóng góp các trình kết nối để Presto có thể truy cập dữ liệu trong nhiều nguồn dữ liệu khác nhau.

Mỗi danh mục được liên kết với một kết nối cụ thể. Nếu bạn kiểm tra tệp cấu hình danh mục, bạn sẽ thấy rằng mỗi tệp chứa một trình kết nối thuộc tính bắt buộc.name được trình quản lý danh mục sử dụng để tạo trình kết nối cho một danh mục cụ thể. Có thể có nhiều hơn một danh mục sử dụng cùng một trình kết nối để truy cập hai trường hợp khác nhau của một cơ sở dữ liệu tương tự. Ví dụ: nếu bạn có hai cụm Hive, bạn có thể định cấu hình hai danh mục trong một cụm Presto duy nhất sử dụng trình kết nối Hive, cho phép bạn truy vấn dữ liệu từ cả hai cụm Hive (ngay cả trong cùng một truy vấn SQL).

Catalog

Một danh mục Presto chứa các lược đồ và tham chiếu nguồn dữ liệu thông qua một trình kết nối. Ví dụ: bạn có thể định cấu hình danh mục JMX để cung cấp quyền truy cập vào thông tin JMX thông qua trình kết nối JMX. Khi bạn chạy một câu lệnh SQL trong Presto, bạn đang chạy nó với một hoặc nhiều danh mục. Các ví dụ khác về danh mục bao gồm danh mục Hive để kết nối với nguồn dữ liệu Hive.

Khi đánh địa chỉ một bảng trong Presto, tên bảng đủ điều kiện luôn được bắt nguồn từ một danh mục. Ví dụ, tên bảng đủ điều kiện của hive.test_data.test sẽ đề cập đến bảng thử nghiệm trong lược đồ test_data trong danh mục tổ ong.

Danh mục được định nghĩa trong các tệp thuộc tính được lưu trữ trong thư mục cấu hình Presto.

Schema

Các lược đồ là một cách để tổ chức các bảng. Cùng với nhau, một danh mục và lược đồ xác định một tập hợp các bảng có thể được truy vấn. Khi truy cập Hive hoặc cơ sở dữ liệu quan hệ như MySQL với Presto, một lược đồ sẽ dịch sang cùng một khái niệm trong cơ sở dữ liệu đích. Các loại trình kết nối khác có thể chọn tổ chức các bảng thành các lược đồ theo cách có ý nghĩa đối với nguồn dữ liệu cơ bản.

Table

Bảng là một tập hợp các hàng không có thứ tự được sắp xếp thành các cột được đặt tên với các loại. Điều này giống như trong bất kỳ cơ sở dữ liệu quan hệ. Ánh xạ từ dữ liệu nguồn tới các bảng được xác định bởi trình kết nối.

Mô hình thực thi truy vấn

Presto thực thi các câu lệnh SQL và biến các câu lệnh này thành các truy vấn được thực thi trên một cụm điều phối viên và công nhân phân tán.

Statement

Presto thực thi các câu lệnh SQL tương thích ANSI. Khi tài liệu Presto đề cập đến một câu lệnh, nó đề cập đến các câu lệnh như được định nghĩa trong tiêu chuẩn SQL ANSI bao gồm các mệnh đề, biểu thức và các vị từ.

Một số độc giả có thể tò mò tại sao phần này liệt kê các khái niệm riêng biệt cho các câu lệnh và truy vấn. Điều này là cần thiết bởi vì, trong Presto, các câu lệnh chỉ đơn giản đề cập đến biểu diễn văn bản của câu lệnh SQL. Khi một câu lệnh được thực thi, Presto tạo một truy vấn cùng với một kế hoạch truy vấn được phân phối trên một loạt các nhân viên Presto.

Query

Khi Presto phân tích cú pháp một câu lệnh, nó chuyển đổi nó thành một truy vấn và tạo ra một kế hoạch truy vấn phân tán, sau đó được thực hiện dưới dạng một loạt các giai đoạn được kết nối với nhau chạy trên các nhân viên Presto. Khi bạn truy xuất thông tin về một truy vấn trong Presto, bạn sẽ nhận được một ảnh chụp nhanh của mọi thành phần có liên quan đến việc tạo ra một tập kết quả để đáp ứng với một tuyên bố.

Sự khác biệt giữa một câu lệnh và một truy vấn là đơn giản. Một câu lệnh có thể được coi là văn bản SQL được truyền cho Presto, trong khi truy vấn đề cập đến cấu hình và các thành phần được khởi tạo để thực thi câu lệnh đó. Một truy vấn bao gồm các giai đoạn, tác vụ, phân tách, trình kết nối và các thành phần và nguồn dữ liệu khác làm việc trong buổi hòa nhạc để tạo ra kết quả.

Stage

Khi Presto thực hiện một truy vấn, nó sẽ thực hiện bằng cách chia nhỏ phần thực thi thành một hệ thống phân cấp các giai đoạn. Ví dụ: nếu Presto cần tổng hợp dữ liệu từ một tỷ hàng được lưu trữ trong Hive, thì nó sẽ làm như vậy bằng cách tạo một giai đoạn gốc để tổng hợp đầu ra của một số giai đoạn khác, tất cả được thiết kế để thực hiện các phần khác nhau của kế hoạch truy vấn phân tán.

Hệ thống phân cấp của các giai đoạn bao gồm một truy vấn giống như một cái cây. Mỗi truy vấn có một giai đoạn gốc chịu trách nhiệm tổng hợp đầu ra từ các giai đoạn khác. Các giai đoạn là những gì điều phối viên sử dụng để mô hình hóa một kế hoạch truy vấn phân tán, nhưng các giai đoạn tự don don chạy trên các công nhân của Presto.

Task

Như đã đề cập trong phần trước, các giai đoạn mô hình hóa một phần cụ thể của kế hoạch truy vấn phân tán, nhưng các giai đoạn tự don thực hiện trên các công nhân của Presto. Để hiểu cách thức một giai đoạn được thực thi, bạn sẽ cần phải hiểu rằng một giai đoạn được triển khai dưới dạng một loạt các nhiệm vụ được phân phối trên một mạng lưới các công nhân Presto.

Nhiệm vụ là con ngựa làm việc của người Viking trong kiến ​​trúc Presto khi một kế hoạch truy vấn phân tán được giải mã thành một chuỗi các giai đoạn sau đó được dịch thành các nhiệm vụ sau đó thực hiện hoặc xử lý các phân tách. Một tác vụ Presto có đầu vào và đầu ra, và giống như một giai đoạn có thể được thực thi song song bởi một loạt các tác vụ, một tác vụ được thực thi song song với một loạt các trình điều khiển.

Split

Nhiệm vụ hoạt động trên các phần tách là các phần của tập dữ liệu lớn hơn. Các giai đoạn ở mức thấp nhất của kế hoạch truy vấn phân tán truy xuất dữ liệu thông qua các phân tách từ trình kết nối và các giai đoạn trung gian ở cấp cao hơn của kế hoạch truy vấn phân tán truy xuất dữ liệu từ các giai đoạn khác.

Khi Presto đang lên lịch cho một truy vấn, điều phối viên sẽ truy vấn một trình kết nối cho một danh sách tất cả các phần tách có sẵn cho một bảng. Điều phối viên theo dõi máy nào đang chạy nhiệm vụ nào và phân chia nào đang được xử lý bởi nhiệm vụ nào.

Driver

Nhiệm vụ chứa một hoặc nhiều trình điều khiển song song. Trình điều khiển hành động dựa trên dữ liệu và kết hợp các toán tử để tạo ra đầu ra sau đó được tổng hợp bởi một tác vụ và sau đó được chuyển đến một tác vụ khác trong giai đoạn khác. Trình điều khiển là một chuỗi các trường hợp toán tử hoặc bạn có thể nghĩ về trình điều khiển như một tập hợp các toán tử vật lý trong bộ nhớ. Đây là mức độ song song thấp nhất trong kiến ​​trúc Presto. Một trình điều khiển có một đầu vào và một đầu ra.

Operator

Một toán tử tiêu thụ, biến đổi và tạo ra dữ liệu. Ví dụ, quét bảng lấy dữ liệu từ trình kết nối và tạo dữ liệu có thể được sử dụng bởi các toán tử khác và toán tử lọc tiêu thụ dữ liệu và tạo tập hợp con bằng cách áp dụng một biến vị ngữ trên dữ liệu đầu vào.

Exchange

Trao đổi dữ liệu chuyển giữa các nút Presto cho các giai đoạn khác nhau của truy vấn. Nhiệm vụ tạo dữ liệu vào bộ đệm đầu ra và tiêu thụ dữ liệu từ các tác vụ khác bằng cách sử dụng máy khách trao đổi.

Comments