- HBase 数据库
架构理解:
HMaster:管理 RegionServer 的负载均衡、Region 分配等。
RegionServer:负责数据的读写操作,管理多个 Region。
ZooKeeper:协调集群状态,监控 RegionServer 存活。
HDFS:底层存储,HBase 数据以 HFile 格式存储在 HDFS 上。
数据模型:
表(Table):由行键(RowKey)、列族(Column Family)、列限定符(Qualifier)、时间戳(Timestamp)组成。
RowKey 设计原则:避免热点(如加盐、哈希、反转),长度适中(建议 10-100 字节)。
列族优化:不超过 3 个,过多会触发频繁 Flush 和 Compaction。
读写流程:
写路径:先写 WAL(Write-Ahead Log),再写入 MemStore,MemStore 满后 Flush 成 HFile。
读路径:先检查 BlockCache(LRU 缓存),再读 MemStore 和 HFile(通过 BloomFilter 过滤)。
调优参数:
hbase.hregion.max.filesize:控制 Region 大小(默认 10GB,调大减少 Split)。
hbase.regionserver.handler.count:RPC 线程数(建议 100-200,视内存调整)。
hbase.bucketcache.ioengine:启用堆外缓存(如 offheap 或 file:/path/to/cache)。 - VM 虚拟机实践
克隆与快照:
链接克隆:依赖原始虚拟机,节省磁盘空间(但原始 VM 损坏则失效)。
完整克隆:独立副本,占用双倍空间,适合长期隔离环境。
快照链:避免超过 3 层,合并快照用 vmware-vdiskmanager -k 压缩磁盘。
网络模式:
NAT:VM 共享主机 IP,端口转发需手动配置(如 vmnet8 网卡)。
桥接:VM 直接接入物理网络,需独立 IP(适合集群测试)。
仅主机模式:隔离环境,通过 vmnet1 与主机通信(模拟内网)。
性能优化:
关闭虚拟化引擎的 “侧通道缓解”(提升 10%-20% 性能,但降低安全性)。
预分配磁盘空间(避免动态扩展导致的碎片化)。
启用 虚拟化 CPU 计数器(如 vt-x / amd-v)以支持 64 位嵌套虚拟化。 - 问题记录
HBase 启动失败:
报错 org.apache.hadoop.hbase.PleaseHoldException: Master is initializing,因 ZooKeeper 未清理旧数据。解决:
bash
zkCli.sh rmr /hbase-unsecure/meta-region-server