楼主: gaolu1234

hbase 权威指南翻译: 第一章 介绍

[复制链接]
论坛徽章:
13
生肖徽章2007版:兔
日期:2009-03-24 09:50:192014年新春福章
日期:2014-02-18 16:43:09大众
日期:2013-09-02 09:13:19蜘蛛蛋
日期:2013-05-20 09:44:372013年新春福章
日期:2013-02-25 14:51:24蛋疼蛋
日期:2012-11-27 15:47:59ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19奥运会纪念徽章:足球
日期:2012-10-08 08:54:372011新春纪念徽章
日期:2011-03-23 16:25:422011新春纪念徽章
日期:2011-02-18 11:43:34
11#
 楼主| 发表于 2012-10-22 16:03 | 只看该作者
本帖最后由 gaolu1234 于 2012-10-23 15:13 编辑

implementation 实现  
数据放在数据文件里面 叫 HFILE 。 HFILE 内部是 将 block 连续存放,并 使用 block index 块索引。 就是这些block 里面放了什么内容,都是有索引文件的。 HFIle打开的时候, 块索引会被读入内存常驻,缺省 block大小是 64K, 但是也可以根据需要配置。  可以通过API来扫描,给定了开始值和结束值后,可以根据范围扫描特定的值。
既然每个HFIle都有 block index 块索引.查询可以通过单个磁盘查找提高性能。 首先,对可能包含需要查询值的block 的查询 可以在内存的 block index (内存中的块索引) 进行二进制格式查询来进行。然后进行读磁盘来获得真正的数据.(先在内存中的块索引block index 查索引,后在磁盘上查真实值).
HFIle 会存放在 HDFS上。 有若干优点。。。
在数据被更新前, 会写入 commit log , 叫 write-ahead log (WAL) ,(类似 oracle的 redo log ) , 然后 保存在 内存中的 memstore 。 当内存中的数据超过一个设定值, 就会被 刷新到 磁盘上的一个HFile (flush)。 flush 以后, commit log 会被丢弃  到 最后未被刷新的 部分。当系统刷新memstore到磁盘里面后, 这部分内存就可以继续服务给 读进程 和 写进程 而不会 阻塞 这2个进程。  这就是 将 memstore 在内存中 滚动  来进行归档 , 当 新的 / 空的 内存 被 (使用来)更新时, 而 老的,满的内存被转换到文件。
注意:memstore 里面的数据已经按照 key排序过了, 也跟hfile在磁盘上的排序精确的一致,就不需要排序和其他动作了。
内容相同的 key/value 数据对 保存在一起,有利于数据压缩。 原来的适用场景是存储网页,那么相似的页面地址放在一起有利压缩。例如: org.hbase.com   / www.hbase.com 这样的网址.
因为存储文件是 连续的, 索引不能直接删除一个值 来删除 key/value 对 数据。  要用删除标记 delete marker 来作为里程碑标记 写入记录来指示 该记录已经被删除。 在检索过程中,  删除标记 掩盖了实际值, 从client 端读取数据的操作中 隐藏。
读数据涉及到memstore中保存数据的 merge , 就是这些数据还没有写到磁盘上,磁盘上的存储文件。 wal 是不用来作为数据检索的, 只用来 服务器当机 的 恢复。
flush memstore 的数据 到磁盘上,
越来越多的HFile 被创建出来。hbase 有了一种管家机制,把这些hfile merge 到 大文件,叫 压缩 compaction . 有2种类型的压缩: minor 小压缩 和 marjor 主压缩。
(minor???)以前的压缩是将小文件写成大文件, 执行一个 多路merge n-way merge 。 既然所有的数据都保存在每个HFile里面, merge 是很快 和 分界的 由 磁盘IO性能.
marjor 压缩是重写 一个region里面的 一个 cf里面的所有文件到一个新的文件。 这样还有另外一个单独的特性: 扫描所有的 key/value 数据对, 可以丢弃 有 delete marker 删除标记的 记录(就是被删除的). 谓词删除很好的处理:例如, 超时的数据和 超过配置时间的数据 ,有太多版本的数据.
这个结构来自于LSM-tree索引 , 区别是LSM-tree是一种在多个数据块 类似 B-tree方式存储数据。hbase 是 update /merge / 在一个旋转的 fashion???,整个memstore 保存在 一个 新的 存储文件里面,而不是立刻merge . 你可以称为 HBase的 log-structured sort and merge maps . 后台压缩依照LSM-tree , 但是 发生在 存储文件级别的部分 tree 更新。

Zookeeper :类似 google的chubby 项目 。zookeeper 提供了 文件系统的 目录访问 和 文件。分布系统 , 所有权, 注册服务, 更新watch。每个region server 建立它自己的 发生node 在 zookeeper里面。master 会查找所有的 可用的 server 。 也用来跟踪 服务器当机或者网络失败。
短暂的节点 ephemral node 绑定在 zookeeper 和client 端的 线程 上, 线程有个心跳机制 来保持 节点 存活, 当线程报告当机, 被zookeeper 宣告 当机, 相关的 短暂节点就被删除。

hbase使用 zookeeper 来保证只有一个 master 节点, 来保存 启动文件,这些启动文件保存了 region server的 注册信息。ZOOKEEPER是个关键部件, 如果没有,hbase就无法运行。 zookeeper的分布设计 使用了 服务器组合 来 环境 , zab 协议 保证了 状态 一致。


使用道具 举报

回复
论坛徽章:
3
奥运会纪念徽章:棒球
日期:2012-10-18 09:02:552013年新春福章
日期:2013-02-25 14:51:24法拉利
日期:2013-10-10 14:31:52
12#
发表于 2012-10-23 10:45 | 只看该作者
mark

使用道具 举报

回复
论坛徽章:
13
生肖徽章2007版:兔
日期:2009-03-24 09:50:192014年新春福章
日期:2014-02-18 16:43:09大众
日期:2013-09-02 09:13:19蜘蛛蛋
日期:2013-05-20 09:44:372013年新春福章
日期:2013-02-25 14:51:24蛋疼蛋
日期:2012-11-27 15:47:59ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19奥运会纪念徽章:足球
日期:2012-10-08 08:54:372011新春纪念徽章
日期:2011-03-23 16:25:422011新春纪念徽章
日期:2011-02-18 11:43:34
13#
 楼主| 发表于 2012-10-23 15:24 | 只看该作者
本帖最后由 gaolu1234 于 2012-10-23 16:41 编辑

hbase 构成 :
api   + master + region server( hfile + memstore+writer-ahead-log)  
hdfs +  zookeeper .

主节点 负载 处理 跨region server 的 region的 负载平衡。从负载压力大的 server 上 把region 移动到 压力小的server上。主节点 不是数据存储的一部分,也不是搜索路径。 主节点协调 负载平衡 ,管理 cluster 的状态, 不提供数据 , 因此压力是很轻的。 附带的,也管理 schema 改变 和 其他的元数据操作, 如果表建立 ,cf管理等。
region server 负责  在其上的所有的 region(真正保存数据的)所有的 读/ 写要求 .  也在region 超过配置大小阈值的时候 , 负责 分割 region 。  客户端直接与 region server  通讯 ,处理 所有数据相关的操作  .

总结:
数十亿 行 , 数百万的 列, 数千的 version  = tb 或者pb的数据
我们已经知道google的Bigtable 存储架构 是如何使用 很多服务器来 ,通过 key  来 将记录行分布, 达到负载平衡 和 扩展到 pb  的数据,在数千台服务器上 。 使用的存储格式  是理想的 用来 读 临近的 key /value 数据对 ,和 优化的 IO block操作 , 能够饱和的使用 磁盘的IO能力 。
表扫描在线性的时间, rowkey 查询 , 转换 能在 对数级 性能良好的运行。 在极端的例子,在常量顺序 ,使用 bloom filter  , 设计 schema 用这样的方法, 避免 明确锁定 , 使用 行级别原子操作组合, 给了系统 扩展能力,而不影响读写性能。
列导向结构, 大的宽的,稀疏的表, null存储没有代价。因为每行记录都由确定的一个 服务器管理 , hbase是一个强一致性, 使用多版本的 ,避免冲突的 ,使用并发去耦过程, 获得历史变化。
实际上Bigtable 已经在google里面上线  在2005开始了, 可以在不同的应用情况下使用, 从批导向的处理,到实时数据处理。 保存的数据从很小  例如 url 到 很大 , 例如 网页内容 和 卫星地图 , 已经成功地提供了 灵活的 高性能的 解决方案, 例如 google earth  , google reader , google finance , google analytics 。



使用道具 举报

回复
论坛徽章:
0
14#
发表于 2012-12-17 18:25 | 只看该作者
支持,希望翻译完了,做成pdf共享下

使用道具 举报

回复
论坛徽章:
0
15#
发表于 2012-12-20 14:17 | 只看该作者
支持下他们。

使用道具 举报

回复
论坛徽章:
2
ITPUB9周年纪念徽章
日期:2010-10-08 09:31:222013年新春福章
日期:2013-02-25 14:51:24
16#
发表于 2013-1-4 15:04 | 只看该作者
好贴

使用道具 举报

回复
论坛徽章:
0
17#
发表于 2013-1-21 16:55 | 只看该作者
支持

使用道具 举报

回复
论坛徽章:
21
2013年新春福章
日期:2013-04-08 17:42:48马上有钱
日期:2014-02-18 16:49:31夏利
日期:2014-02-20 10:17:24马上有钱
日期:2014-08-04 15:30:58马上加薪
日期:2014-11-23 01:52:23马上加薪
日期:2015-01-08 11:42:39马上加薪
日期:2015-02-04 15:06:54喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:472014年新春福章
日期:2014-02-18 16:49:31
18#
发表于 2013-1-28 15:24 | 只看该作者
收过一个中文版的,回头找下传下来。

使用道具 举报

回复
论坛徽章:
2
鲜花蛋
日期:2011-12-19 20:27:432012新春纪念徽章
日期:2012-01-04 11:58:44
19#
发表于 2013-3-27 23:59 | 只看该作者
吴_飚 发表于 2013-1-28 15:24
收过一个中文版的,回头找下传下来。

您好:请问您中文版传上去了吗

使用道具 举报

回复
论坛徽章:
10
授权会员
日期:2007-05-27 10:01:372010年世界杯参赛球队:巴西
日期:2010-02-09 17:18:59祖国60周年纪念徽章
日期:2009-10-09 08:28:002009日食纪念
日期:2009-07-22 09:30:002009新春纪念徽章
日期:2009-01-04 14:52:28奥运会纪念徽章:排球
日期:2008-07-09 05:35:32奥运会纪念徽章:自行车
日期:2008-05-24 17:23:07生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:鸡
日期:2008-01-02 17:35:532013年新春福章
日期:2013-02-25 14:51:24
20#
发表于 2013-7-31 21:31 | 只看该作者
支持...

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表