码迷,mamicode.com
首页 > 其他好文 > 详细

[ 译]Apache HBase Write Path

时间:2014-08-04 21:20:57      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   io   文件   数据   

         翻译自cloudera,原文直通车:Apache HBase Write Path

        Apache HBase也就是Hadoop Database是基于HDFS之上的.HBase可以随机获取和更新存储在HDFS上的记录。但是HDFS

上的文件只能追加而且一旦创建便无法修改。说到这里你或许会问:那HBase是怎么做到在HDFS上低延迟的读和写呢?在这篇

文章里,我们就会通过描述HBase的写的流程来解释数据在HBase中是如何更新的。

        写流程描述就是HBase如何完成put或者delete操作。流程开始于client端,然后再到region server,最终结束于当数据写入

到HFile为止。在这过程中还包括了HBase如何保证region server down掉的时候的数据的完整性(数据不丢失)。所以,理解这个

流程对于深刻理解HBase 如何防止数据丢失的机制是很有帮助的。

        HBase中的表的管理涉及到如下三类server:

1.一个处理active状态的master server
2.一个或者多个backup master server
3.很多region server

      Region server管理HBase中的table。因为HBase中的table会变得很大,所以他们会分裂成很多分区,这些分区我们称为region。

每一次Region server会负责处理一个或者多个region的请求。注意:由于region server是唯一用来处理hbase的table数据的,因此

hbase master的crash并不会导致数据丢失

      HBase中的数据的组织方式类似于sorted map的组织方式,把排序后的row key分成不同的region。HBase的客户端通过调用put

或者delete来更新hbase中的表。当客户端发出一个请求,默认情况下该请求会立即被路由到region server。我们也可以通过编程的方式

指定让client先缓存这些命令,然后以批量的方式提交这个命令。可以通过制定autoflush为off状态来实现批量提交。如果autoflush被

设置为了off,所有的更改都会被client端缓存直到用户调用flush-commits被调用,或者当buffer满了的时候就会把全部命令批量提交。buffer

的设置是使用“hbase.client.write.buffer”参数来指定的。

     由于HBase的row-key是预排序的,所以可以很轻易的确定哪个region server管理哪些范围内的row-key的记录。一个更新请求是针对某一

特定的列。每个row-key都是归属于某个regoin的,regoin是在regoin server的管理中的。

 

未完待续。。。

[ 译]Apache HBase Write Path,布布扣,bubuko.com

[ 译]Apache HBase Write Path

标签:style   blog   http   color   使用   io   文件   数据   

原文地址:http://www.cnblogs.com/sysman/p/3890832.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!