Iceberg adalah format tabel data lake terbuka yang memungkinkan penyimpanan di HDFS atau Alibaba Cloud OSS serta analisis melalui Spark, Flink, Hive, dan Presto.
Kemampuan inti
Apache Iceberg awalnya dikembangkan sebagai solusi untuk migrasi gudang data Hive ke cloud dan kini telah menjadi format tabel standar untuk layanan data lake berbasis cloud. Kunjungi situs web resmi Apache Iceberg untuk informasi selengkapnya.
Iceberg menyediakan kemampuan berikut:
-
Penyimpanan data lake berbiaya rendah di HDFS atau Object Storage Service (OSS).
-
Integrasi mulus dengan mesin komputasi open source untuk ingestion dan analisis.
-
Semantik ACID lengkap.
-
Perubahan data tingkat baris (row-level).
-
Pengembalian versi historis (historical version rollbacks).
-
Penyaringan data yang efisien.
-
Evolusi skema (schema evolution).
-
Evolusi tata letak partisi (partition layout evolution).
-
Partisi tersembunyi (hidden partitioning).
Tabel berikut membandingkan tiga arsitektur: ClickHouse open source (gudang data real-time), Hive open source (gudang data offline), dan Iceberg Alibaba Cloud (data lake).
|
Kriteria Perbandingan |
Subitem |
Gudang data real-time ClickHouse open source |
Gudang data offline Hive open source |
Data lake Iceberg Alibaba Cloud |
|
Arsitektur sistem |
Arsitektur |
Komputasi dan penyimpanan terikat (coupled) |
Komputasi dan penyimpanan terpisah (decoupled) |
Komputasi dan penyimpanan terpisah (decoupled) |
|
Dukungan untuk multiple mesin komputasi |
Tidak didukung |
Didukung |
Didukung |
|
|
Penyimpanan data di object storage |
Tidak didukung |
Sebagian didukung |
Didukung |
|
|
Penyimpanan data di HDFS |
Tidak didukung |
Didukung |
Didukung |
|
|
Keterbukaan format penyimpanan |
Dimatikan |
Terbuka |
Terbuka |
|
|
Nilai bisnis |
Ketepatan waktu |
Detik |
Jam/Hari |
Menit |
|
Fleksibilitas komputasi |
Rendah |
Kuat |
Kuat |
|
|
Transaksional |
Tidak didukung |
Tidak lengkap |
Didukung |
|
|
Universalitas semantik tingkat tabel |
Buruk |
Buruk |
Sangat baik |
|
|
Perubahan data tingkat baris |
Tidak didukung |
Didukung secara lemah |
Didukung |
|
|
Kualitas data |
Sangat tinggi |
Tinggi |
Tinggi |
|
|
Biaya pemeliharaan |
Kinerja kueri |
Tinggi |
Tinggi |
Tinggi |
|
Biaya penyimpanan |
Sangat tinggi |
Sedang |
Rendah |
|
|
Layanan mandiri (self-service) |
Tidak didukung |
Tidak didukung |
Didukung |
|
|
Elastisitas sumber daya |
Umum |
Umum |
Sangat baik |
Perbandingan dengan Iceberg open source
Tabel berikut membandingkan Iceberg Alibaba Cloud dengan Iceberg open source berdasarkan fitur dasar, perubahan data, dan mesin komputasi.
√ menunjukkan bahwa fitur tersebut didukung. x menunjukkan bahwa fitur tersebut belum didukung.
|
Kategori |
Item |
Subitem |
Iceberg open source |
Edisi Komersial Iceberg (Alibaba Cloud) |
|
Fitur dasar |
ACID |
N/A |
√ |
√ |
|
Pengembalian versi historis |
N/A |
√ |
√ |
|
|
Integrasi Source dan Sink |
Batch |
√ |
√ |
|
|
Streaming |
√ |
√ |
||
|
Penyaringan data yang efisien |
N/A |
√ |
√ |
|
|
Perubahan data |
Evolusi skema |
N/A |
√ |
√ |
|
Evolusi partisi |
N/A |
√ |
√ |
|
|
Pembaruan copy-on-write |
N/A |
√ |
√ |
|
|
Pembaruan merge-on-read |
Baca |
√ |
√ |
|
|
Tulis |
√ |
√ |
||
|
Kompaksi |
x |
x |
||
|
Mesin komputasi |
Apache Spark |
Baca |
√ |
√ |
|
Tulis |
√ |
√ |
||
|
Apache Hive |
Baca |
√ |
√ |
|
|
Tulis |
√ |
√ |
||
|
Apache Flink |
Baca |
√ |
√ |
|
|
Tulis |
√ |
√ |
||
|
PrestoDB atau Trino |
Baca |
√ |
√ |
|
|
Tulis |
√ |
√ |
||
|
Bahasa pemrograman |
Java |
N/A |
√ |
√ |
|
Python |
N/A |
√ |
√ |
|
|
Fitur lanjutan |
Integrasi native dengan Alibaba Cloud OSS |
N/A |
x |
√ |
|
Integrasi native dengan Alibaba Cloud DLF |
N/A |
x |
√ |
|
|
Akselerasi cache data lokal |
N/A |
x |
√ |
|
|
Kompaksi file kecil otomatis |
N/A |
x |
√ |
Perbandingan ini dibuat pada September 2021 berdasarkan analisis terhadap Iceberg open source dan edisi komersial Iceberg pada saat itu. Dukungan fitur dapat berubah seiring peningkatan versi di masa mendatang.
Skenario
Iceberg merupakan komponen inti dalam solusi data lake dan cocok untuk skenario berikut.
|
Skenario |
Deskripsi |
|
Impor dan kueri data real-time |
Aliran data upstream masuk ke data lake Iceberg secara real-time dan langsung dapat dikueri. Sebagai contoh, dalam skenario logging, jalankan Pekerjaan streaming Iceberg atau Spark untuk menulis log ke tabel Iceberg. Kemudian kueri data tersebut dengan Hive, Spark, Iceberg, atau Presto. Dukungan ACID memastikan isolasi antara ingestion dan kueri, sehingga mencegah pembacaan data kotor (dirty reads). |
|
Hapus atau perbarui data |
Gudang data tradisional kesulitan melakukan penghapusan atau pembaruan tingkat baris secara efisien. Operasi ini biasanya memerlukan menjalankan pekerjaan offline yang membaca seluruh tabel asli, memodifikasi data, lalu menulis ulang. Iceberg mempersempit perubahan dari tingkat tabel ke tingkat file, sehingga memungkinkan pembaruan parsial yang efisien. Di data lake Iceberg, Anda dapat langsung mengubah data dalam tabel dengan menjalankan perintah seperti |
|
Kontrol kualitas data |
Gunakan validasi skema Iceberg untuk membuang atau memproses lebih lanjut data abnormal selama impor. |
|
Evolusi skema data |
Iceberg mendukung perubahan skema melalui pernyataan DDL Spark SQL tanpa perlu menulis ulang data historis, sehingga evolusi menjadi cepat. Dukungan ACID mengisolasi perubahan skema dari pekerjaan baca yang sedang berjalan, memastikan pembacaan konsisten sepanjang proses. |
|
Pembelajaran mesin real-time |
Dalam alur kerja pembelajaran mesin, pemrosesan data (pembersihan, transformasi, ekstraksi fitur) memakan waktu paling lama. Iceberg menyatukan data historis dan real-time ke dalam satu aliran yang andal, di mana setiap langkah pemrosesan merupakan node dalam pipeline. Hal ini menghilangkan jalur batch dan streaming yang terpisah. Iceberg juga menyediakan SDK Python native untuk pengembang algoritma. |