Cấu hình file hbase-site.xml để chuyển sang chế độ Distributed
Bước đầu tiên để chuyển từ chế độ Pseudo-Distributed sang Distributed là thay đổi cấu hình trong file hbase-site.xml trên node Master. File này sẽ xác định địa chỉ của HDFS, nơi HBase sẽ lưu trữ dữ liệu, và các tham số kết nối giữa Master và RegionServers.
Trên node Master (giả sử tên là hbase-master), bạn cần chỉnh sửa file cấu hình chính. Thay vì dùng hdfs://localhost, bạn phải chỉ định tên cluster HDFS đã được tạo ở Phần 2.
Mở file cấu hình với quyền root hoặc user có quyền ghi vào thư mục cấu hình của HBase:
sudo nano /opt/hbase/conf/hbase-site.xml
Thay thế toàn bộ nội dung của file bằng cấu hình sau. Lưu ý thay đổi giá trị hbase.zookeeper.quorum và hbase.master nếu tên host của bạn khác với ví dụ.
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop-namenode:9000/hbase</value>
<description>HBase directory in HDFS.</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>Turn on distributed mode.</description>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop-namenode,hadoop-datanode1,hadoop-datanode2</value>
<description>List of ZooKeeper quorum nodes. Use the same nodes as HDFS NameNode if not using standalone ZK.</description>
</property>
<property>
<name>hbase.master</name>
<value>hbase-master:16000</value>
<description>Host and port where the HBase Master runs.</description>
</property>
<property>
<name>hbase.master.info.port</name>
<value>16010</value>
</property>
<property>
<name>hbase.regionserver.port</name>
<value>16030</value>
</property>
</configuration>
Kết quả mong đợi: File được lưu thành công. Cấu hình này báo cho HBase biết nó đang chạy trên cụm phân tán, dữ liệu lưu trên HDFS (không phải local disk), và cần kết nối đến ZooKeeper trên các node đã định danh.
Để verify, hãy chạy lệnh kiểm tra cú pháp XML:
xmllint --noout /opt/hbase/conf/hbase-site.xml && echo "XML syntax valid"
Đầu ra phải là dòng XML syntax valid mà không có lỗi nào.
Cấu hình file regionservers để định danh các node RegionServer
Trong chế độ Distributed, HBase Master cần biết danh sách các node sẽ đóng vai trò là RegionServer. File regionservers chứa danh sách này, mỗi dòng là một tên host.
Vẫn trên node Master, tạo hoặc chỉnh sửa file regionservers trong thư mục conf.
sudo nano /opt/hbase/conf/regionservers
Thêm tên của các node Worker (Datanode) vào file. Không để dòng trống hoặc comment ở cuối file để tránh lỗi parse.
hadoop-datanode1
hadoop-datanode2
Kết quả mong đợi: File chứa chính xác tên host của các node sẽ chạy RegionServer. Master sẽ cố gắng khởi tạo tiến trình RegionServer trên các host này khi cụm được bật.
Để verify, dùng lệnh cat để xem lại nội dung:
cat /opt/hbase/conf/regionservers
Đầu ra phải khớp với danh sách tên host bạn vừa nhập.
Cài đặt HBase trên tất cả các node Worker (RegionServer)
Để các node Worker hoạt động như RegionServer, chúng cần có phần mềm HBase và các file cấu hình giống hệt như trên node Master. Phương pháp tốt nhất là copy toàn bộ thư mục cài đặt HBase từ Master sang các Worker qua mạng.
Trên node Master, thực hiện lệnh scp để gửi thư mục HBase sang các node Worker. Đảm bảo SSH key đã được cấu hình không cần mật khẩu (passwordless SSH) giữa các node.
scp -r /opt/hbase root@hadoop-datanode1:/opt/
scp -r /opt/hbase root@hadoop-datanode2:/opt/
Kết quả mong đợi: Thư mục /opt/hbase được tạo trên cả hai node Worker với nội dung giống hệt node Master.
Tiếp theo, bạn cần đồng bộ file cấu hình hbase-site.xml và regionservers đã chỉnh sửa ở bước 1 và 2 sang các node Worker. Điều này đảm bảo RegionServer biết kết nối về đâu và đọc cấu hình HDFS như thế nào.
scp /opt/hbase/conf/hbase-site.xml root@hadoop-datanode1:/opt/hbase/conf/
scp /opt/hbase/conf/hbase-site.xml root@hadoop-datanode2:/opt/hbase/conf/
scp /opt/hbase/conf/regionservers root@hadoop-datanode1:/opt/hbase/conf/
scp /opt/hbase/conf/regionservers root@hadoop-datanode2:/opt/hbase/conf/
Kết quả mong đợi: Các file cấu hình trên Worker đã được cập nhật.
Trên từng node Worker (ví dụ hadoop-datanode1), bạn cần chỉnh sửa file hbase-env.sh để đảm bảo biến HBASE_HOME và HBASE_CONF_DIR trỏ đúng đường dẫn, và quan trọng nhất là cấu hình biến HBASE_MANAGES_ZK thành false nếu bạn đang dùng ZooKeeper riêng biệt (thường là dùng chung với Hadoop). Nếu dùng ZooKeeper mặc định của HBase, để nguyên true. Trong kịch bản này, giả sử chúng ta dùng ZK chung của Hadoop đã cài ở Phần 2.
sudo nano /opt/hbase/conf/hbase-env.sh
Thêm hoặc sửa dòng sau trong file (nếu chưa có):
export HBASE_MANAGES_ZK=false
Kết quả mong đợi: RegionServer trên Worker sẽ không cố gắng khởi động một cụm ZooKeeper riêng, mà kết nối vào cụm ZK đã có sẵn của Hadoop.
Để verify trên Worker, chạy lệnh kiểm tra biến môi trường:
source /opt/hbase/conf/hbase-env.sh && echo $HBASE_MANAGES_ZK
Đầu ra phải là false.
Khởi động Master và RegionServer trên các node tương ứng
Bây giờ, tất cả các node đã sẵn sàng. Chúng ta sẽ khởi động cụm HBase. Trong chế độ Distributed, bạn chỉ cần chạy lệnh start trên node Master. Script khởi động sẽ tự động phân tán lệnh để chạy RegionServer trên các node được liệt kê trong file regionservers.
Trên node Master, chạy lệnh:
hbase-master /opt/hbase/bin/start-hbase.sh
Hoặc nếu bạn đã thêm biến môi trường vào .bashrc:
start-hbase.sh
Kết quả mong đợi: Terminal sẽ in ra các dòng thông báo "Starting HBase Master" và "Starting HBase RegionServer" cho từng node. Nếu SSH key chưa được setup, bạn sẽ bị prompt yêu cầu nhập password, khi đó hãy dừng lại và cấu hình SSH key trước.
Để verify trạng thái khởi động, hãy kiểm tra các tiến trình đang chạy trên cả Master và Worker.
ps -ef | grep hbase
Trên node Master, bạn phải thấy tiến trình hbase-master và hbase-regionserver (vì Master cũng có thể chạy RegionServer nếu tên nó có trong file regionservers, nhưng ở đây ta chỉ mong thấy Master).
jps
Trên node Worker (Datanode), lệnh jps phải trả về HRegionServer và Master (nếu Worker cũng chạy Master, nhưng ở đây chỉ cần thấy HRegionServer).
Để kiểm tra xem RegionServer đã đăng ký vào Master chưa, chạy lệnh shell của HBase:
hbase-shell
Sau khi vào prompt hbase(main):000:0>, gõ lệnh:
list_regionservers
Đầu ra phải hiển thị danh sách các node Worker đã online (ví dụ: hadoop-datanode1,16030,1715623456789).
Kiểm tra trạng thái cụm HBase qua HBase Master Web UI
Web UI là công cụ trực quan nhất để xác nhận cụm HBase đang hoạt động ổn định. Giao diện này chạy trên port 16010 (theo cấu hình hbase.master.info.port đã đặt ở bước 1).
Từ bất kỳ máy nào có thể truy cập vào node Master, mở trình duyệt web và nhập địa chỉ IP của node Master:
http://<IP-of-hbase-master>:16010
Ví dụ cụ thể nếu IP là 192.168.1.10:
http://192.168.1.10:16010
Kết quả mong đợi: Bạn sẽ thấy giao diện "HBase Master Status".
Trên trang này, kiểm tra các mục sau:
- Regionservers: Phải hiển thị số lượng RegionServer đang online (ví dụ: 2/2 active). Nếu thấy số 0, hãy kiểm tra lại file
regionservers và firewall.
- Cluster ID: Phải có giá trị, chứng tỏ Master đã khởi tạo thành công.
- Region count: Số lượng vùng dữ liệu đang quản lý (mặc định thường là 3 vùng META, SYSTEM, và -ROOT-).
Để verify sâu hơn qua command line, bạn có thể xem logs để đảm bảo không có lỗi kết nối HDFS:
tail -f /opt/hbase/logs/hbase-master-hbase-master-*.log
Đầu ra phải không có dòng nào bắt đầu bằng ERROR hoặc Exception liên quan đến Connection refused hoặc Failed to connect to HDFS.
Điều hướng series:
Mục lục: Series: Triển khai Database phân tán với Apache HBase trên Ubuntu 24.04
« Phần 3: Cài đặt và cấu hình Apache HBase Standalone và Pseudo-Distributed
Phần 5: Quản lý Table, Schema và các thao tác dữ liệu nâng cao »