当前位置: 首页 > news >正文

HBase设计:看上去很美

HBase是模仿google bigtable的开源产品,又是hadoop的衍生品,hadoop作为离线计算系统已经得到业界的普遍认可,并经过N多公司大规模使用的验证,自然地认为Hbase也将随之获得成功。

《HBase: The Definitive Guide》第8章讲述hbase的架构,从架构上看,其架构很完美:

LSM - 解决磁盘随机写问题(顺序写才是王道);

HFile - 解决数据索引问题(只有索引才能高效读);

WAL - 解决数据持久化(面对故障的持久化解决方案);

zooKeeper - 解决核心数据的一致性和集群恢复;

Replication - 引入类似MySQL的数据复制方案,解决可用性;

此外还有:自动分拆Split、自动压缩(compaction,LSM的伴生技术)、自动负载均衡、自动region迁移。

看上去如此美好,完全无需人工干预,貌似只要将Hbase搭建好,一切问题Hbase都将应对自如。面对如此完美的系统,不动心很难。

但是,如此完美的系统或许也意味着背后的复杂性是不容忽略的。hbase的代码量也不是一星半点的。假如系统工作不正常,谁来解决?这是至关重要的。

性能与测试

Hbase系统自身提供了性能测试工具:./bin/hbase org.apache.hadoop.hbase.PerformanceEvaluation,该工具提供了随机读写、多客户端读写等性能测试功能。根据工具测试的结果看,hbase的性能不算差。

对于hbase这样的系统长期稳定运行比什么都重要。然而,这或许就不那么"完美"。

测试版本:hbase 0.94.1、 hadoop 1.0.2、 jdk-6u32-linux-x64.bin、snappy-1.0.5.tar.gz

测试hbase搭建:14台存储机器+2台master、DataNode和regionserver放在一起。

hbase env配置:

View Code

hbase-size.xml关键配置(根据《HBase: The Definitive Guide》第11章优化):

View Code

测试一:高并发读(4w+/s) + 少量写(允许分拆、负载均衡)

症状:1-2天后,hbase挂掉(系统性能极差,不到正常的10%)。其实并非全部挂掉,而是某些regionserver挂了,并在几个小时内引发其他regionserver挂掉。系统无法恢复:单独启regionserver无法恢复正常。重启后正常。

测试二:高并发读(4w+/s)

症状:1-2天后,hbase挂掉(系统性能极差,不到正常的10%)。后发现是由于zookeeper.session.timeout设置不正确导致(参见regionserver部分:http://hbase.apache.org/book.html#trouble)。重启后正常。

测试三:高并发读(4w+/s)

症状:1-2天后,hbase挂掉(系统性能极差,不到正常的10%)。从log未看出问题,但regionserver宕机,且datanode也宕机。重启后正常。

测试四:高并发读(4w+/s)+禁止分拆、禁止majorcompaction、禁止负载均衡(balance_switch命令)

症状:1-2天后,hbase挂掉(系统性能极差,不到正常的10%)。从log未看出问题,但regionserver宕机,且datanode也宕机。重启后正常。

测试期间,还发现过:无法获取".MATE."表的内容(想知道regionserver的分布情况)、hbase无法正确停止、hbase无法正确启动(日志恢复失败,文件错误,最终手动删除日志重启)。

其他缺陷

HBase使用JAVA开发,看上去很美的GC使用中代价可不小。Hbase为了保证数据强一致性,每个key只能由一个regionserver提供服务。在下列情况下,Hbase服务质量都将受损:

1) GC CMS -- CMS回收内存极其耗时,当hbase运行1-2天后,CMS可能耗时10分钟,这期间该regionserver无法服务。CMS经常被触发,这意味着hbase的服务经常会因为GC操作而部分暂停!

2) regionserver宕机 - 为了强一致性,每个key只由一个regionserver提供服务,故当regionserver宕机后,相应的region即无法服务!

3) major compaction、split不可控 - 大量磁盘操作将极大影响服务。(levelDB也需要major compaction,只是使用更加可控的方式做压缩,比如一次只有一个压缩任务。是否影响服务,待测试)

4) 数据恢复 - 数据恢复期间设置WAL log的相关操作,在数据恢复期间regionserver无法服务!

结论

或许通过研究hbase的源码可让hbase稳定运行,但从上述测试结果看:1)hbase还无法稳定长期运行;2)hbase系统很脆弱,故障恢复能力差。基于此,判断hbase还无法满足大规模线上系统的运维标准,只能放弃。考虑到hbase重启基本可恢复正常,故hbase还是可作为离线存储系统使用。

http://www.jsqmd.com/news/1118189/

相关文章:

  • 基于Hermes Agent的AI智能体开发实战:从环境搭建到自动化应用
  • 【JAVA毕设源码分享】基于springboot自行车分享平台的设计与实现(程序+文档+代码讲解+一条龙定制)
  • web安全-RCE(代码执行与命令执行)
  • 保姆级CV入门:Python+OpenCV+PyTorch环境搭建与实战验证
  • 如何零代码实现跨浏览器网页摄像头图像捕捉:3步解决5大开发痛点
  • 多通道信号采集系统设计与实现:64通道同步采样方案
  • 2026中英文语音识别怎么选?清楚准好整理的方案更省事
  • LMCache:将KV Cache从临时状态升级为持久化AI知识库
  • Windows Defender彻底移除工具:专业指南与性能优化解决方案
  • 如何彻底禁用Windows Defender:Windows Defender Remover完整指南
  • TB9051FTG与PIC32MX675F512L实现直流电机静音驱动方案
  • OpenBoardView:免费开源PCB查看器,硬件工程师的终极电路板分析工具
  • TQVaultAE:释放你的泰坦之旅无限仓库潜能,告别背包爆满的烦恼!
  • Metasploit启动报错深度解析:从依赖缺失到数据库连接的系统性修复指南
  • 通达信缠论可视化插件CZSC.dll:3分钟实现专业级技术分析自动化
  • 使用Hashcat与rar2john高效恢复RAR5加密文件密码的完整指南
  • 【Java毕业设计】基于 SpringBoot 的医疗器械检修维护管理系统的设计与实现 医疗机构设备耗材数字化管理平台(源码+文档+远程调试,全bao定制等)
  • 灾害预警系统设计:地震与风暴监测发射器开发实践
  • Flux1-dev:让普通显卡也能运行专业级AI模型的终极解决方案
  • 多模态大模型选型:不看排行榜,看业务适配性
  • 3分钟免费汉化GitHub Desktop:新手也能快速上手的中文界面终极指南
  • 如何轻松掌控你的微信记忆:WeChatMsg聊天记录管理完全指南
  • AI辅助编码效率提升2.8倍,但调试成本反增35%——2024最危险的5个AI编程认知陷阱,现在纠正还来得及
  • STM32L031K6与MC74HC165A的GPIO扩展方案详解
  • AI入门指南:从概念到自监督学习原理与应用
  • 逆向分析短视频平台a_bogus参数:从JavaScript混淆到Python复现
  • 终极桌面伙伴指南:用DyberPet打造你的专属数字宠物
  • 如何永久保存微信聊天记录?5步完成微信聊天数据完整备份与智能分析终极指南
  • NGA-BBS-Script:重塑论坛浏览的能力矩阵与价值网络
  • Function Calling 和 MCP:到底什么场景选哪个?