1. Hbase, cách thức lưu
trữ và tìm kiếm
Tác giả : Bạch Văn Tuân
Website : http://dethoima.com
2. Giới thiệu
●
●
●
●
là hệ quản trị cơ sở dữ liệu dựa trên Hadoop, đây là mã
nguồn mở nằm trong dự án của Apache, phát triển và mở
rộng từ dự án lưu trữ big-data của Google.
Ai sử dụng Hbase: Facebook, Adobe, Twitter, Yahoo, etc,
xem thêm ở đây
Phiên bản mới nhất : 0.96.1
Có thể xem thêm bảng ánh xạ mức độ hỗ trợ giữa các
phiên bản Hbase và Hadoop ở đây. Hiện tại các phiên
bản Hadoop 2.x đều đã hỗ trợ phiên bản mới nhất
3. Tính năng
●
●
●
●
●
●
Thời gian lọc dữ liệu nhanh
Lưu trữ dữ liệu big-data, có thể lưu trữ hàng tỷ rows và
columns
Có độ ổn định và giảm thiểu rủi ro(failover) khi l ưu 1 l ượng
lớn dữ liệu.
Truy vấn dữ liệu theo thời gian thực.
Cung cấp giao thức REST, giúp trả về dữ liệu theo các định
dạng khác nhau như plain text,json,xml. Xem thêm ở đây.
Nhờ đó chúng ta có thể khai thác dữ liệu không c ần qua API
từ phần mềm thứ 3.
4. Tính năng (cont)
●
●
●
Nhât quán cơ chế đọc và ghi dữ liệu dựa trên Hadoop
Nhiều extension hỗ trợ Hbase cho nhiều ngôn ngữ như
java,php,python,etc
Lưu trữ dữ liệu đáng tin cậy, được các hãng lớn sử dụng
trên quy mô lớn
5. Cách thức lưu trữ
●
●
●
●
●
Hbase lưu trữ các row nằm trong các table
Mỗi table có thể định nghĩa nhiều column families(cf)
khác nhau
Mỗi row phải được quản lý bởi 1 khóa chính duy nhất
Có thể xem lịch sử lưu dữ liệu trên mỗi row, được quản lý
bởi timestamp
Chúng ta có thể giới hạn history lưu tối đa là bao nhiêu
lần( giúp tiết kiệm dung lượng dữ liệu sau 1 thời gian sử
dụng, mỗi lần update dữ liệu thì history cũ hơn sẽ bi xóa )
6. Cách thức lưu trữ (ví dụ)
●
●
Tôi sẽ tạo 1 table với tên là 'accounts' với column families
là 'info' và 'extra'
column families có thể là bất kỳ từ khóa nào mà bạn
thích.
●
Info: tôi lưu tên, họ, số điện thoại,email
●
Extra: tôi lưu thông tin cha, mẹ, anh, chị, vợ, con
●
Mỗi account sẽ có duy nhất 1 user_name nên tôi sẽ dùng
user_name làm khóa cho row (các bạn có thể dùng email
thể làm khóa)
7. Cách thức lưu trữ(ví dụ)
Id
Cf
Attribute
Value
Timestamp
nam
info
first_name
Nam
1
last_name
Nguyễn Văn
1
address
17 ABC
1
phone
01234556789
1
father
Tên bố nam
1
mother
Tên mẹ nam
1
phone
09999999999
3
address
18 ABC
3
first_name
John
2
last_name
Mark
2
address
18 BCD
2
extra
info
john
info
8. Cách thức lưu trữ(giải thích ví dụ)
●
●
●
●
●
Trong ví dụ trên tôi đã lưu 2 rows với id là nam va john
chính là các user_name
nam có 1 lần khởi tạo dữ liệu ở timestamp=1 và 1 lần cập
nhật ở timestamp=3.
join có 1 lần khởi tạo dữ liệu ở timestamp =2.
Lưu ý : timestamp trong thực tế là dãy số như
123456789 lưu timestamp của hệ thống
Như vậy “nam” khởi tạo trước rồi đến khởi tạo “john”, sau
đó “nam” được cập nhật(address,phone) lên version 2.
9. Tìm kiếm dữ liệu
●
●
●
Phương pháp phổ biển nhất để tìm kiếm dữ liệu trong
Hbase là dùng thrift, bình thường thrift không được khởi
động khi chay Hbase nên sẽ cần khởi động bằng lệnh
“./bin/hbase thrift start”
Xem thêm về các method thrift hỗ trở ở đây
Lưu ý về comparator: thrift cung cấp 4 comparator để lọc
dữ liệu đó là 'binary','binaryprefix','regexstring','substring'
10. Tìm kiếm dữ liệu(cont )
comparator
Compare
filter string
return
binary
>
binary:abc
những giá trị binary lớn hơn 'abc'
binaryprefix
=
Binaryprefix:
abc
những giá trị binary mà bắt đầu
với abc
regrexstring
=
regrexstring:
a*bc
Những giá trị mà bắt đầu có
substring nằm trong a và bc
substring
!=
substring:abc Những giá trị không bắt đầu bởi
'abc'
11. Tìm kiếm dữ liệu (cont)
●
Tôi sẽ hướng dẫn 2 method thường dùng là
SingleColumnValueFilter và DependentColumnFilter
–
SingleColumnValueFilter thường được sử dụng để lọc
1 column family attribute
–
DependentColumnFilter thường được sử dụng để lọc
dựa trên 2, hay nhiều column family attribute
12. Tìm kiếm dữ liệu(cont)
●
Ví dụ về SingleColumnValueFilter
–
●
"SingleColumnValueFilter (‘info’, ‘phone’, =, 'regrexstring:^092')" : s ẽ
hiển thị toàn bộ row nào mà có info:phone mà bắt đầu với đầu số 092
Ví dụ về DependentColumnFilter
–
"DependentColumnFilter ('info','first_name', false, =, 'nam') AND
DependentColumnFilter ('extra','father', false, =, 'Dung')" : sẽ hiển thị
toàn bộ row mà mà info:first_name ='nam' và extra:father = 'Dung'
13. Sql cho Hbase
Một cách khác để dễ dàng sử dụng truy vấn dữ liệu trong
Hbase hơn là dùng câu lệnh sql để truy vấn, để làm được
điều này bạn phải cài đặt thêm hive. Sau khi cài đặt xong
thì mọi thao tác xử lý dữ liệu đều có thể dùng thông qua
câu lệnh sql, trong đó hỗ trợ cả join
14. L ờ i k ết
Hbase là giải pháp lưu trữ dữ liệu lớn, linh hoat và miễn
phí, đều quan trọng là dự án của bạn có thực sự đủ lớn
để dùng Hbase và một khi dùng Hbase thì bạn phải xác
định trước cấu trúc dữ liệu để xác định các colum family
và primary key cho row trong các table thích hơp.