Cloudera Data Platform (CDP) menyediakan solusi siap pakai yang memungkinkan penerapan Apache HBase menggunakan Amazon Simple Storage Service (S3) sebagai lapisan persistensi utamanya untuk menyimpan data tabel. Amazon S3 adalah toko objek yang menawarkan daya tahan tingkat tinggi dengan struktur biaya bayar per penggunaan. Tidak ada komponen sisi server untuk dijalankan atau dikelola untuk S3 — yang diperlukan hanyalah pustaka klien S3 dan kredensial AWS. Namun, HBase memerlukan sistem file yang konsisten dan atomik yang berarti tidak dapat langsung menggunakan S3 karena ini adalah penyimpanan objek yang pada akhirnya konsisten. Baik CDH dan HDP hanya menyediakan HBase hanya menggunakan HDFS karena ada hambatan lama yang mencegah HBase menggunakan S3 secara asli. Untuk mengatasi masalah ini, kami telah membangun solusi out-of-the-box yang kami berikan untuk pertama kalinya melalui CDP. Saat Anda meluncurkan klaster Database Operasional (HBase) di CDP, HBase StoreFiles (file pendukung untuk tabel HBase) disimpan di S3 dan HBase write-ahead-logs (WAL) disimpan dalam instans HDFS yang dijalankan bersama HBase seperti biasa.
Kami akan menjelaskan secara singkat setiap komponen yang masuk ke dalam arsitektur ini dan peran yang dipenuhi oleh masing-masing komponen.
Adaptor sistem file S3A disediakan oleh Hadoop untuk mengakses data di S3 melalui API FileSystem standar. Adaptor S3A memungkinkan aplikasi yang ditulis melawan Hadoop API untuk mengakses data di S3 menggunakan URI dalam bentuk "s3a://my_bucket/" alih-alih "hdfs://namenode:8020/" seperti dengan HDFS. Kemampuan untuk menentukan "sistem file" default untuk digunakan membuat migrasi gaya "angkat-dan-geser" dari kluster lokal dengan HDFS ke kluster berbasis cloud dengan S3 menjadi sangat sederhana. HBase dapat dikonfigurasi dengan lokasi penyimpanan dasar (misalnya direktori dalam HDFS atau bucket S3) untuk semua data aplikasi yang memungkinkan HBase berfungsi sama, terlepas dari apakah data tersebut dalam HDFS atau S3.
S3Guard adalah bagian dari proyek Apache Hadoop yang menyediakan daftar direktori dan status objek yang konsisten untuk adaptor S3A, transparan untuk aplikasi. Untuk mencapai hal ini, S3Guard menggunakan database terdistribusi yang konsisten untuk melacak perubahan yang dibuat pada S3 dan menjamin bahwa klien selalu melihat status yang benar dari S3. Tanpa S3Guard, HBase mungkin tidak melihat StoreFile baru yang ditambahkan ke tabel HBase. Jika HBase bahkan untuk sementara tidak mengamati file, ini dapat menyebabkan hilangnya data di HBase. Namun, S3guard tidak menyediakan semua yang dibutuhkan HBase untuk menggunakan S3.
HBase Object Store Semantics (atau hanya "HBOSS") adalah proyek perangkat lunak baru di bawah proyek Apache HBase yang secara khusus dibangun untuk menjembatani kesenjangan antara S3Guard dan HBase. HBOSS adalah fasad di atas adaptor S3A dan S3Guard yang menggunakan kunci terdistribusi untuk memastikan bahwa operasi HBase dapat secara atomik memanipulasi file-nya di S3. Salah satu contoh di mana HBase membutuhkan atomisitas adalah penggantian nama direktori. Dengan klien S3, penggantian nama diimplementasikan sebagai salinan data sumber ke tujuan diikuti dengan penghapusan data sumber. Tanpa penguncian yang disediakan HBOSS, HBase mungkin melihat operasi penggantian nama sedang berlangsung yang dapat menyebabkan hilangnya data. Untuk mencapai penguncian terdistribusi ini, HBOSS menggunakan Apache ZooKeeper. Penggunaan kembali ZooKeeper dirancang karena HBase sudah memerlukan instance ZooKeeper untuk memastikan bahwa semua layanan HBase beroperasi bersama. Dengan demikian, menggabungkan HBOSS tidak memerlukan beban manajemen layanan tambahan dan menutup kesenjangan pada apa yang dibutuhkan HBase untuk menggunakan S3 dengan S3Guard.
Mengkonfigurasi HBase untuk menggunakan S3 untuk StoreFiles-nya memiliki banyak manfaat bagi pengguna kami. Salah satu manfaatnya adalah pengguna dapat memisahkan penyimpanan dan komputasi mereka. Jika ada saat-saat di mana tidak diperlukan akses ke HBase, HBase dapat dimatikan dengan bersih dan semua sumber daya komputasi diambil kembali untuk menghilangkan biaya operasi apa pun. Ketika akses HBase diperlukan lagi, cluster HBase dapat dibuat ulang, menunjuk ke data yang sama di S3. Saat startup, HBase dapat menginisialisasi ulang dirinya sendiri hanya dari data di S3.
Menggunakan S3 untuk menyimpan HBase StoreFiles memang memiliki beberapa tantangan. Salah satu masalah tersebut adalah peningkatan latensi untuk pencarian acak ke file di S3 dibandingkan dengan HDFS. Peningkatan latensi dalam akses S3 akan menghasilkan HBase Gets and Scans yang memakan waktu lebih lama daripada biasanya dengan HDFS. Latensi S3 bervariasi dari 10 hingga 100 milidetik dibandingkan dengan rentang 0,1 hingga 9 milidetik dengan HDFS. CDP dapat mengurangi dampak latensi S3 ini dengan mengonfigurasi HBase secara otomatis untuk menggunakan BucketCache. Dengan BucketCache diaktifkan, latensi S3 hanya dialami saat pertama kali StoreFile dibacakan dari S3. Setelah HBase membaca file, ia akan mencoba men-cache data mentah untuk menggantikan pembacaan S3 yang lambat dengan pembacaan memori lokal yang cepat. Saat kluster HBase diluncurkan melalui CDP, kluster ini secara otomatis dikonfigurasikan untuk menyimpan data yang baru dibaca dari memori S3 untuk memberikan pembacaan data "panas" yang lebih cepat.
Kami sangat senang dapat memberikan kemampuan baru ini kepada pengguna kami. Cobalah HBase yang berjalan di S3 dalam template Database Operasional di CDP hari ini!