推荐序
Google
公司提出的MapReduce
编程框架、GFS
文件系统和BigTable
存储系统成为了大数据处理技术的开拓者和领导者,而源于这三项技术的ApacheHadoop
等开源项目则成为了大数据处理技术的事实标准,迅速推广至国内外各大互联网企业,成为了PB
量级大数据处理的成熟技术和系统。面对不同的应用需求,基于Hadoop
的数据处理工具也应运而生
例如,
Hive
、Pig
等已能够很好地解决大规模数据的离线式批量处理问题。但是,HadoopHDFS
适合于存储非结构化数据,且受限于HadoopMapReduce
编程框架的高延迟数据处理机制,使得Hadoop
无法满足大规模数据实时处理应用的需求
ApacheHBase
就是其中已迈向实用的成熟系统之一。HBase
之所以能成为迈向实用的成熟系统
- 一是核心思想来源于
Google
的BigTable
- 二是有
Apache
及Hadoop
开源社区的支撑 - 三是有诸如
Facebook
、淘宝和支付宝等互联网公司的应用实践,保证了HBase
系统的稳定性和可用性 - 作为关系型数据库的有益补充,
HBase
已成功应用于互联网服务领域和传统行业的众多在线式数据分析处理系统中
前言
http://www.hbasebook.com
- 这本书的示例代码可以在
GitHub
中(http://github.com/larsgeorge/hbasebook
)
第1章 简介
数据资产会取代20世纪传统有形资产的地位,成为资产负债表的重要组成部分 数据的价值已经超越了传统企业广泛认同的价值边界
- 开源社区利用
Google
的这些思想实现了开源Hadoop
项目的两个模块
HDFS
MapReduce
Hadoop
擅长存储任意的、半结构化的数据,甚至是非结构化的数据,可以帮助用户在分析数据的时候决定如何解释这些数据,同样允许用户随时更改数据分类的方式:一旦用户更新了算法,只需要重新分析数据
列式存储数据库
- 列式存储数据库以列为单位聚合数据,然后将列值顺序地存入磁盘,这种存储方法不同于行式存储的传统数据库,行式存储数据库连续地存储整行。图11形象地展示了列式存储和行式存储的不同物理结构
- 列式存储的出现主要基于这样一种假设:对于特定的查询,不是所有的值都是必需的。尤其是在分析型数据库里,这种情形很常见,因此需要选择一种更为合适的存储模式
- 在这种新型的设计中,减少
I/O
只是众多主要因素之一,它还有其他的优点:因为列的数据类型天生是相似的,即便逻辑上每一行之间有轻微的不同,但仍旧比按行存储的结构聚集在一起的数据更利于压缩,因为大多数的压缩算法只关注有限的压缩窗口 - 像增量压缩或前缀压缩这类的专业算法,是基于列存储的类型定制的,因而大幅度提高了压缩比。更好的压缩比有利于在返回结果时降低带宽的消耗
图11 列式存储结构与行式存储结构
- 从典型
RDBMS
的角度来看,HBase
并不是一个列式存储的数据库,但是它利用了磁盘上的列存储格式,这也是RDBMS
与HBase
最大的相似之处,因为HBase
以列式存储的格式在磁盘上存储数据 - 传统的列式数据库比较适合实时存取数据的场景,
HBase
比较适合键值对的数据存取,或者有序的数据存取