Apa itu Apache Iceberg?

Apache Iceberg adalah format tabel open source yang dirancang untuk set data analisis berskala besar yang disimpan di data lake. Format ini mengatasi banyak batasan format tabel data lake tradisional, sehingga menawarkan keandalan, performa, dan fleksibilitas yang lebih baik untuk arsitektur data lakehouse. Anggap ini sebagai lapisan cerdas yang berada di atas penyimpanan data lake Anda, seperti Cloud Storage, yang memberikan kemampuan seperti database untuk set data besar Anda. Iceberg tidak hanya mengelola file, tetapi juga mengelola tabel sebagai kumpulan file data, sehingga memungkinkan fitur seperti evolusi skema, perjalanan waktu, dan perencanaan kueri yang lebih efisien. Hal ini memungkinkan analis data, data scientist, dan engineer untuk bekerja dengan data di data lake dengan lebih mudah dan efisien, serta meningkatkan workload analisis mereka.

Apa kegunaan Apache Iceberg?

Apache Iceberg memiliki banyak kegunaan dalam arsitektur data modern, terutama yang memanfaatkan data lake. Kasus penggunaan utamanya mencakup:

  • Memungkinkan data lake yang andal: Iceberg memastikan operasi bersifat atomik, konsisten, terisolasi, dan tahan lama (ACID). Hal ini mencegah kerusakan dan inkonsistensi data yang dapat timbul dengan pendekatan berbasis file tradisional.
  • Mendukung evolusi skema: Tidak seperti format tabel lama yang sering kali kesulitan beradaptasi dengan perubahan skema, Iceberg memungkinkan evolusi skema yang lancar dan aman. Anda dapat menambahkan, menghapus, atau mengganti nama kolom tanpa mengganggu kueri yang sedang berjalan atau memerlukan migrasi data yang mahal.
  • Menyediakan kemampuan perjalanan waktu: Iceberg menyimpan histori snapshot tabel, sehingga pengguna dapat mengkueri data sebagaimana adanya pada titik waktu tertentu. Hal ini sangat berharga untuk mengaudit, men-debug, dan mereproduksi analisis.
  • Mengoptimalkan performa kueri: Pengelolaan metadata Iceberg memungkinkan mesin kueri untuk mem-prune file data yang tidak diperlukan secara efisien, sehingga mempercepat eksekusi kueri secara signifikan, terutama pada set data besar.
  • Memudahkan tata kelola data: Fitur seperti pembuatan versi tabel dan pengelolaan metadata meningkatkan tata kelola data dan upaya kepatuhan dengan memberikan jejak audit yang jelas tentang perubahan data.
  • Membangun data lakehouse: Iceberg adalah komponen dasar untuk membangun data lakehouse, yang menggabungkan skala dan fleksibilitas data lake dengan kemampuan pengelolaan data dari data warehouse. Hal ini memungkinkan workload analisis dan operasional lainnya dijalankan pada data yang sama.
  • Meningkatkan keandalan data untuk machine learning: Set data yang konsisten dan memiliki versi yang disediakan oleh Iceberg sangat penting untuk melatih dan men-deploy model machine learning yang andal. Data scientist dapat dengan mudah mereproduksi eksperimen menggunakan snapshot data historis.

Bagaimana cara kerja Apache Iceberg?

Pada intinya, Apache Iceberg berfungsi dengan memperkenalkan lapisan metadata yang berada di atas file data aktual di data lake Anda. Metadata ini melacak struktur dan konten tabel Anda dengan cara yang lebih teratur dan andal daripada sistem berbasis file tradisional. Berikut perincian mekanisme utamanya:

  1. Pengelolaan metadata: Iceberg mengelola file metadata yang menjelaskan skema tabel, partisi, dan lokasi file data. File metadata ini biasanya disimpan di data lake bersama dengan data.
  2. Katalog: Iceberg mengandalkan katalog untuk melacak lokasi metadata saat ini untuk setiap tabel. Katalog ini dapat berupa layanan seperti Hive Metastore, implementasi berbasis sistem file, atau layanan katalog berbasis cloud.
  3. Snapshot tabel: Setiap kali tabel diubah (misalnya, penambahan data, penghapusan data, atau evolusi skema), Iceberg akan membuat snapshot baru dari metadata tabel. Snapshot ini tidak dapat diubah dan memberikan kumpulan data historis dari status tabel.
  4. Daftar manifes dan file manifes: Setiap snapshot menunjuk ke daftar manifes, yang kemudian mencantumkan satu atau beberapa file manifes. File manifes berisi metadata tentang setiap file data, termasuk lokasi, nilai partisi, dan statistiknya (seperti jumlah baris dan rentang nilai).
  5. File data: Ini adalah file Parquet, ORC, atau Avro yang sebenarnya menyimpan data Anda di data lake. Metadata Iceberg melacak file-file ini dan organisasinya dalam tabel.

Arsitektur Apache Iceberg

Arsitektur Apache Iceberg melibatkan beberapa komponen utama yang bekerja sama:

  • Penyimpanan data lake: Ini adalah lapisan penyimpanan dasar, seperti Cloud Storage, tempat file data aktual (dalam format seperti Parquet, ORC, atau Avro) dan file metadata Iceberg disimpan.
  • Katalog Iceberg: Komponen ini bertanggung jawab untuk mengelola petunjuk metadata untuk tabel Iceberg. Katalog ini bertindak sebagai registry pusat yang melacak versi terbaru dari setiap metadata tabel. Penerapan katalog umum meliputi:
  • Metastore Hive: Repositori metadata yang banyak digunakan, sering kali digunakan dengan sistem berbasis Hadoop.
  • Katalog sistem file: Sebuah implementasi sederhana di mana informasi katalog disimpan langsung di sistem file data lake.
  • Layanan katalog berbasis cloud: Layanan terkelola yang ditawarkan oleh penyedia cloud untuk menyimpan dan mengelola metadata.
  • Metadata Iceberg: Metadata ini terdiri dari beberapa lapisan file metadata yang melacak struktur dan data tabel:
  • File metadata tabel: File ini mengarah ke daftar manifest saat ini dan berisi informasi tingkat tinggi tentang tabel, seperti skema dan spesifikasi partisi.
  • Daftar manifest: File ini mencantumkan file manifest yang berisi metadata tentang file data dalam snapshot tertentu dari tabel.
  • File manifes: File ini berisi informasi mendetail tentang setiap file data, termasuk lokasi, nilai partisi, dan statistiknya.
  • Mesin kueri dan framework pemrosesan: Ini adalah alat yang berinteraksi dengan tabel Iceberg untuk membaca dan menulis data. Mesin ini memanfaatkan metadata Iceberg untuk mengoptimalkan perencanaan dan eksekusi kueri.
  • Resource komputasi: Ini adalah infrastruktur dasar (misalnya, virtual machine dan container) yang menjalankan mesin kueri dan framework pemrosesan.

Apache Iceberg dan data lake

Apache Iceberg meningkatkan kemampuan data lake secara signifikan dengan menambahkan format tabel yang andal dan berperforma tinggi. Di data lake tradisional tanpa format tabel seperti Iceberg, data sering kali hanya berupa kumpulan file. Hal ini dapat menyebabkan beberapa tantangan:

  • Kurangnya evolusi skema: Mengubah struktur data dapat menjadi kompleks dan rentan error
  • Pembacaan yang tidak konsisten: Operasi tulis serentak dapat menyebabkan kueri membaca campuran data lama dan baru
  • Performa kueri lambat: Tanpa metadata untuk memandu mesin kueri, mesin kueri sering kali harus memindai sebagian besar data
  • Kesulitan dalam pengelolaan data: Fitur seperti perjalanan waktu dan pembuatan versi tidak tersedia secara langsung

Iceberg mengatasi batasan ini dengan menyediakan lapisan terstruktur di atas data lake. Iceberg menghadirkan fitur seperti database ke data lake, sehingga mengubahnya menjadi data lakehouse yang lebih canggih dan mudah dikelola. Dengan mengelola tabel sebagai kumpulan file dengan metadata yang kaya, Iceberg memungkinkan:

  • Akses data yang andal dan konsisten: Properti ACID memastikan integritas data
  • Pemrosesan kueri yang efisien: Pemfilteran dan pemindahan data berbasis metadata mempercepat kueri
  • Pengelolaan data yang fleksibel: Evolusi skema dan perjalanan waktu menyederhanakan pemeliharaan dan analisis data
  • Interoperabilitas: Iceberg dirancang agar kompatibel dengan berbagai mesin kueri dan framework pemrosesan yang biasa digunakan dengan data lake

Mengatasi tantangan bisnis Anda dengan Google Cloud

Pelanggan baru mendapatkan kredit gratis senilai $300 untuk dibelanjakan di Google Cloud.
Hubungi spesialis penjualan Google Cloud untuk membahas tantangan unik Anda secara lebih mendetail.

Tantangan Apache Iceberg

Meskipun Apache Iceberg menawarkan keunggulan yang signifikan, ada juga beberapa tantangan yang perlu dipertimbangkan:

Peningkatan kompleksitas

Pengenalan Iceberg menambahkan lapisan abstraksi lain ke data lake, yang dapat meningkatkan kompleksitas sistem secara keseluruhan. Memahami dan mengelola lapisan metadata memerlukan pengetahuan khusus.

Dependensi katalog

Iceberg mengandalkan layanan katalog (seperti Hive Metastore) untuk mengelola lokasi metadata tabel. Ketersediaan dan performa katalog dapat memengaruhi sistem secara keseluruhan.

Kurva pembelajaran

Tim harus mempelajari konsep dan praktik terbaik yang terkait dengan Iceberg, yang mungkin memerlukan pelatihan dan peningkatan keterampilan.

Potensi overhead

Meskipun Iceberg mengoptimalkan performa kueri dalam banyak kasus, pengelolaan metadata itu sendiri menimbulkan overhead, terutama untuk set data yang sangat kecil atau kueri yang sangat sederhana.

Kematangan alat

Meskipun ekosistem Iceberg berkembang pesat, beberapa alat dan integrasi mungkin masih kurang matang dibandingkan dengan teknologi data warehousing yang lebih mapan.

Upaya migrasi

Memigrasikan data lake yang ada untuk menggunakan Iceberg dapat menjadi tugas yang signifikan, yang berpotensi memerlukan penulisan ulang data dan perubahan pada pipeline data yang ada.

Google Cloud dan Apache Iceberg

Google Cloud menyediakan lingkungan yang andal untuk memanfaatkan Apache Iceberg. Beberapa layanan Google Cloud terintegrasi dengan baik dengan Iceberg, sehingga pengguna dapat membangun solusi data lakehouse yang canggih dan skalabel.

Langkah selanjutnya

Mulailah membangun solusi di Google Cloud dengan kredit gratis senilai $300 dan lebih dari 20 produk yang selalu gratis.