CentOS環境下HBase管理指南
在CentOS上管理HBase前,需完成以下依賴安裝與環境配置:
sudo yum install java-1.8.0-openjdk-devel安裝,安裝后通過java -version驗證版本(需顯示1.8.x)。wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz),解壓后配置zoo.cfg(設置dataDir、clientPort及集群節點server.x信息),啟動Zookeeper(./bin/zkServer.sh start)。core-site.xml(設置HDFS NameNode地址)、hdfs-site.xml(設置HDFS數據目錄)。wget http://mirror.bit.edu.cn/apache/hbase/stable/hbase-2.4.9-bin.tar.gz),解壓至指定目錄(如/opt/hbase)。/etc/profile,添加HBASE_HOME(HBase安裝目錄)與PATH(包含$HBASE_HOME/bin),執行source /etc/profile使配置生效。JAVA_HOME(JDK安裝路徑),若不使用HBase內置ZooKeeper,添加export HBASE_MANAGES_ZK=false。hrootdir(HBase數據存儲路徑,如hdfs://namenode:9000/hbase)、hbase.cluster.distributed(集群模式,設為true)、hbase.zookeeper.quorum(ZooKeeper集群地址,如zookeeper1,zookeeper2,zookeeper3)、hbase.zookeeper.property.dataDir(ZooKeeper數據目錄,如/var/lib/zookeeper)。hadoop001、hadoop002)。./bin/start-hbase.sh啟動HBase集群(該命令會自動啟動HMaster、ZooKeeper及所有RegionServer)。jps命令查看進程:Master節點應顯示HMaster、HQuorumPeer(ZooKeeper進程),RegionServer節點應顯示HRegionServer。./bin/hbase shell),執行status 'simple'查看集群狀態(顯示“0 active master, X servers”即為正常)。16010,如http://master-ip:16010),查看集群拓撲、表信息及性能指標。hbck檢查集群一致性(./bin/hbck),使用HBase Shell執行scan '表名'、count '表名'等命令查詢數據。regionservers文件,同步配置到所有節點,在新節點上啟動RegionServer(./bin/start-regionserver.sh),HBase會自動分配Region。regionservers文件中移除節點,停止該節點的RegionServer進程,HBase會將原RegionServer的Region遷移至其他節點。hbase shell中執行snapshot '表名', '快照名'),或使用ExportSnapshot工具導出至HDFS(./bin/hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -copy-to hdfs://namenode:9000/hbase_backup -snapshot 快照名)。create '表名', '列簇名', {NUMREGIONS => 10, SPLITALGO => 'HexStringSplit'})以均勻分布數據。/var/log/hbase/hmaster.log)、RegionServer日志(/var/log/hbase/regionserver.log)記錄關鍵錯誤信息,是故障定位的核心依據。hbase.regionserver.heapsize)、磁盤空間是否耗盡(清理hbase.data.dir目錄);若無法連接ZooKeeper,檢查ZooKeeper服務狀態及網絡連通性。hbase-site.xml中的內存參數,如hbase.regionserver.handler.count(增加處理請求的線程數,默認30,可根據節點配置調整至100+)、hbase.regionserver.heapsize(RegionServer堆內存,建議設置為物理內存的70%,如8GB內存設為5GB)、hbase.regionserver.global.memstore.upperLimit(MemStore上限,默認0.4,可調整至0.5以減少刷寫次數)。hbase.hregion.max.filesize(單個Region最大文件大小,默認10GB,可增大至20GB以減少Region數量)、hbase.hstore.compactionThreshold(觸發Compaction的最小文件數,默認3,可調整至5以減少IO壓力)、hbase.regionserver.thread.compaction.large(大Compaction線程數,默認1,可調整至2~4以加速Compaction)。Put對象批量提交)、過濾器(Scan時添加SingleColumnValueFilter減少數據傳輸)、關閉自動刷新(table.setAutoFlush(false),手動調用flushCommits())以提高寫入性能;讀取時設置合理的掃描范圍(Scan的startRow與stopRow),避免全表掃描。hfile.compression設為SNAPPY,減少存儲空間與IO開銷)、調整塊緩存(hbase.regionserver.block.cache.size設為堆內存的30%~50%,緩存熱點數據)。