缘起

随着hadoop系列的兴起,基于HDFS的大规模KV存储系统HBase也进入“大规模使用阶段”。网上的Hbase资料很多,学习成本正在下降。从公开的资料看,国外facebook、国内taobao均宣称在线上环境大规模使用hbase。一切都让人很兴奋。于是,在项目中引入Hbase做存储,最终却选择放弃。

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还是可作为离线存储系统使用。

注:Hbase最初设计目标就是为了大规模在线存储。0.94.1版本的Hbase在高并发压力下测试并不稳定,但这不表示Hbase不能用于在线存储。放弃Hbase自有自己的判断逻辑,是否采用读者自己权衡。(见后面评论。2012.11.14)

替代方案

面对大规模数据,基于磁盘的存储系统是必不可少的。google虽然公开了bigtable的设计,但未开源,但google开源了levelDB KV存储系统库(http://code.google.com/p/leveldb/)。levelDB采用C++实现,1.7版本的代码量大概2W,实现了LSM(自动压缩)、LevelFile(基本同HFile),WAL,提供了简单的Put、Get、Delete、Write(批量写、事务功能)等接口。levelDB库实现了单机单库的磁盘存储方案,开发者可根据自己需要开发定制的存储系统(比如:数据Replication、自动调度、自动恢复、负载均衡等)。

本文转自 zhenjing 博客园博客,原文链接: http://www.cnblogs.com/zhenjing/archive/2012/11/13/hbase_is_OK.html  ,如需转载请自行联系原作者

HBase: 看上去很美相关推荐

  1. db4o, 看上去很美

    由于厌烦了手写Sql,在几个小项目中尝试着使用了Db4O.DAL层写起来是爽了,但是,还是有很多其它东西会绊你的脚. 没有主键的概念(因为对象的内存地址,或者引用就能标志一个对象了).因而外界想指向一 ...

  2. 看起来很美 VS. 是你来检阅我的忧伤了吗?

    看来了wayfarer "设计,看上去很美!"--算是我的随想<?xml:namespace prefix = o ns = "urn:schemas-micros ...

  3. 你的IT运维管理,是否只是“看起来很美”?

    原文[请点击] 又有个故事,说是有两只老虎,有一天路过一片肥美的草地,其中一只看见这里环境优美,便被深深吸引,留恋不已 .另一只老虎劝说道:"这里景色虽说不错,但看不见一只牛羊,根本不适合我 ...

  4. 设计,看上去很美 wayfarer

    设计,看上去很美 设计没有标准,模式充满变化,我们对设计与模式的探讨,就是希望能从没有标准的设计中体验设计的乐趣,从充满变化的模式中寻求问题的解决之道.     我这里所谓"设计没有标准&q ...

  5. 转龚文祥的一篇文章:对看起来很美的网站要保持审慎的乐观

    做网站的人很喜欢参考竞争对手的网站,也总是觉得别人网站模式.设计及新产品做的好,其实客观的心态是对于人家网站的好的东西要借鉴,但不能盲从,尤其对于暂时成功的网站要以在一定背景.大形势下成功的眼光去看, ...

  6. 一枝看上去很美的花——书评《Java与模式》

    一枝看上去很美的花 --书评<Java与模式> 撰文/剃刀 (本文首发于<程序员>杂志2003年第1期) 躺在我面前的,是阎宏博士编著.电子工业出版社出版的厚达1024页的&l ...

  7. 显示器3d测试软件,3D显示器专题测试看上去很美.pdf

    3D显示器专题测试看上去很美.pdf 3D 显 示 器 专 题 测 试 当 无 拖 影 . L E D 背 光 和 广 色 域 等 技 术 E 经 不 再 新 鲜 . 液 晶 显 示 器 再 次 遇 ...

  8. SAP HR技术系列之一:e-HR,不只是看起来很美

    转载:http://qyzx.jxufe.edu.cn/ehr/EHRzixun/2013-05-26/58.html 伴随劳动法规的逐步完善以及金融危机影响的持续深入,大力控制人工成本成为很多企业的 ...

  9. 转: 看上去很美——国内CDN现状与美国对比

    来自:http://blog.csdn.net/fayu0903/archive/2009/03/25/4022979.aspx 天国王朝(Kingdom of Heaven) 作者:阀域 CDN的理 ...

  10. 看上去很美——关于SaaS的八大误区

    看上去很美--关于SaaS的八大误区 作者:  Amteam.org 原文地址: http://www.vsharing.com/k/2008-11/618046.html 1.SaaS是一种因为提供 ...

最新文章

  1. linux grub2 等待时间修改
  2. python基于什么语言-一种基于Python语言的EDA开发平台及其使用方法与流程
  3. webpack 原理图_webpack打包原理
  4. 使用poi写入doc文档中文档打不开_基于NodeJS和浏览器的PDF文档引擎——PDFKit
  5. Struts2中指定的校验文件不起作用的原因
  6. Posterino for Mac(图片拼贴编辑器)
  7. 回顾2019,展望2020
  8. linux 软件装哪个目录下,Linux查看软件安装目录及位置 方法
  9. Vcpkg 的安装与使用
  10. 螺杆式、离心式、活塞式冷水机组及品牌
  11. 1×pbs缓冲液配方_pbs配方_1xpbs配方_pbs缓冲液配制
  12. 埃默里大学计算机值得读吗,埃默里大学计算机科学-生物统计学硕士研究生怎么样?好不好...
  13. bpmn文件转换为png格式图片
  14. 树莓派 更换键盘 2020_魔改售价2000多元的HHKB键盘!蓝牙双模+外接TF卡+树莓派ZERO...
  15. 京东笔试编程题之方块消除
  16. CapsuleNet的一个小例子
  17. Uber的优劣势分析
  18. python 习题练习二
  19. AcrelEMS-IDC数据中心综合能效管理系统解决方案-Susie 周
  20. WinCE 与通讯模块

热门文章

  1. Atiitt 兼容性提升的艺术 attilax总结 目录 1. 兼容性产生的原因 2 1.1. Api变化 2 1.2. 需求的资源不满足 2 2. 兼容性的分类 2 2.1. Web方面的兼容性
  2. Atitit 关于建立知识库体系的方案
  3. paip.php-gtk 桌面程序 helloworld总结
  4. paip.提升用户体验与安全性----登录与权限流程总结
  5. paip.提升用户体验----记住用户名与自动登录
  6. 如何阅读“三巨人”的源码(1)-比特币
  7. (转)采访 | ETHNews 对 Vitalik Buterin 的独家专访
  8. (转)《Billions》第二季回归,现实中的SAC也回来了
  9. 一文读懂「云上企业级存储」
  10. 0-Day CI : 我是Linux内核质检员