HBase的日志是故障診斷的核心依據,關鍵日志路徑為/var/log/hbase/
(如hbase-*-master-*.log
、hbase-*-regionserver-*.log
)。使用tail -f
命令實時查看日志,重點搜索ERROR
、WARN
、FATAL
等關鍵字,可快速定位啟動失敗、Region無法上線、連接超報等問題根源。
通過jps
命令查看HBase關鍵進程是否運行:HMaster(負責集群管理)、HRegionServer(負責數據存儲)。若進程未啟動,需檢查進程是否被系統殺死(可通過dmesg
查看OOM Killer記錄),或手動啟動服務(systemctl start hbase
)。
重點檢查hbase-site.xml
(集群核心配置)和hbase-env.sh
(環境變量):
hbase.cluster.distributed
:分布式模式下必須設為true
;hbase.rootdir
:指向正確的HDFS路徑(如hdfs://namenode:9000/hbase
);hbase.zookeeper.quorum
:填寫ZooKeeper集群地址(如node1,node2,node3
)。HBase依賴穩定的網絡環境,需檢查:
ping
測試集群節點間網絡是否可達;netstat -anp | grep <端口>
(如HMaster端口60000
、RegionServer端口16020
)查看端口是否被占用,若被占用需停止占用進程或修改hbase-site.xml
中的端口號;firewall-cmd --list-ports
查看防火墻是否放行HBase端口,未放行則添加規則(firewall-cmd --add-port=<端口>/tcp --permanent
)。資源不足是HBase啟動或運行失敗的常見原因,需檢查:
free -m
查看系統內存,確保HBase分配的堆內存(hbase.env.sh
中HBASE_HEAPSIZE
)不超過物理內存的70%(避免GC停頓);df -h
查看HBase數據目錄(hbase.rootdir
指定的HDFS路徑)的磁盤空間,剩余空間需大于總容量的10%(避免寫入阻塞);top
查看CPU使用率,若長期超過80%需優化查詢或擴容節點。hbase hbck
:檢查集群健康狀態,修復元數據不一致(如region未分配、表狀態異常),命令:hbase hbck -j
(顯示詳細信息);hbase shell
:通過命令交互式診斷,常用命令:
status 'detailed'
:查看集群詳細狀態(包括RegionServer數量、region分布);count 'table_name'
:統計表數據量(驗證表是否可訪問);scan 'table_name', {LIMIT=>5}
:查看表數據(驗證讀功能)。HBase依賴ZooKeeper進行協調,需檢查:
systemctl status zookeeper
查看是否運行,未運行則啟動(systemctl start zookeeper
);zkCli.sh -server localhost:2181
進入命令行,執行ls /hbase
查看HBase節點是否存在(正常應返回meta-region-server
等節點);hbase-site.xml
中的hbase.zookeeper.connection.timeout
(默認30000ms,可根據網絡情況增大)。/var/log/hbase/hbase-*-regionserver-*.log
),常見原因包括內存溢出(OOM)、GC停頓過長(調整hbase.regionserver.handler.count
增加處理線程)、硬件故障(檢查磁盤健康狀態smartctl -a /dev/sda
);cp $HBASE_HOME/conf/hbase-site.xml.default $HBASE_HOME/conf/hbase-site.xml
);hbase hbck -j
修復,或從備份恢復數據。