- HBase 集群滚动升级(2.4.17 → 2.5.6)
前期检查
hbase hbck 0 不一致
所有 Region 处于 OPENED 状态
备份元数据:
bash
hbase org.apache.hadoop.hbase.mapreduce.ExportSnapshot
snapshot_meta hdfs://backup/hbase-2417-meta
升级顺序
HMaster standby
停掉备 Master,替换 lib/ 目录 jar,启动后观察 WebUI 版本号正常。
RegionServer 逐台
脚本化:
bash
for rs in $(cat rs_list); do
grace_stop $rs # 先 disable_balancer,再 move_regions
yum install -y hbase-2.5.6
start_rs $rs
wait_for_online $rs
major_compact $rs # 触发文件格式校验
done
重启主 Master & 客户端
升级后首次启动会触发 hbase:meta 表 schema 变更(新增 regioninfo:seqnum 列族),耗时 30 s。
回退演练
保留旧安装目录 /opt/hbase-2.4.17.bak,回退只需切换软链并回滚 hbase:meta snapshot,测试 10 min 完成。
2. VM 性能压测与调优
KVM 嵌套层二 VM 磁盘 IO
工具:fio 3.36,宿主机 Intel P5510 7.68 TB NVMe。
场景:
缓存模式 none + 裸盘 virtio-blk
深度 32,4 k 随机写
结果:
层级 | IOPS | 延迟 (μs) | CPU 占用 |
---|---|---|---|
物理机 | 580 k | 55 | 18 % |
VMware 层一 | 420 k | 76 | 22 % |
KVM 层二 | 310 k | 103 | 28 % |
结论:嵌套损耗 25 %,可接受;把 io_uring 打开后层二提升到 350 k IOPS。 | |||
HugePages 加速 | |||
宿主机预留 4 G 1G-pages: | |||
bash |
echo 4 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
在层一 Ubuntu 的 /etc/default/grub 加:
GRUB_CMDLINE_LINUX="default_hugepagesz=1G hugepagesz=1G hugepages=4"
绑定 QEMU 进程:
bash
virsh edit kvm-guest
加
效果:TLB miss 从 3.2 % 降到 0.9 %,sysbench cpu 提升 8 %。
3. 杂项踩坑
HBase 升级后 BulkLoad 失败
报错 java.lang.UnsupportedOperationException: HFile version 3
解决:把 hbase.hfile.version 先降到 2,做完 BulkLoad 再改回 3 并 major_compact,让新文件自动升级格式。
VMware 16 → 17 许可证失效
升级后提示密钥不兼容,官方允许回退激活一次,需在 30 天内提交旧密钥工单,自动发放新序列号。