Hbase, một giải pháp lưu trữ dữ liệu lớn (Big Data) ngày càng trở nên phổ biến và được ưa chuộng bởi nhiều tập đoàn công nghệ. Điều này đặt ra câu hỏi quan trọng: Hbase là gì và tại sao nó lại thu hút sự chú ý lớn từ cộng đồng công nghiệp?
Giới thiệu về Hbase là gì
Hbase là một hệ quản trị cơ sở dữ liệu được xây dựng trên nền tảng Hadoop, là một dự án mã nguồn mở thuộc sở hữu của Apache, được phát triển và mở rộng từ dự án lưu trữ Bigdata của Google (được xây dựng dựa trên Google Big Table). Sử dụng ngôn ngữ lập trình Java, Hbase có khả năng lưu trữ dữ liệu với quy mô từ terabytes đến petabytes.
Hbase thực tế là một hệ thống NoSQL điển hình, nên các bảng trong Hbase không có một schema cố định và không có mối quan hệ giữa chúng. Hiện nay, nhiều công ty và tập đoàn công nghệ hàng đầu trên thế giới đang chọn lựa Hbase cho nhu cầu lưu trữ dữ liệu lớn, trong số đó có Facebook, Twitter, Yahoo, Adobe và nhiều đối tác khác.
Các tính năng của Hbase
- 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 một 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 test, json, xml. 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.
- 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…
- Lưu trữ dữ liệu đáng tin cậy, được các hãng công nghệ trên thế giới sử dụng trên quy mô lớn.
Mô hình của Hbase là gì
Data model
Hbase, một hệ cơ sở dữ liệu không gian làm việc với dữ liệu lớn, chia sẻ nhiều đặc điểm chung với Big Table bởi nó được xây dựng dựa trên kiến trúc tiêu chuẩn của Google Big Table. Cơ sở dữ liệu này sử dụng một cấu trúc tổ chức dữ liệu được xác định bởi các khóa, bao gồm “Table, Rowkey, Column Families, Column, Timestamp”. Trong Hbase, dữ liệu được tổ chức vào các bảng, mỗi bảng chứa hàng tỷ dòng dữ liệu, với mỗi dòng được xác định bởi một khóa chính duy nhất, hay rowkey, tương tự như khóa chính trong cơ sở dữ liệu SQL truyền thống.
Mỗi dòng (row) trong Hbase lại bao gồm nhiều cột (column), nhóm lại thành các gia đình cột (column families). Mỗi cell trong cột chứa một giá trị cụ thể, được đặt tên là “version (timestamp) value”, đồng thời cung cấp thông tin về thời điểm cập nhật.
Một đặc điểm phân biệt Hbase so với các hệ cơ sở dữ liệu quan hệ là khả năng tạo mới các cột trong quá trình hoạt động của hệ thống, một khía cạnh mà các hệ cơ sở dữ liệu truyền thống thường không có. Ngoài ra, giá trị “null” (rỗng) không được lưu trữ trong cơ sở dữ liệu Hbase, tạo điều kiện cho việc quản lý dữ liệu một cách hiệu quả và tối ưu.
Auto-sharding
Region chính là đơn vị lưu trữ cơ bản của Hbase, mỗi region sẽ chứa một dải các dòng xếp liền nhau và chúng tự động chia làm hai nếu như dữ liệu bên trong trở nên quá lớn. Và mỗi region sẽ được chứa trong một RegionServer duy nhất.
HFile: lưu trữ dữ liệu của HBase.
HLog: lưu trữ các Log để có thể recovery lại quá trình ghi dữ liệu nếu gặp sự cố.
HDFS: distributed file system mà HBase sử dụng.
Kiến trúc HBase
Kiến trúc HBase bao gồm 4 thành phần cơ bản:
- HMaster: chính là thành phần trung tâm trong kiến trúc của Hbase, nó giám sát tất cả các RegionServer. Những thay đổi liên quan đến metadata đều được thực hiện thông quan HMaster.
- HRegionserver: chịu trách nhiệm quản lý trực tiếp các region
- Hregions: là thành phần kiến trúc cơ sở của Hbase cluster, nó bao gồm 2 thành phần chính là Memstore và Hfile
- Zookeeper: là trung tâm giám sát và lưu trữ thông tin các cấu hình.
Cách thức lưu trữ và tìm kiếm của Hbase
Cách thức lưu trữ
Hbase là một hệ thống lưu trữ dữ liệu phân tán, trong đó các bảng (table) chứa các hàng (row), và mỗi bảng có khả năng định nghĩa nhiều nhóm cột (column families – cf). Mỗi hàng trong Hbase yêu cầu có một khóa chính duy nhất để quản lý.
Hệ thống này cũng cho phép theo dõi lịch sử của dữ liệu trên mỗi hàng thông qua các timestamp. Điều này có nghĩa là mỗi khi dữ liệu được cập nhật, hệ thống sẽ lưu giữ phiên bản trước đó của dữ liệu với timestamp tương ứng. Điều này giúp người dùng theo dõi sự thay đổi của dữ liệu theo thời gian.
Hơn nữa, Hbase cung cấp khả năng giới hạn số lượng phiên bản lịch sử mà hệ thống lưu giữ trên mỗi hàng. Việc này giúp tối ưu hóa việc sử dụng dung lượng lưu trữ bằng cách loại bỏ các phiên bản lịch sử cũ khi đã đạt đến giới hạn được đặt. Điều này có ý nghĩa rằng sau mỗi lần cập nhật dữ liệu, các phiên bản cũ hơn sẽ bị xóa, giữ cho lịch sử lưu trữ dữ liệu được kiểm soát và hiệu quả.
Cách thức tìm kiếm
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 chạy Hbase nên sẽ cần khởi động bằng lệnh “./bin/hbase thrift start” .Thrift cung cấp 4 comparator để lọc dữ liệu đó là: “binary, binary prefix, regexstring, substring”
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 cầ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.
Hướng dẫn cài đặt Hbase ở chế độ Distributed
Bạn có thể download bộ cài Hbase tại đây: http://www-us.apache.org/dist/hbase/.Hoặc bạn có thể vào google, gõ Hbase free để tìm kiếm nhiều nguồn khác nhau.
Tiến hành giải nén Hbase vào thư mục /opt/: $ tar -xzf hbase-0.98.18-hadoop2-bin.tar.gz
Thêm biến môi trường vào tập tin ~/.bash_profile với nội dung sau:
export HBASE_HOME=”/opt/hbase”
export PATH=”$HBASE_HOME/bin:$PATH”
Kiểm tra xem đã cài đặt thành công chưa bằng lệnh: hbase version
Sửa nội dung tập tin /opt/hbase/conf/hbase-env.sh với nội dung sau:
export JAVA_HOME=/usr/java/default
export HBASE_MANAGES_ZK=true
export HBASE_PID_DIR=/opt/hbase/var
Tiếp tục sửa nội dung tập tin /opt/hbase/conf/hbase-site.xml và thêm vào nội dung sau;
hbase.master
sglamp.edumall.co.th:60000
hbase.master.info.port
60010
hbase.rootdir
hdfs://sglamp.edumall.co.th:9000/hbase
hbase.cluster.distributed
true
hbase.zookeeper.property.dataDir
hdfs://sglamp.edumall.co.th:9000/zookeeper
hbase.zookeeper.quorum
sglamp2.edumall.co.th
hbase.zookeeper.property.clientPort
2181
hbase.zookeeper.property.maxClientCnxns
1000
Để khởi động Hbase ta chạy lệnh sau: /opt/hbase/bin/shServer.sh start
Để tắt Hbase ta chạy lệnh sau: /opt/hbase/bin/shServer.sh stop
Hbase, một giải pháp lưu trữ dữ liệu lớn (Big Data), là một ứng dụng linh hoạt và hoàn toàn miễn phí. Tuy nhiên, quyết định sử dụng Hbase trong dự án của bạn cần được đánh giá dựa trên quy mô thực tế của dự án. Việc xác định liệu dự án có đủ lớn để tirờn Hbase hay không đặt ra như một yếu tố quan trọng.
Khi đã quyết định sử dụng Hbase, việc tiếp theo quan trọng là xác định cấu trúc dữ liệu phù hợp. Bạn cần đặt ra các quyết định về column family và primary key cho các hàng trong các bảng một cách cẩn thận. Việc này sẽ ảnh hưởng trực tiếp đến hiệu suất và khả năng mở rộng của hệ thống.
Chúc các bạn thành công trong việc đưa ra quyết định và triển khai Hbase trong dự án của mình!