Hiểu về Parquet, Iceberg và data lakehouse
(davidgomes.com)Tìm hiểu: Parquet, Iceberg và data lakehouse của BroadIn
-
Cách lưu trữ dữ liệu (trong tệp và trong bộ nhớ)
- Có nhiều định dạng tệp khác nhau phục vụ việc truy cập và lưu trữ dữ liệu
- Một số hệ thống chủ yếu dùng định dạng dữ liệu đóng, nhưng đa số hệ thống hỗ trợ các định dạng dữ liệu mở
- Các định dạng tệp mã nguồn mở tiêu biểu gồm Apache Avro, Parquet, ORC, Arrow, Feather, Protobuf, v.v.
- Các định dạng này cung cấp đặc tả về cách sắp xếp dữ liệu trong bố cục nhị phân thực tế
- Parquet hỗ trợ nén rất tốt, còn Avro phù hợp để đọc các khối hàng cụ thể
- Hỗ trợ tiến hóa schema và chia nhỏ tệp, là yếu tố thiết yếu cho xử lý song song
- Có thể làm việc với các định dạng này trên nhiều ngôn ngữ lập trình và công cụ khác nhau
-
Quản lý dữ liệu quy mô lớn - Iceberg và Delta Lake
- Cần có cách để lưu trữ nhiều bảng khác nhau, tiến hóa schema riêng cho từng bảng, phân vùng dữ liệu hiệu quả và giúp các công cụ bên ngoài có thể dễ dàng đọc schema
- Hive, Iceberg và Delta Lake đều hỗ trợ schema registry hoặc metastore
- Iceberg và Delta Lake sử dụng Parquet làm định dạng tệp riêng lẻ
- Iceberg và Delta Lake không phải là query engine hay storage engine, mà là các đặc tả mở giúp query engine có thể thực hiện công việc
- Cho phép các tính năng như tiến hóa phân vùng, tiến hóa schema, nén dữ liệu, giao dịch ACID, tối ưu hóa truy vấn hiệu quả, time travel, v.v.
-
Data lake và data lakehouse là gì?
- Data lake là nơi các công ty lưu trữ lượng lớn dữ liệu ở dạng thô như OCR, tệp Parquet hoặc CSV
- Data lakehouse là sự kết hợp các khả năng ở phía trên data lake, cho phép thực thi truy vấn SQL, thiết lập batch job, cấu hình data governance, v.v.
- Có thể xem data lakehouse là một phiên bản của kho dữ liệu mở
- Khi các data warehouse như Snowflake và BigQuery hỗ trợ các định dạng dữ liệu mở như Iceberg, ranh giới giữa data warehouse và data lakehouse đang trở nên mờ nhạt
Ý kiến của GN⁺
- Iceberg và Delta Lake đóng vai trò quan trọng như một lớp metadata để quản lý các tập dữ liệu quy mô lớn. Chúng cho phép quản lý dữ liệu hiệu quả và tối ưu hóa truy vấn, rất hữu ích cho các nhà khoa học dữ liệu và kỹ sư.
- Data lakehouse kết hợp ưu điểm của data lake và data warehouse, mở ra một mô hình mới cho quản lý và phân tích dữ liệu. Điều này mang lại cơ hội củng cố hơn nữa việc ra quyết định dựa trên dữ liệu.
- Khi mức độ hỗ trợ dành cho Iceberg tăng lên, các hệ thống quản lý và phân tích dữ liệu được kỳ vọng sẽ dần tiêu chuẩn hóa và tăng khả năng tương tác. Điều này sẽ mang lại nhiều linh hoạt và hiệu quả hơn trong việc lựa chọn và vận hành nền tảng dữ liệu.
2 bình luận
Tôi đang so sánh Iceberg và Delta Lake, hóa ra ở đây đã được tổng hợp gọn gàng như vậy rồi.
Quan điểm và ý kiến mà tôi đang xem gần như tương tự.
Benchmark được chạy online là dùng Spark, và Head DevRel của Tabular đã viết rằng benchmark này đáng để tham khảo, nhưng không có nhiều ý nghĩa lớn.
Nếu phải chọn với tư cách là mã nguồn mở thì có vẻ Iceberg là lựa chọn duy nhất.
Phần tóm tắt thì tốt, nhưng sẽ hay hơn nếu có cả các liên kết tham khảo.
Ý kiến trên Hacker News
Apache Iceberg và Delta Lake thường được nhắc đến như các định dạng bảng mở, nhưng trên thực tế có sự khác biệt.
Trong thế giới cơ sở dữ liệu, việc Delta, Iceberg và Hudi lưu trữ dữ liệu trên các hệ lưu trữ như S3 dưới dạng định dạng mã nguồn mở là một thay đổi rất lớn.
Tôi đã làm việc với các tệp Parquet trên S3 nhiều năm nhưng chưa từng hiểu chính xác Iceberg là gì. Tuy nhiên, bài viết đó giải thích Iceberg rất tốt.
Cách tốt nhất để lưu Apache Arrow dataframe xuống đĩa dưới dạng tệp là dùng Feather, nhưng cũng có thể chuyển nó sang định dạng Apache Parquet.
Tôi đã nghe về data lake, nhưng "data lakehouse" nghe như nơi giới thượng lưu dữ liệu đi câu cá dữ liệu bằng thuyền dữ liệu vào mùa hè.
Tôi đang xử lý khoảng 100TB dữ liệu trên GCP, dùng BigQuery làm công cụ truy vấn và áp dụng partitioning Hive đơn giản. Tôi hài lòng vì có thể chạy mọi truy vấn và chi phí rất rẻ, nhưng độ trễ khá cao lên nhiều (dù không phải vấn đề lớn với công ty).
Tôi rất hào hứng với Iceberg, nhưng lần cuối tôi tìm hiểu thì chỉ có thư viện Spark là hiện thực duy nhất, còn connector Iceberg của Trino lại phụ thuộc rất mạnh vào Hive.
Tôi tự hỏi vì sao không ai có thể giải thích tất cả điều này bằng những ý tưởng cụ thể hơn. Cần phải giải thích cách lưu trữ dữ liệu, cách kết nối và truy vấn nó, cũng như tốc độ truy vấn ra sao (so với tốc độ giao dịch và tốc độ "phân tích").
Trong mọi benchmark tôi thấy trên mạng, định dạng Delta Lake đều cho hiệu năng tốt hơn Iceberg rất nhiều.
Tôi thừa nhận bài blog có lẽ không thể bao quát 100% hoặc trở thành điểm khởi đầu tốt nhất cho đa số mọi người.