Pos ini awalnya diterbitkan melalui blogs.apache.org, kami menerbitkannya kembali di sini dalam bentuk yang sedikit dimodifikasi untuk kenyamanan Anda:
Sepintas, arsitektur Apache HBase tampak mengikuti model master/slave di mana master menerima semua permintaan tetapi pekerjaan sebenarnya dilakukan oleh slave. Sebenarnya tidak demikian, dan dalam artikel ini saya akan menjelaskan tugas apa yang sebenarnya ditangani oleh master dan slave.
Server Wilayah dan Wilayah
HBase adalah manajer penyimpanan Hadoop yang menyediakan pembacaan dan penulisan acak berlatensi rendah di atas HDFS, dan dapat menangani petabyte data. Salah satu kemampuan menarik di HBase adalah auto-sharding, yang berarti bahwa tabel didistribusikan secara dinamis oleh sistem ketika menjadi terlalu besar.
Unit dasar skalabilitas horizontal dalam HBase disebut Wilayah . Region adalah bagian dari data tabel dan pada dasarnya adalah rentang baris yang diurutkan dan berdekatan yang disimpan bersama.
Awalnya, hanya ada satu wilayah untuk sebuah tabel. Seperti yang ditunjukkan di bawah ini, ketika wilayah menjadi terlalu besar setelah menambahkan lebih banyak baris, wilayah tersebut dibagi menjadi dua di tombol tengah, membuat dua bagian yang kira-kira sama.
Di HBase, budak disebut Server Wilayah . Setiap Server Wilayah bertanggung jawab untuk melayani sekumpulan wilayah, dan satu Wilayah (yaitu rentang baris) hanya dapat dilayani oleh satu Server Wilayah.
Arsitektur HBase memiliki dua layanan utama:HMaster yang bertanggung jawab untuk mengoordinasikan cluster dan menjalankan operasi administratif, dan HRegionServer bertanggung jawab untuk menangani subset data tabel.
HMaster, Penetapan Wilayah, dan Penyeimbangan
Seperti disebutkan sebelumnya, Master HBase mengoordinasikan Cluster HBase dan bertanggung jawab atas operasi administratif.
Server Wilayah dapat melayani satu atau lebih Wilayah. Setiap Wilayah ditugaskan ke Server Wilayah saat startup dan master dapat memutuskan untuk memindahkan Wilayah dari satu Server Wilayah ke Server Wilayah lain sebagai hasil dari operasi keseimbangan beban. Master juga menangani kegagalan Server Wilayah dengan menetapkan wilayah ke Server Wilayah lain.
Pemetaan Wilayah dan Server Wilayah disimpan dalam tabel sistem yang disebut META. Dengan membaca META, Anda dapat mengidentifikasi wilayah mana yang bertanggung jawab atas kunci Anda. Ini berarti bahwa untuk operasi baca dan tulis, master tidak terlibat sama sekali dan klien dapat langsung menuju Server Wilayah yang bertanggung jawab untuk melayani data yang diminta.
Menemukan Row-Key:Server Wilayah Mana yang Bertanggung Jawab?
Untuk menempatkan atau mendapatkan baris klien tidak perlu menghubungi master, klien dapat langsung menghubungi Server Wilayah yang menangani baris yang ditentukan, atau dalam kasus pemindaian klien, dapat langsung menghubungi set Server Wilayah yang bertanggung jawab untuk menangani set kunci:
Untuk mengidentifikasi Server Wilayah, klien melakukan kueri pada tabel META.
META adalah tabel sistem yang digunakan untuk melacak wilayah. Ini berisi nama server dan pengenal wilayah yang terdiri dari nama tabel dan kunci baris awal. Dengan melihat start-key dan start-key region berikutnya, klien dapat mengidentifikasi rentang baris yang terdapat di region tertentu.
Klien menyimpan cache untuk lokasi wilayah. Ini menghindari klien untuk mencapai tabel META setiap kali operasi di wilayah yang sama dikeluarkan. Dalam kasus pemisahan wilayah atau pindah ke Server Wilayah lain (karena penyeimbangan, atau kebijakan penetapan), klien akan menerima pengecualian sebagai respons dan cache akan disegarkan dengan mengambil informasi yang diperbarui dari tabel META:
Karena META adalah tabel seperti yang lain, klien harus mengidentifikasi di server mana META berada. Lokasi META disimpan di node ZooKeeper saat ditugaskan oleh Master, dan klien langsung membaca node untuk mendapatkan alamat Server Wilayah yang berisi META.
Desain asli HBase didasarkan pada BigTable, dengan tabel lain yang disebut -ROOT- berisi lokasi META dan Apache ZooKeeper menunjuk ke sana. HBase 0.96 menghapus pengaturan itu demi ZooKeeper saja, karena META tidak dapat dibagi dan karenanya terdiri dari satu wilayah.
API Klien:Tanggung Jawab Master dan Wilayah
API klien Java HBase memiliki dua antarmuka utama:
- HBaseAdmin memungkinkan interaksi dengan "skema tabel" dengan membuat/menghapus/memodifikasi tabel, dan memungkinkan interaksi dengan cluster dengan menetapkan/membatalkan penetapan wilayah, menggabungkan wilayah bersama, memanggil flush, dan sebagainya. Antarmuka ini berkomunikasi dengan Master.
- Table memungkinkan klien untuk memanipulasi data dari tabel tertentu dengan menggunakan get, put, delete, dan semua operasi data lainnya. Antarmuka ini berkomunikasi langsung dengan Server Wilayah yang bertanggung jawab untuk menangani kumpulan kunci yang diminta.
Kedua antarmuka tersebut memiliki tanggung jawab yang terpisah:HBaseAdmin hanya digunakan untuk menjalankan operasi admin dan berkomunikasi dengan Master sedangkan HTable digunakan untuk memanipulasi data dan berkomunikasi dengan Wilayah.
Kesimpulan
Seperti yang telah kita lihat di sini, memiliki arsitektur Master/Slave tidak berarti bahwa setiap operasi melewati master. Untuk membaca dan menulis data, klien HBase, pada kenyataannya, langsung menuju ke Server Wilayah tertentu yang bertanggung jawab untuk menangani kunci baris untuk semua operasi data (HTable). Master digunakan oleh klien hanya untuk pembuatan tabel, modifikasi, dan operasi penghapusan (HBaseAdmin).
Meskipun konsep Master ada, klien HBase tidak bergantung padanya untuk operasi data dan cluster dapat terus menyajikan data bahkan jika master mati.
Matteo Bertozzi adalah Software Engineer di tim Platform dan HBase Committer.
Jika Anda tertarik dengan HBase, pastikan untuk mendaftar HBaseCon 2013 (13 Juni, San Francisco) – ACARA komunitas untuk kontributor, pengembang, admin, dan pengguna HBase. Tempat terbatas!