1. HBase啟動失?。∕aster/RegionServer無法啟動)
start-hbase.sh
后,jps
無HMaster
或HRegionServer
進程,或日志報錯“Server is not running yet”。hbase-env.sh
中明確設置JAVA_HOME
(如export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_441
),并確保source ~/.bashrc
生效。hbase-site.xml
中的對應端口(如<property><name>hbase.master.port</name><value>16010</value></property>
)。start-dfs.sh
),且hbase.rootdir
(如hdfs://localhost:9000/hbase
)配置正確。hbase.zookeeper.quorum
(如localhost
)配置正確,且Zookeeper服務正常(zkServer.sh status
)。2. 無法連接HBase Master(16010端口無法訪問)
http://localhost:16010
報錯“Connection refused”,或hbase shell
連接時報錯“Connection refused”。jps
確認HMaster
是否存在,若不存在,查看HMaster
日志(位于logs
目錄)排查具體錯誤(如端口沖突、HDFS不可用)。ufw
)可能阻止16010端口,需執行sudo ufw allow 16010/tcp
開放端口。hbase-site.xml
中的hbase.master.port
是否與實際啟動端口一致,或hbase.zookeeper.quorum
是否指向正確的Zookeeper地址。3. 數據目錄權限問題(啟動時報“Permission denied”)
hbase.rootdir
指定的HDFS目錄或本地目錄)有讀寫權限。若使用本地目錄(如/tmp/hbase-${user.name}/hbase
),需執行sudo chown -R $USER:$USER /tmp/hbase-${user.name}
;若使用HDFS目錄,需確保HDFS用戶(如hadoop
)有權限(hdfs dfs -chmod -R 755 /hbase
)。4. Java版本不兼容
java -version
檢查當前Java版本,若不符合要求,通過sudo apt install openjdk-11-jdk
安裝正確版本,并在hbase-env.sh
中設置JAVA_HOME
。5. RegionServer啟動后長時間處于“Initializing”狀態
jps
顯示HRegionServer
進程存在,但HMaster
界面顯示RegionServer狀態為“Initializing”,無法正常服務。hdfs dfsadmin -report
顯示“Live datanodes”不為0),或重啟HDFS(stop-dfs.sh && start-dfs.sh
)。hbase-site.xml
中的hbase.zookeeper.quorum
和hbase.zookeeper.property.clientPort
(默認2181)配置是否正確,或Zookeeper服務是否延遲。hbase.regionserver.handler.count
設置過高),需調整hbase-env.sh
中的HBASE_HEAPSIZE
(如export HBASE_HEAPSIZE=2G
)。6. 表操作異常(如“TableNotFoundException”“NamespaceNotFoundException”)
create 'test', 'cf'
或get 'test', 'row1'
時報錯“Table not found”或“Namespace does not exist”。list
命令查看所有表)。my_ns:test
),需先創建命名空間(create_namespace 'my_ns'
)。HMaster
和RegionServer
均處于“running”狀態(jps
確認),再執行表操作。7. 寫入/讀取性能差(延遲高、吞吐量低)
put
命令響應慢,讀取時get
或scan
命令耗時久,監控顯示RegionServer負載高。HBASE_HEAPSIZE
設置為4G及以上)。hbase.regionserver.handler.count
(如30,增加處理線程數)、hbase.hregion.max.filesize
(如10G,減少Region分裂次數)、hfile.block.cache.size
(如0.4,增加讀緩存比例)。snappy
,hbase.hregion.compress
設置為true
)。setCacheBlocks(false)
禁用批量讀取的緩存,使用Filter
(如SingleColumnValueFilter
)減少不必要的數據掃描,避免全表掃描。