1. Giới thiệu về Apache Iceberg [0]

thumbnail Apache Iceberg là một định dạng bảng hiệu suất cao, được phát triển bởi Netflix và sau đó được Apache Software Foundation thông qua, nhằm quản lý các tập dữ liệu phân tích lớn trong môi trường data lakehouse.

1.1. Cách thức hoạt động của Apache Iceberg [5]

  1. Định dạng bảng và quản lý siêu dữ liệu ở cấp độ tệp [8]
    • Bảng Iceberg lưu trữ dữ liệu ở các định dạng tệp dạng cột như Parquet, Avro hoặc ORC.
    • Điểm khác biệt chính là lớp siêu dữ liệu nâng cao, chứa trạng thái của bảng mà không cần dịch vụ danh mục tập trung, giúp đọc và hiểu nội dung bảng nhanh chóng.
  2. Quản lý siêu dữ liệu dựa trên ảnh chụp nhanh (snapshot) [10]
    • Cơ chế này đảm bảo các thao tác đọc và ghi an toàn, nhất quán.
    • Nếu xảy ra lỗi ghi hoặc dữ liệu bị hỏng, có thể quay trở lại các ảnh chụp nhanh trước đó của bảng nhờ siêu dữ liệu ghi lại các biến đổi.
  3. Tiến hóa lược đồ (Schema Evolution) [12]
    • Iceberg hỗ trợ thay đổi lược đồ (thêm, xóa, đổi tên cột) mà không yêu cầu ghi lại toàn bộ dữ liệu hiện có, giúp tiết kiệm chi phí.
    • Các ảnh chụp nhanh phiên bản ghi lại trạng thái của bảng tại bất kỳ thời điểm nào, cho phép theo dõi lịch sử thay đổi lược đồ và tích hợp khả năng ghi dữ liệu thay đổi (change data capture).
  4. Chiến lược phân vùng linh hoạt [17]
    • Vượt ra ngoài phân vùng kiểu Hive truyền thống, Iceberg nhúng thông tin phân vùng vào siêu dữ liệu.
    • Điều này giúp tối ưu hóa việc cắt tỉa (pruning) truy vấn và giảm lượng dữ liệu cần quét.
  5. Cô lập ảnh chụp nhanh và du hành thời gian (Snapshot Isolation and Time Travel) [18]
    • Kiến trúc dựa trên ảnh chụp nhanh cho phép xem dữ liệu nhất quán theo thời gian.
    • Người đọc có thể liên tục truy xuất dữ liệu trong khi người ghi thực hiện thay đổi mà không ảnh hưởng đến người đọc.
    • Tính năng du hành thời gian cho phép quay lại các ảnh chụp nhanh trước đó để truy vấn dữ liệu như thể nó tồn tại tại thời điểm đó, hữu ích cho việc lưu trữ hồ sơ lịch sử.

1.2. Ứng dụng thực tế và vai trò trong Data Lakehouse [22]

  1. Vị trí trong kiến trúc dữ liệu [23]
    • Iceberg hoạt động như một lớp trên cùng của bộ nhớ đám mây, quản lý việc lưu trữ dữ liệu trong định dạng Iceberg trên các bộ lưu trữ đám mây.
    • Nó đặc biệt phù hợp với kiến trúc Data Lakehouse, kết hợp sự linh hoạt và khả năng mở rộng của data lake với các tính năng quản lý và hiệu suất của data warehouse.
    • Iceberg cung cấp các giao dịch ACID mạnh mẽ, làm cho nó phù hợp với các data lake cấp doanh nghiệp cần sự kiểm soát và hiểu biết sâu sắc về dữ liệu.
  2. Xử lý luồng và lô (Stream and Batch Processing) [27]
    • Iceberg có thể xử lý liền mạch cả khối lượng công việc xử lý luồng (ví dụ: Flink) và lô (ví dụ: Spark).
    • Khả năng quản lý cập nhật dữ liệu tăng dần và thực hiện truy vấn dựa trên ảnh chụp nhanh rất phù hợp cho phân tích thời gian thực hoặc quy trình ETL.
    • Người dùng có thể chọn lấy dữ liệu mới nhất hoặc dữ liệu đã được làm sạch từ một vài ngày trước, hoặc thậm chí cả hai đồng thời.
  3. Quản trị và tuân thủ dữ liệu nghiêm ngặt [29]
    • Cấu trúc quản lý siêu dữ liệu chi tiết và khả năng tiến hóa lược đồ làm cho Iceberg trở thành lựa chọn tuyệt vời cho các môi trường có yêu cầu quản trị và tuân thủ dữ liệu nghiêm ngặt.
    • Nó đảm bảo tính toàn vẹn của dữ liệu và cung cấp khả năng kiểm toán, theo dõi dễ dàng các thay đổi dữ liệu theo thời gian, bao gồm cả khả năng quay lại một điểm thời gian cụ thể.
  4. Phân tích nâng cao [31]
    • Khả năng cắt tỉa phân vùng hiệu quả của Iceberg giúp người dùng chạy các truy vấn phức tạp trên các tập dữ liệu lớn mà không gặp phải sự suy giảm hiệu suất đáng kể.
    • Nó cho phép truy vấn chỉ tập trung vào một tập hợp con dữ liệu cụ thể cần thiết, thay vì quét toàn bộ đối tượng lưu trữ.

2. Ưu và nhược điểm của Apache Iceberg [34]

thumbnail

2.1. Ưu điểm [35]

  1. Khả năng tiến hóa lược đồ [35]
    • Khả năng xử lý các thay đổi lược đồ mà không cần ghi lại dữ liệu tốn kém là một lợi thế đáng kể.
    • Điều này giúp giảm thiểu thời gian và nguồn lực cần thiết cho việc ghi lại dữ liệu lớn, vốn có thể tốn kém về mặt tính toán và nhân lực.
    • Tính năng này đảm bảo tính linh hoạt và giảm chi phí bảo trì theo thời gian.
  2. Giao dịch ACID [38]
    • Iceberg hỗ trợ đầy đủ các giao dịch ACID, cung cấp tính nhất quán và độ tin cậy cao cho dữ liệu.
    • Điều này rất quan trọng đối với các ứng dụng doanh nghiệp yêu cầu mức độ đảm bảo dữ liệu cao.
  3. Khả năng mở rộng (Scalability) [39]
    • Iceberg được thiết kế để xử lý hiệu quả các tập dữ liệu lớn, có thể lên đến petabyte.
    • Nó rất phù hợp cho các ứng dụng big data cần lưu trữ lượng lớn dữ liệu.
  4. Khả năng tương tác (Interoperability) [40]
    • Iceberg tương thích với nhiều công cụ xử lý dữ liệu phổ biến như Spark, Flink, Trino và Hive.
    • Điều này mang lại sự linh hoạt trong việc lựa chọn các công cụ phù hợp cho từng tác vụ.
  5. Truy vấn hiệu quả [42]
    • Các kỹ thuật phân vùng và cắt tỉa nâng cao đảm bảo truy vấn hiệu quả và giảm lượng dữ liệu cần quét.
    • Điều này dẫn đến hiệu suất truy vấn được cải thiện do dữ liệu được phân vùng dễ dàng tìm kiếm và truy vấn hơn.

2.2. Nhược điểm [43]

  1. Độ phức tạp khi triển khai và quản lý [43]
    • Việc triển khai và quản lý Iceberg có thể khá phức tạp, đặc biệt đối với những người chưa quen thuộc với các định dạng như Parquet, Avro và hệ sinh thái Big Data.
    • Việc tìm hiểu cách hoạt động của các định dạng bảng phức tạp này là rất quan trọng để thành công với Iceberg.
  2. Yêu cầu tài nguyên cao [46]
    • Mặc dù tiết kiệm chi phí truy vấn, việc quản lý siêu dữ liệu, cô lập ảnh chụp nhanh và lưu trữ tất cả các ảnh chụp nhanh có thể đòi hỏi nhiều tài nguyên tính toán và lưu trữ hơn so với các định dạng dữ liệu đơn giản hơn.
  3. Chi phí vận hành tích hợp [48]
    • Việc tích hợp và duy trì các hệ thống khác nhau hoạt động tốt với Iceberg có thể đòi hỏi chi phí vận hành đáng kể.
    • Cần phải tự mình xây dựng một số tích hợp vì chúng không phải lúc nào cũng diễn ra một cách mượt mà.
  4. Sự trưởng thành của hệ sinh thái cộng đồng [50]
    • Mặc dù Iceberg ngày càng phổ biến (ví dụ: Snowflake đã áp dụng nó làm định dạng data lake tiêu chuẩn), hệ sinh thái cộng đồng của nó vẫn còn kém phát triển hơn so với các giải pháp đã có tên tuổi như Apache Hudi hoặc Delta Lake.
    • Điều này có nghĩa là có thể có ít tài nguyên cộng đồng hơn để hỗ trợ khi triển khai.