HBase: Hyper NoSQL Database
Latar
Belakang
Hinggal awal 2013 ini, Google setidaknya
telah mempublikasikan tiga system canggihnya dalam hubungannya dengan
pengelolaan dan pemberdayaan Big Data (“Big Data dan Rahasia Kejayaan Google”).
Ketiga system canggih tersebut adalah Google File System, Google MapReduce, dan
Google Bigtable. Semuanya merupakan sistem terdistribusi (Distributed System)
yang dikenal handal, mampu mengolah data berukuran raksasa dengan efektif dan
efisien, serta fleksibel. Ketiga sistem terdistibusi ini adalah sistem yang
saling terkait erat, namun memiliki pembagian tugas yang jelas (“Tiga TeknologiPamungkas Mbah Google”).
Ketika kebutuhan untuk memproses data dalam
ukuran super besar atau yang dikenal dengan istilah Big Data mulai dirasakan
oleh berbagai perusahaan terutama yang berhubungan langsung dengan pengolahan
dan pengelolaan data, ketiga teknologi Google tersebut mulai mendapat banyak
sorotan. Sayang, publikasi Google tentang teknologi canggihnya itu hanya
sebatas konsep, tidak berupa produk yang siap pakai. Oleh karena itu, munculah
implementasi dari konsep-konsep mutakhir Google tersebut dalam proyek-proyek
Open Source yang akhirnya menghasilkan produk-produk siap pakai yang tidak
kalah canggih.
Dari konsep Google File System lahirlah
Hadoop Distributed File System, dari konsep Google MapReduce lahir Hadoop
MapReduce, dan dari spesifikasi Google Bigtable diciptakanlah Hadoop HBase.
Ketiga produk Open Source ini merupakan teknologi GRATIS yang boleh dipakai
oleh siapa saja, dan memang sudah digunakan oleh banyak perusahaan besar
seperti halnya Yahoo!, Facebook, Twitter, IBM, Trend Micro, NTT Docomo, Recrute
Japan, Adobe, Amazon, Rakuten Japan, Benipal Technologies dan masih banyak
lagi.
Uraian ringkas tentang HDFS (Hadoop
Distributed File System) dan prosedur instalnya telah dibahas dalam “HDFS: dariGoogle untuk Big Data”, sedangkan konsep dan contoh aplikasi Hadoop MapReduce telah
dijelaskan dalam “MapReduce: Besar dan Powerful tapi Tidak Ribet”. Kali ini
kita akan membahas tentang Hadoop HBase sebagai implementasi open source dari
Google Bigtable (“Google Bigtable: Tabel yang memuat Seluruh Dunia”).
HBase
itu apa?
Demi kenyamanan dan keamanan, mari kita
mulai dari definisi. Apa itu HBase? HBase adalah database terdistribusi yang
berorientasi pada kolom. HBase adalah program yang berjalan diatas Hadoop
Distributed File System yang mampu memproses data dalam skala besar secara
interaktif. HBase merupakan implementasi dari konsep Google Bigtable. HBase
disebutkan berjalan pada HDFS, tapi tidak terbatas hanya pada HDFS, bisa juga
pada distributed file system lain.
Kenapa
harus HBase?
Relational Database Management System
(RDBMS) seperti halnya MySQL maupun PostgreSQL yang sudah sangat dikenal dan
biasa digunakan oleh berbagai kalangan, pada awalnya tidaklah didesain untuk
menangani data super besar dan dalam sistem terdistribusi yang memperkerjakan
puluhan hingga ribuan komputer.
RDBMS memang memiliki fungsi sharding atau
partisi data pada saat volume data yang dikelola sudah tak bisa lagi ditangani
dalam satu mesin (komputer). Namun demikian, fungsi sharding ini adalah fungsi
tambahan yang cukup kompleks baik dalam proses instal maupun pemeliharaannya.
Sedangkan, HBase sedari awal memang didesain untuk dapat mengelola data
berukuran super besar dalam suatu sistem terdistribusi dan memiliki fungsi
sharding original bawaan yang dapat bekerja secara otomatis maupun manual.
HBase memiliki karakteristik 'fault tolerance' atau mampu menjamin keutuhan
data meskipun terjadi kegagalan pada beberapa komputer yang diperkerjakannya.
HBase juga mampu menangani input data yang terjadi secara terus-menerus dari
ribuan user yang selama menjadi 'bottle neck' pada sistem database sebelumnya.
Struktur
Data
HBase memiliki struktur data yang cukup
sederhana, yang hanya terdiri atas Key dan Value. Model ini dikenal dengan
istilah Key Value Store (KVS). Key adalah kunci, sedangkan Value adalah data.
Tiap kunci berpasangan dengan satu data. Key disusun berurutan, sedangkan data
disimpan berdasarkan lokasi yang ditunjuk oleh Key-nya. Pasanangan Key dan
Value ini dapat diibaratkan seperti halnya sebuah kamus. Key adalah kata yang
ingin kita cari artinya, kata-kata dalam kamus disusun berurutan berdasarkan
urutan alfabet. Sedangkan Value adalah arti dari kata itu sendiri, yang
disimpan berdasarkan lokasi Key-nya.
Pada HBase, Key terdiri atas Row Key,
Column Family, Column, dan Timestamp. Sedangkan Value adalah data yang disimpan
dalam bentuk 'byte array' yang bisa berupa data teks, angka, website pages,
maupun data binary. Row Key juga berupa 'byte array' dan bertindak sebagai
'Primary Key'. Dalam suatu Table HBase, Row Key disusun berurutan pada bagian
baris tabel, sedangkan Column Family, Column dan Timestamp menempati bagian
kolom dari tabel tersebut. Data yang disimpan disortir berdasarkan urutan Row
Key (Gambar 1).
Gambar 1. Pasangan Key Value pada HBase
Column Family pada HBase adalah kolom yang
terdiri atas satu, beberapa atau ribuan Column. Column Family harus ditentukan
pada saat pembuatan skema tabel, sedangkan Column dapat ditambahkan setiap saat
(Gambar 2). Secara fisik, sebuah
tabel pada HBase akan disimpan per Column Family. Satu tabel dipecah menjadi
beberapa bagian berdasarkan jumlah Column Family yang dimilikinya, kemudian
tiap Column Family ini akan disimpan terpisah dalam media penyimpanan yang dalam hal ini adalah HDFS (Gambar 3).
Gambar 2. Susunan Kolom
Gambar 3. Model penyimpanan per Column Family
Ketika data yang disimpan dalam satu tabel
HBase menjadi semakin banyak dan melewati batas jumlah baris maksimal yang
ditentukan (default 64 MB), maka tabel tersebut akan dipartisi menjadi dua
bagian yang sama besar. Tiap bagian ini disebut Region dan secara fisik
disimpan terpisah satu sama lainnya. Tiap Region memiliki penunjuk identitas
(identifier) yang terdiri atas Nama Tabel asalnya, Nomor baris pada tabel asal
yang menjadi baris pertama pada Region yang bersangkutan, dan Nomor baris pada
table asal yang menajdi baris terakhir pada Region tersebut(Gambar 4). Jadi, sebuah tabel dalam
HBase, secara vertikal (baris) akan dibagi menjadi beberapa Region dan secara
horisontal (kolom) akan dibagi menjadi beberapa Column Family(Gambar 5). Kemudian, secara fisik,
tabel tersebut akan disimpan per-bagian dalam media penyimpanan yang
terdistribusi dalam cluster HDFS (Hadoop Distributed File System)(Gambar 6).
Gambar 4. Partisi Tabel per Region
Gambar 5. Model penyimpanan Tabel HBase pada HDFS
Lalu bagaimana kedudukan Timestamp pada
tabel HBase? Timestamp digunakan untuk memberikan versi pada suatu data yang
memiliki Row Key, Column Family, dan Column yang persis sama. Data yang persis
sama ini akan disimpan dalam cell yang berbeda setelah diberi penanda waktu
(Timestamp) dan diurut berdasarkan urutan Timestamp tersebut. Data dengan versi
terbaru (Timestamp terbesar) akan disimpan paling atas (Gambar 7).
Gambar 7. Timestamp pada cell tabel HBase
Arsitektur
Sebuah cluster HBase terdiri HMaster,
RegionServer, ZooKeeper, dan HDFS(Gambar 8). HMaster adalah server pada HBase yang bertugas men-start HBase,
mendistribusikan Region ke RegionServer yang terdaftar, mendeteksi dan
memulihkan RegionServer yang rusak. HMaster tidak menangani data yang disimpan
pada HBase. RegionServer adalah server yang bertugas menyimpan dan mengelola
Region-region yang diterimanya dari HMaster, menangani permintaan client, dan mempartisi
Region yang sudah melewati ukuran maksimal, kemudian melaporkan Region yang
telah dipartisi tersebut kepada HMaster. ZooKeeper bertugas mengelola informasi
pokok tentang kondisi HBase itu sendiri. Ia senantiasa mengetahui kondisi
terkini dari para RegionServer, kemudian memberikan informasi ini kepada
HMaster. Berdasarkan informasi dari ZooKeeper ini lah HMaster mengatur
pembagian Region ke RegionServer dan memulihkan RegionServer yang mengalami
kerusakan. ZooKeeper juga menyimpan informasi tentang lokasi RootKatalog dan
alamat HMaster. Bila suatu client hendak mengakses HBase untuk pertama kalinya,
maka ia harus memulai koneksinya melalui ZooKeeper. HDFS (Hadoop Distributed
File System) berfungsi sebagai media penyimpanan data bagi HBase. Semua data
yang diloading ke HBase dan data log HBase disimpan dalam HDFS.
Gambar 8. Arsitektur HBase
Kompatibilitas
HBase dengan MapReduce
Hadoop MapReduce telah dikenal sangat
handal dalam memproses data secara sekali proses atau yang dikenal dengan
istilah 'batch processing'. Tetapi, MapReduce tidak cukup efektif untuk memproses
data secara interaktif. Untuk menutupi kekurangan Hadoop MapReduce ini maka
dikembangkanlah HBase. Namun demikian, bukan berarti HBase hanya unggul dalam
hal memproses data secara interaktif karena dalam memproses data, HBase juga dapat
menggerakkan MapReduce untuk memproses data yang membutuhkan mode 'batch
processing'(Gambar 9).
Gambar 9. Kompatibilitas dengan MapReduce
Kesimpulan
HBase adalah database yang berorientasi
pada kolom (column oriented database) yang beroperasi pada sistem file
terdistribusi (distributed file system). Secara default, HBase beroperasi pada
HDFS (Hadoop Distributed File System). HBase dapat memproses data baik secara
interaktif maupun dengan mode 'batch processing'. HBase juga bergantung pada
ZooKeeper dan dapat bekerjasama dengan MapReduce (Gambar 10).
Gambar 10. Hadoop Distributed System
Comments
terima kasih
big data projects for cse final year students
Java Training in Chennai
Final Year Projects for CSE
Java Training in Chennai