CopyTable HBase di HBase Shell dan Scala

Tulisan ini akan mengulas fitur CopyTable dari HBase. CopyTable ini berguna untuk membackup tabel HBase ataupun replikasi. CopyTable adalah alat dari Apache HBase untuk menyalin sebagian atau semua isi tabel ke cluster yang sama atau cluster lain. Syaratnya di cluster tujuan, sudah ada tabel kosongnya yang berisi column family-nya [sumber]

CopyTable merupakan bagian dari Apache Hadoop MapReduce yang menggunakan ‘scan’ standar HBase dan menuliskannya dengan Put HBase [sumber]. Penggunaan CopyTable ini dapat digunakan untuk: membackup keseluruhan tabel secara periodik ke cluster lain/sendiri, membackup keseluruhan (replikasi) isi tabel ke cluster lain/sendiri. Jadi intinya CopyTable ini memakai MapReduce job juga sih. CopyTable dapat dilakukan dari HBase Shell dan kode program, yang akan saya tunjukkan di tulisan ini.

CopyTable memiliki beberapa opsi dalam perintahnya, yaitu: dapat memilih mulai baris mana hingga apa untuk disalin (karena HBase sendiri sudah terurut pair datanya) dengan startrow dan stoprow, dapat memilih data dari timestamp kapan hingga kapan, dengan starttime dan endtime, ataupun menyalin beberapa column family name [sumber]. Nah, saya akan menunjukkan dua cara menggunakan CopyTable.

Pertama, dari dalam HBase shell. Siapkan dahulu tabel kosong yang sudah memiliki skema column family yang sama dengan tabel yang akan disalin. Dalam HBase shell lalu tinggal mengetikkan perintah:
hbase org.apache.hadoop.hbase.mapreduce.CopyTable --peer.adr=destinasi_cluster_ip_atau_domain:2181:/hbase --new.name=nama_tabel_tujuan nama_tabel_original
Pastikan cluster yang dituju sedang kondisi berjalan. Lalu CopyTable ini akan masuk pada Job Tracker yang dapat kita amati progresnya di dashboard Job Tracker.

Kedua dengan menulis kode, saya menggunakan contoh di Scala. Kode ini saya jalankan pada single server di localhost saya. Dengan kode ini dapat Anda gunakan bebas sesuai kebutuhan kemungkinan kasus Anda. Pada contoh ini saya menggunakan HBase 0.94 dan Hadoop 2.2.0.
build.sbt
Lihat di pastebin ini
copy.scala
Lihat di pastebin ini

Selain kedua cara di atas, saya mencoba implementasi MapReduce dari contoh [HBase] untuk ‘meniru’ CopyTable menyalin keseluruhan tabel. Nah, kebanyakan contohnya berupa Java, saya mencoba membuat dalam bentuk Scala setelah berlarut-larut tanya-tanya di Stackoverflow. Semoga membantu Anda yang sedang belajar Scala 🙂
Lihat di pastebin ini

Oke begitu saja CopyTable di Hadoop dan HBase. Tetap waspada untuk beberapa kasus Anda perlu mengecek terlebih dahulu versi HBase Anda di asal dan tujuan. Bisa jadi CopyTable gagal karena beberapa hal ‘remeh’ seperti itu. Pengalaman saya sendiri, saya selalu masih saja kerepotan resolve dependensi dan API terkait versi saat bermain Hadoop, HBase, Scala dan Akka. Tiap versi memiliki penanganan unik sendiri..haha.

Advertisements
CopyTable HBase di HBase Shell dan Scala

One thought on “CopyTable HBase di HBase Shell dan Scala

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s