1 Giới thiệu

Hbase là opensource, distributed database phát triển bởi Apache Software foundation, được xây dựng dựa trên Google Big Table.
Hbase chủ yếu được viết bằng Java, có thể lưu trữ lượng dữ liệu cực lớn từ terabytes tới petabytes.
Rất nhiều doanh nghiệp lớn đang sử dụng Hbase như Facebook,Twitter, Yahoo, Adobe ..

2 Kiến trúc và các thành phần cơ bản

2.1 Các khái niệm chính cần biết trong Hbase

  • Hbase là column-oriented database
    (Tham khảo Other 4.2 so sánh Column-oriented và Row oriented storages)
  • Dự liệu được lưu trữ trong các table
  • Mỗi table bao gồm các column families và rows
  • Mỗi table phải có 1 thành phần được định nghĩa là Primary Key (row key)
  • Bất kỳ truy vấn nào tới table HBase đều phải sử dụng Primary Key
  • Mỗi column trong Hbase biểu thị thuộc tính tương ứng với đối tượng

2.2 HBase architecture

Kiến trúc HBase bao gồm 4 thành phần cơ bản

– HMaster
– HRegionserver
– HRegions
– Zookeeper
[![100715_1237_HBaseArchit2](https://i1.wp.com/vietnamlab.vn/wp-content/uploads/2016/08/100715_1237_HBaseArchit2.png?fit=942%2C476)](https://i1.wp.com/vietnamlab.vn/wp-content/uploads/2016/08/100715_1237_HBaseArchit2.png)

2.2.1 HMaster

HMaster là thành phần trung tâm trong kiến trúc của HBase.
HMaster giám sát tất cả các Region Server thuộc cluster.
Tất cả các thay đổi liên quan đến metadata đều thực hiện thông qua HMaster
Những vai trò quan trọng nhất được thực hiện bởi Hmaster
– Table : createTable, removeTable, enable, disable – ColumnFamily : add Column, modify Column
– Region : move, assign
**2.2.2 HRegionserver **
HRegionServer chịu trách nhiệm quản lý các region.
Khi Region server nhận writes and read requests từ client, nó sẽ assign request cho region riêng biệt, nơi mà đang chứa column family.
Tuy nhiên client có thể trực tiếp liên lạc với Hregion servers, mà không cần sự cho phép của HMaster.
**2.2.3 HRegions**
HRegions là thành phần kiến trúc cơ sở của Hbase cluster.Bao gồm 2 thành phần chính là Memstore và Hfile.
Đây chính là nơi lưu trữ dữ liệu của các table.
**2.2.4 Zookeeper**
Zookeeper là trung tâm giám sát và giữ các thông tin cấu hình.
**2.2.5 Data model**
[![HBaseArchit1](https://i1.wp.com/vietnamlab.vn/wp-content/uploads/2016/08/HBaseArchit1.png?fit=800%2C540)](https://i1.wp.com/vietnamlab.vn/wp-content/uploads/2016/08/HBaseArchit1.png)
Chi tiết hơn về Data model trong HBase:
– Mỗi table bao gồm nhiều row.
– Mỗi row được xác định bởi 1 rowkey duy nhất. (tương đương với primaryKey trong CSDL thông thường).
– Các row trong 1 table luôn được sắp xếp theo thứ tự từ điển theo rowkey.
– Mỗi row bao gồm nhiều columns khác nhau.
– Nhiều column được gộp thành column families.
– Column families được khai báo dưới dạng ”families: qualifier”
families là tên của columns families
qualifier để xác định column
– Column qualifier gần như là không giới hạn nội dung, độ dài , kiểu dữ liệu. Dữ liệu có thể được thêm không hạn chế vào column qualifier. Đây chính là một trong những yếu tố làm việc lưu trữ dữ liệu HBase rất linh hoạt và mềm dẻo.
[![Slide 1](https://i1.wp.com/vietnamlab.vn/wp-content/uploads/2016/08/ColumnQualifier.jpg?fit=452%2C362)](https://i1.wp.com/vietnamlab.vn/wp-content/uploads/2016/08/ColumnQualifier.jpg)
Các giá trị “null” sẽ không được lưu trữ trong cơ sở dữ liệu HBase.
Có thể xem lịch lịch sử dữ liệu trên mỗi row, được quản lý bởi version (timestamp).
Có thể giới hạn tối đa số lần lưu trữ.
### 3 Data flow in HBase
[![100715_1237_HBaseArchit3](https://i2.wp.com/vietnamlab.vn/wp-content/uploads/2016/08/100715_1237_HBaseArchit3.png?fit=684%2C551)](https://i2.wp.com/vietnamlab.vn/wp-content/uploads/2016/08/100715_1237_HBaseArchit3.png)
**Write operations**
Step 1: Client muốn write data, tạo kết nối lần đầu tiên với Regions server và sau đó là regions.
Step 2: Regions liên lạc với memstore, lưu lại liên kết với column family.
Step 3: Dữ liệu trước tiên sẽ được lưu trữ tại Memstore. Tại đây dữ liệu sẽ được sắp xếp (sorted) trước khi chuyển tới HFile.
Có 2 lý do chính cho việc sử dụng Memstore là :
– Hệ thống lưu trữ dữ liệu phân tán dựa trên row Key nên cần sắp xếp trước khi lưu trữ.
– Tối ưu hóa luồng ghi dữ liệu khi sử dụng kiến trúc The Log-Structured Merge Tree (Tham khảo Other 5.1)
**Read operations**
Step 4: Client muốn đọc data từ Regions
Step 5: Client có thể trực tiếp truy tập tới Mem store và yêu cầu dữ liệu.
Step 6: Client get data từ HFile.
### 4. HBase run modes

HBase có 2 chế độ chạy là Standalone và Distributed.
Ở chế độ Stanalone, HBase không sử dụng HDFS mà sử dụng local filesystem.
Tham khảo quickstart để start và thực hiện những thao tác cơ bản với HBase.
Distributed thì yêu cầu cần có Hadoop Distributed File System (HDFS)

5 Other

**5.1 The Log-Structured Merge Tree (LSM-trees)**
Các cơ sở dữ liệu No-SQL thường sử dụng LSM-trees như là 1 kiến trúc xử lý lưu trữ dữ liệu. HBase cũng không phải ngoại lệ.
Đặc trưng chung của việc áp dụng kiến trúc LSM-trees là tối ưu hoá write performance và không bao giờ overwrite dữ liệu đã tồn tại.
(Không overwrite nhưng có thể xoá và dành bộ nhớ trống cho dữ liệu khác. )
**5.2 Column-oriented và Row oriented storages**
http://www.guru99.com/hbase-architecture-data-flow-usecases.html
**Column-oriented Database****Row oriented Database**
-
When the situation comes to process and analytics we use this approach. Such as **Online Analytical Processing** and it’s applications.
-
**Online Transactional process** such as banking and finance domains use this approach.
-
The amount of data that can able to store in this model is very huge like in terms of petabytes
-
It is designed for a small number of rows and columns.
### 6 Kết luận

HBase cùng với hệ sinh thái Apache Hadoop là công cụ tuyệt vời, miễn phí mạnh mẽ cho các doanh nghiệp cần giải quyết các bài toán liên quan đến dữ liệu lớn. Tuy nhiên HBase có những đặc thù riêng và chỉ nên được sử dụng đối với những trường hợp nhất định. Ví dụ như HBase rất thích hợp với yêu cầu xử lý lượng lớn dữ liêu đọc ghi liên tục nhưng không thích hợp với các yêu cầu đòi hỏi truy vấn phức tạp.

Tham khảo
http://www.guru99.com/hbase-architecture-data-flow-usecases.html
http://www.cyanny.com/2014/03/13/hbase-architecture-analysis-part1-logical-architecture
http://www.stratapps.net/intro-hbase.php
http://www.ymc.ch/en/introduction-to-hbase