《HBase权威指南》一1.5 HBase:Hadoop数据库

简介:

本节书摘来异步社区《HBase权威指南》一书中的第1章,第1.5节,作者: 【美】Lars George 译者: 代志远 , 刘佳 , 蒋杰 责编: 杨海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.5 HBase:Hadoop数据库

看过BigTable的架构之后,我们可能会简单地认为HBase完全是Google的BigTable的开源实现。但是这个说法可能过于简单,因为两者之间还有些差异(大多是细微的)值得一提。

1.5.1 历史

HBase是Powerset㉑在2007年创建的,最初是Hadoop的一部分。之后,它逐步成为Apache软件基金会旗下的顶级项目,具备Apache软件许可证,版本为2.0。

HBase项目的主页是http://hbase.apache.org/,通过这个主页可以链接到文档(documentation)、wiki、源代码库(source repository),以及已经发布的库和源代码的下载站点。

下面是一个HBase随时间发展的简短概述。

  • 2006年11月:Google发布BigTable论文。
  • 2007年2月:HBase宣布在Hadoop项目中成立。㉒
  • 2007年10月:HBase第一个“可用”版本(Hadoop 0.15.0)。
  • 2008年1月:Hadoop成为Apache的顶级项目,HBase成为Hadoop的子项目。
  • 2008年10月:HBase 0.18.1 发布。
  • 2009年1月:HBase 0.19.0发布。
  • 2009年9月:HBase 0.20.0 发布,性能有明显提升。
  • 2010年5月:HBase成为Apache的顶级项目。
  • 2010年6月:HBase 0.89.20100621,第一个开发版本。
  • 2011年1月:HBase 0.90.0 发布,稳定性和持久性有所提升。
  • 2011年年中:HBase 0.92.0 发布,支持协处理器和安全控制。

文字2010年5月前后,HBase的开发者决定打破一直依赖的、步调一致的Hadoop的版本编号。原因是HBase有一个更快的发布周期,同时更接近1.0版本的水平,比Hadoop的预期更快。

为此,版本号从0.20.x跳到了0.89.x,跳跃相当明显。此外,还做了一个决定,将0.89.x定为早期的开发版本。在0.89的基础上最终发布了0.90,即面向所有用户的稳定版。

1.5.2 命名

HBase与BigTable最大的不同就是命名。表1-1罗列了两个系统之间相同组件的命名有哪些不同。


b1


更多的差异参见附录F。

1.5.3 小结

让我们回到1.3.1节来看看怎样用维度来描述HBase系统。HBase是一个分布式的、持久的、强一致性的存储系统,具有近似最优的写性能(能使I/O利用率达到饱和) 和出色的读性能,它充分利用了磁盘空间,支持特定列族切换可选压缩算法。

HBase继承自BigTable模型,只考虑单一的索引,类似于RDBMS中的主键,提供了服务器端钩子,可以实施灵活的辅助索引解决方案。此外,它还提供了过滤器功能,减少了网络传输的数据量。

HBase并未将说明性查询语言作为核心实现的一部分,对事务的支持也有限。但行原子性和“读-修改-写”操作在实践中弥补了这个缺陷,它们覆盖了大部分的使用场景并消除了在其他系统中经历过的死锁、等待问题。

HBase在进行负载均衡和故障恢复时对客户端是透明的。在生产系统中,系统的可扩展性体现在系统自动伸缩的过程中。更改集群并不涉及重新全量负载均衡和数据重分区,但整个处理过程完全是自动化的。

①例如,参见Michael Stonebraker和UğurÇetintemel撰写的文章“‘One Size Fits All’:An Idea Whose Time Has Come and Gone”(http://www.cs.brown.edu/~ugur/fits_all.pdf)。

②相关信息可以在Hadoop的官方网站http://hadoop.apache.org/中找到。也可以到Tom White编写的《Hadoop权威指南(第2版)》(原出版社为O’Reilly)一书中查阅你想了解的Hadoop知识。

③此处引用的是Kimball集团的Ralph Kimball博士的一篇题为“Rethinking EDW in the Era of Expansive Information Management”的演讲(http://www.informatica.com/campaigns/rethink_edw_kimball.pdf),这个演讲讨论了一个不断发展的企业数据仓库市场的需求。

④Edgar F. Codd定义了13个规则(编号为0~12),这些规则促使数据库管理系统(Datebase Management System,DBMS)被考虑为RDBMS。HBase需要满足更多的通用规则,但也有一些规则没有满足,最重要的是规则5:全面的数据子语言规则,这个规则定义了至少需要支持一种关系型语言。详情见维基百科关于科德十二定律的链接http://en.wikipedia.org/wiki/Codd's_12_rules

⑤见Facebook提供的信息http://www.facebook.com/note.php?note_id=89508453919

⑥请看博文http://www.facebook.com/note.php?note_id=454991608919,这篇博文来自Facebook的工程团队。150亿条墙消息和1200亿条聊天消息,共计1350亿条消息一个月。此外,Facebook还添加了SMS和其他一些应用,这些都会使数据量变得更为庞大。

⑦Facebook使用了Haystack,Haystack优化了二进制大对象的存储结构,提供了二进制小对象存储,例如图片。

⑧见http://www.slideshare.net/brizzzdotcom/facebook-messages-hbase,这是Facebook的员工Nicolas Spiegelberg写的,他也是HBase的committer。

⑨Linux、Apache、MySQL和PHP(或者Perl和Python)的缩写。

⑩Atomicity、Consistency、Isolation和Durability的缩写。

⑪Memcached是基于内存的、非持久化的、非分布式的键值存储系统。参见Memcached项目的主页http://memcached.org/

⑫见维基百科中的“NoSQL”(http://en.wikipedia.org/wiki/NoSQL)。

⑬见Eric Brewer的论文http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf,后期Gilbert与Lynch发表了PDF版,详情见http://lpd.epfl.ch/sgilbert/pubs/BrewersConjecture-SigAct.pdf

⑭见Brewer的论文“Lessons from giant-scale services. Internet Computing”,IEEE,2001,5 (4):46~55 (http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=939450)。

⑮见Jim Gray等人的“FT 101”(http://research.microsoft.com/en-us/um/people/gray/talks/UCBerkeley_Gray_FT_Avialiability_talk.ppt)。

⑯DDI这个词是Salmen博士等人于2009年在“Cloud Data Structure Diagramming Techniques and Design Patterns”一文中提出的。

⑰请注意,这仅仅是一个演示用例,所以故意将模式设计得很简单。

⑱在5.1.3节中会看到,还可以不设置qualifier。

⑲虽然HBase不支持在线的region合并,但是有离线处理合并的工具,详情见11.6节。

⑳有关Apache ZooKeeper的更多信息请参见Apache ZooKeeper官方网站(http://hadoop.apache.org/zookeeper/)。

㉑Powerset公司位于旧金山,开发了一套用于互联网的自然语言搜索引擎。在2008年7月1日,微软公司收购了Powerset,之后Powerset放弃了对HBase开发的后续支持。

㉒在Apache JIRA(网站上的问题追踪系统)中找到HBASE-287,里面可以找到当时的记录,读者可以看到Mike Cafarella提交的最初代码,这个代码很快就被Jim Kellerman采纳了,Jim Kellerman当时就职于Powerset。

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
分布式计算 Java Hadoop
java使用hbase、hadoop报错举例
java使用hbase、hadoop报错举例
84 4
|
30天前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
67 4
|
30天前
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
31 3
|
30天前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
55 3
|
30天前
|
SQL 分布式计算 Hadoop
Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件
Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件
69 2
|
30天前
|
存储 分布式计算 Hadoop
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
49 2
|
3月前
|
存储 SQL 分布式数据库
|
24天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
56 3
Mysql(4)—数据库索引
|
9天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
45 2
|
12天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
53 4