Presto là gì? Cách thức Presto hoạt động hiện nay

1088
20-02-2024
Presto là gì? Cách thức Presto hoạt động hiện nay

Presto là một công cụ tìm kiếm và truy xuất dữ liệu mạnh mẽ được sử dụng rộng rãi trong ngành công nghệ thông tin hiện nay. Với khả năng xử lý dữ liệu nhanh chóng và hiệu quả, Presto đem lại nhiều lợi ích cho các doanh nghiệp và tổ chức trong việc phân tích dữ liệu.

Presto là gì? 

Presto hay PrestoDB là một công cụ truy vấn SQL phân tán mã nguồn mở, hỗ trợ truy vấn tùy chỉnh và xử lý dữ liệu từ nhiều nguồn khác nhau như HDFS, MySQL, Cassandra, Hive. Công cụ này được xây dựng bằng Java và được áp dụng bởi các công ty hàng đầu như Facebook, Airbnb, Dropbox, Groupon, Netflix. Presto giúp tránh chi phí độ trễ I/O không cần thiết và cải thiện quá trình xử lý dữ liệu.

Presto là gì? Cách thức Presto hoạt động hiện nay - Ảnh 1.

Presto là công cụ truy vấn SQL, hỗ trợ truy vấn tùy chỉnh và xử lý dữ liệu từ nhiều nguồn

Lịch sử hình thành và phát triển của Presto

Ban đầu, Presto là dự án thuộc Facebook, được phát triển để thực hiện các truy vấn phân tích tương tác trên kho dữ liệu 300PB, sử dụng cụm lớn dựa trên Hadoop/HDFS. Trước khi có Presto, Facebook đã sử dụng Apache Hive để đơn giản hóa công việc phức tạp của Java MapReduce thành các truy vấn giống SQL và thực hiện ở quy mô cao. Tuy nhiên, đối với các truy vấn tương tác, Hive không tối ưu được hiệu suất. 

Vào năm 2012, nhóm Cơ sở hạ tầng dữ liệu Facebook đã phát triển thành công Presto - công cụ 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 đầu năm 2013 và mở mã nguồn theo Giấy phép phần mềm Apache cho bất kỳ ai tải xuống trên Github vào tháng 11 cùng năm. Cho đến nay, với các nhiệm vụ truy vấn tương tác trên Hadoop, Presto đã trở thành lựa chọn phổ biến. 

Cách thức Presto hoạt động

Presto là một hệ thống phân tán dựa trên Hadoop và sử dụng kiến trúc các hệ thống quản lý cơ sở dữ liệu xử lý song song hàng loạt truyền thống như MPP. Presto có nút điều phối giao tiếp với các worker node khác.  

Người dùng cung cấp các truy vấn SQL cho điều phối viên, người sử dụng công cụ thực thi và truy vấn riêng để diễn giải, lập kế hoạch và lên lịch truy vấn phân tán giữa các nút công nhân. Hệ thống được xây dựng để xử lý các ngữ nghĩa ANSI SQL cơ bản như các truy vấn phức tạp, tổng hợp, nối, nối ngoài trái/phải, truy vấn con, hàm cửa sổ, số lượng riêng biệt và tỷ lệ phần trăm gần đúng.

Presto xử lý yêu cầu trên các worker node theo các giai đoạn khác nhau sau khi truy vấn biên dịch. Để loại bỏ chi phí I/O quá mức, tất cả quá trình xử lý được thực hiện trong bộ nhớ và được định tuyến qua mạng giữa các giai đoạn. Việc thêm nhiều worker node hơn dẫn đến có thể xử lý song song và nhanh hơn.

Presto được thiết kế để mở rộng cho bất kỳ nguồn dữ liệu nào thông qua 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. Hệ thống này 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ư HDFS, Amazon S3, Cassandra, MongoDB, HBase và các nguồn dữ liệu quan hệ như MySQL, PostgreSQL, Amazon Redshift, Microsoft SQL Server và Teradata. Điều này cho phép truy vấn dữ liệu tại chỗ mà không cần di chuyển dữ liệu vào một hệ thống phân tích riêng biệt.

Kiến trúc của Presto

Kiến trúc của Presto

Điểm khác nhau giữa Presto và Hadoop

Presto là một công cụ truy vấn dữ liệu phân tán, được phát triển bởi Facebook. Nó cho phép người dùng truy vấn dữ liệu trên nhiều nguồn dữ liệu khác nhau, như HDFS, Cassandra, MySQL, và nhiều hơn nữa. Còn Hadoop là một framework xử lý dữ liệu lớn phổ biến, được sử dụng rộng rãi trong ngành công nghiệp. Hadoop bao gồm nhiều thành phần, như HDFS (Hadoop Distributed File System) để lưu trữ dữ liệu, và MapReduce để xử lý dữ liệu. 

Một trong những điểm khác nhau chính giữa Presto và Hadoop là cách xử lý dữ liệu. Presto sử dụng mô hình truy vấn trực tiếp trên dữ liệu, trong khi Hadoop sử dụng mô hình xử lý dữ liệu theo batch thông qua MapReduce. Điều này có nghĩa là Presto thích hợp cho các truy vấn thời gian thực và phức tạp, trong khi Hadoop thích hợp cho việc xử lý lượng dữ liệu lớn một cách tuần tự.

Ngoài ra, cấu trúc triển khai cũng là một điểm khác nhau giữa Presto và Hadoop. Presto thường được triển khai trên các máy chủ độc lập, trong khi Hadoop thường được triển khai trên một cụm máy chủ để tận dụng tính toán phân tán.

Các trường hợp nên sử dụng Presto

  • Ad hoc querying: Presto cho phép bạn truy vấn dữ liệu ở bất kỳ nơi nào nó được lưu trữ mà không cần phải ETL vào một hệ thống riêng biệt.
  • Reporting & dashboard: Presto cho phép các nhà khoa học và nhà phân tích dữ liệu truy vấn dữ liệu trên nhiều nguồn mà không cần đến nhà phát triển nền tảng dữ liệu.
  • Transformation using SQL (ETL): Hàng Terabyte dữ liệu có thể được tổng hợp từ nhiều nguồn và được thực thi hiệu quả bằng cách sử dụng truy vấn ETL.
  • Data lake analytics: Presto cho phép bạn truy vấn bất kỳ loại dữ liệu nào trong hệ thống hồ dữ liệu của bạn, cả có cấu trúc và không cấu trúc.
  • Federated querying across multiple data sources: Truy vấn dữ liệu từ nhiều nguồn khác nhau, bao gồm cơ sở dữ liệu, hồ dữ liệu và nhà lưu trữ, cho dù tại chỗ hay trên đám mây.

Với khả năng xử lý dữ liệu nhanh chóng và linh hoạt, Presto đem lại nhiều lợi ích cho các doanh nghiệp và tổ chức trong việc phân tích dữ liệu và đưa ra quyết định chiến lược. Hi vọng qua bài viết này, bạn đã hiểu rõ hơn về Presto và cách thức hoạt động của nó hiện nay.

SHARE