Presto hoặc PrestoDB là gì?
Presto (hoặc PrestoDB) là một công cụ truy vấn SQL phân tán, nguồn mở, được thiết kế từ đầu cho các truy vấn phân tích nhanh dựa trên dữ liệu thuộc bất kỳ quy mô nào. Presto hỗ trợ cả các nguồn phi quan hệ như Hệ thống tệp phân tán Hadoop (HDFS), Amazon S3, Cassandra, MongoDB và HBase và các nguồn dữ liệu quan hệ như MySQL, PostgreSQL, Amazon Redshift, Microsoft SQL Server và Teradata.
Presto có thể truy vấn dữ liệu tại nơi lưu trữ dữ liệu mà không cần di chuyển dữ liệu vào hệ thống phân tích riêng biệt. Việc thực thi truy vấn hoạt động song song trên một kiến trúc dựa trên bộ nhớ thuần túy, với phần lớn các kết quả được trả về trong vòng vài giây. Bạn sẽ thấy Presto được sử dụng bởi nhiều công ty nổi tiếng như Facebook, Airbnb, Netflix, Atlassian và Nasdaq.
Presto có lịch sử như thế nào?
Presto bắt đầu như một dự án tại Facebook, để chạy các truy vấn phân tích tương tác dựa trên kho dữ liệu 300PB, được xây dựng với các cụm lớn dựa trên Hadoop/HDFS. Trước khi xây dựng Presto, Facebook đã sử dụng Apache Hive, được tạo ra và triển khai vào năm 2008, để mang sự quen thuộc của cú pháp SQL vào hệ sinh thái Hadoop. Hive đã có tác động đáng kể đến hệ sinh thái Hadoop để đơn giản hóa các công việc Java MapReduce phức tạp thành các truy vấn giống SQL, đồng thời có thể thực hiện các công việc ở quy mô cao. Tuy nhiên, Hive không được tối ưu hóa cho hiệu suất nhanh cần thiết trong các truy vấn tương tác.
Vào năm 2012, nhóm Cơ sở hạ tầng dữ liệu Facebook đã xây dựng Presto, một hệ thống truy vấn tương tác có thể hoạt động nhanh chóng ở quy mô petabyte. Presto đã được triển khai trên toàn công ty vào mùa xuân năm 2013. Vào tháng 11 năm 2013, Facebook đã mở mã nguồn Presto theo Giấy phép phần mềm Apache và cung cấp cho bất kỳ ai tải xuống trên Github. Ngày nay, Presto đã trở thành một lựa chọn phổ biến để thực hiện các truy vấn tương tác trên Hadoop và có rất nhiều đóng góp từ Facebook cùng các tổ chức khác. Việc triển khai Presto của Facebook được sử dụng bởi hơn một nghìn nhân viên, những người này chạy hơn 30.000 truy vấn, xử lý một petabyte dữ liệu mỗi ngày.
Presto hoạt động như thế nào?
Presto là một hệ thống phân tán chạy trên Hadoop, sử dụng một kiến trúc tương tự như hệ thống quản lý cơ sở dữ liệu xử lý song song hàng loạt (MPP) truyền thống. Presto có một nút điều phối hoạt động đồng bộ với nhiều nút thợ. Người dùng gửi truy vấn SQL của họ đến điều phối viên sử dụng công cụ truy vấn và thực thi tùy chỉnh để phân tích cú pháp, lập kế hoạch và lên lịch cho một kế hoạch truy vấn phân tán trên các nút thợ. Hệ thống này được thiết kế để hỗ trợ ngữ nghĩa ANSI SQL tiêu chuẩn, bao gồm các truy vấn phức tạp, tổng hợp, liên kết, liên kết bên ngoài trái/phải, truy vấn phụ, hàm cửa sổ, số lượng riêng biệt và phần trăm gần đúng.
Sau khi truy vấn được biên dịch, Presto sẽ xử lý yêu cầu thành nhiều giai đoạn trên các nút thợ. Tất cả các quá trình xử lý đều nằm trong bộ nhớ và được chuyển qua mạng giữa các giai đoạn, để tránh mọi chi phí I/O không cần thiết. Thêm nhiều nút thợ hơn sẽ giúp tính song song nhiều hơn và xử lý nhanh hơn.
Để có thể mở rộng cho bất kỳ nguồn dữ liệu nào, Presto được thiết kế với tính trừu tượng lưu trữ để giúp dễ dàng xây dựng các bộ kết nối có thể cắm được. Vì điều này, Presto có nhiều bộ kết nối, bao gồm cả kết nối đến các nguồn phi quan hệ như Hệ thống tệp phân tán Hadoop (HDFS), Amazon S3, Cassandra, MongoDB và HBase và các nguồn dữ liệu quan hệ như MySQL, PostgreSQL, Amazon Redshift, Microsoft SQL Server và Teradata. Dữ liệu được truy vấn nơi dữ liệu được lưu trữ mà không cần phải di chuyển dữ liệu vào một hệ thống phân tích riêng biệt.
Sự khác biệt giữa Presto và Hadoop là gì?
Presto là một công cụ truy vấn SQL phân tán, mã nguồn mở, được thiết kế cho các truy vấn nhanh, tương tác trên dữ liệu trong HDFS và các công cụ khác. Không giống như Hadoop/HDFS, Presto không có hệ thống lưu trữ riêng. Do đó, Presto bổ sung cho Hadoop, với các tổ chức áp dụng cả hai để giải quyết một thách thức kinh doanh rộng lớn hơn. Presto có thể được cài đặt với bất kỳ triển khai nào của Hadoop và được đóng gói trong bản phân phối Hadoop của Amazon EMR.
Ai sử dụng Presto?
Presto được sử dụng trong sản xuất ở quy mô rất lớn tại nhiều tổ chức nổi tiếng. Bạn sẽ thấy Presto được sử dụng tại Facebook, Airbnb, Netflix, Atlassian, Nasdaq, v.v. Việc triển khai Presto của Facebook được sử dụng bởi hơn một nghìn nhân viên, những người này chạy hơn 30.000 truy vấn, xử lý một petabyte dữ liệu mỗi ngày. Trung bình, Netflix chạy khoảng 3.500 truy vấn mỗi ngày trên các cụm Presto của họ. Airbnb đã xây dựng và mở nguồn, Airpal, một công cụ thực thi truy vấn dựa trên web hoạt động trên Presto. Cộng đồng Presto rộng lớn hơn có thể được tìm thấy trên diễn đàn này và ở trang Presto trên Facebook.
Làm thế nào để triển khai Presto trên đám mây?
Presto là khối lượng công việc lý tưởng trên đám mây, bởi vì đám mây cung cấp hiệu năng, khả năng điều chỉnh quy mô, độ tin cậy, độ sẵn sàng và lợi ích kinh tế khi sản xuất quy mô lớn. Bạn có thể khởi chạy cụm Presto chỉ trong vài phút. Bạn không cần phải lo lắng về trang bị nút mạng, thiết lập cụm máy chủ, cấu hình Presto hoặc tinh chỉnh cụm máy chủ.
AWS có thể xây dựng Triển khai Presto trên đám mây như thế nào?
Amazon EMR và Amazon Athena là những nơi tốt nhất để triển khai Presto trên đám mây, bởi vì các nền tảng này thực hiện việc tích hợp và kiểm tra tính nghiêm ngặt của Presto cho bạn, với quy mô, tính đơn giản và hiệu quả chi phí của AWS. Với Amazon EMR, bạn có thể khởi chạy các cụm Spark trong vài phút mà không cần cung cấp nút, thiết lập cụm, cấu hình Spark hoặc tinh chỉnh cụm. EMR cho phép bạn cung cấp một, hàng trăm hoặc hàng nghìn phiên bản điện toán trong vài phút. Amazon Athena cho phép bạn triển khai Presto bằng nền tảng AWS phi máy chủ mà không cần thiết lập, quản lý hoặc tinh chỉnh máy chủ, máy ảo hoặc cụm. Chỉ cần trỏ vào dữ liệu của bạn tại Amazon S3, xác định lược đồ và bắt đầu truy vấn bằng trình chỉnh sửa truy vấn tích hợp hoặc với các công cụ Nghiệp vụ thông minh (BI) hiện có của bạn. Athena tự động song song hóa truy vấn của bạn và tự động điều chỉnh quy mô tài nguyên để các truy vấn chạy nhanh chóng. Bạn chỉ phải trả tiền cho những truy vấn bạn chạy.