Monday, March 4, 2013

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

2 comments:

Danov said...

Artikel yang lumayan detil menjelaskan HBase.

terima kasih

Anonymous said...

mas mau tanya dong. untuk kompatibilitas HBase dengan MapReduce itu contohnya seperti apa ya? karena secara logika saya masih kurang paham bagaimana keterkaitan antara mapreduce dan hbase ini. mohon bantuannya untuk menjelaskan. terimakasih.