没有合适的资源?快使用搜索试试~ 我知道了~
首页深入学习hbase原理资料整理
Hbase HLog源代码阅读笔记 HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
资源详情
资源评论
资源推荐

Hbase HLog 源代码阅读笔记
当 客 户 端 往 上 提 交 了 一 个 更 新 操 作 后 , 会 调 用 的
方法往 上写一个节点,入口方法就是
!" #
$
%&'
(&$)#*+
$$#"'',
($$'+
(&&)#*-.,$$-',
/
$(0($1'+
$2!"32!"',
(43#!"$5$',
($$2$(4$2!"',66 存 的 是 一 个 最 老 的
$2!",这是代表,比该值等于或大于的数据都是没有持久化的
443"14(4!"$2!"&',
4$',66写数据,关键方法
($"#$"7',
/
66((1($$
668$(
$9'::
;<=$'$=>$(''+
($$',66如果是 9 表或是表不允许延迟同步,则立即同步
/
/
?
44#
#'
(&$)#*+
;($'+
,
/
;($$$$#"''+

)$@($$$'+
$#54#',66观察者模式,以便调
起其他需要通知的方法
/
/
+
&3$"<"9$',
($&#'',66重要方法是这句
13$"<"9$'A&,
&<"B31,
&)$BB,
1CDDD'+
3D,
4E1@#4E$''+
B31(',
/
)7&"
-F$1F"$(,3FG3
F$-
<(<('!"'1($"#$'
H$("''',66记录用时,如果超一秒则警告
/
/()#*'+
)7-.2$$(-',
2$',66如果写出错日志会被截断
(&,
/
/
2>
I
#'(&$)#*+
($&4'#'',
/
2>
J
最终是调用 ( 的 2> 将数据持久化的。

当 的 ""$8$( 之后,会往 里写一条日志,标明哪个表
的哪个分区在哪个 $2 这里持久化过一遍
".(>$(
".(>$(% !"
% !" % 2 %
$9'
(&$)#*+
+
($$'+
,
/
$(01'+
&3$"<"9$',
#3".(>$(#',66这一句表名是 >$( 这
种操作的日志
4 1 3 "14!" !"
2
$"<"9$'',66这一句表明该日志记录下了表名、分区名、
当前的日志 2
($&'',66这一句写入日志文件
&<"B3$"<"9$'A&,
&)$BB,
($"#$"7',
$23($$2!"',
$2;3KK2C3$2E''+
($$2"!"',66 每 个 最 后
更新 2 被删除,表明该 没有数据需要持久化。
/
/
66$*%$$"
($$',66这种 8$( 操作很重要,一定要同步到 ($ 的其他节点上

/%+
($(>$(11',
/
/
主要负责响应用户 6) 请求,向 => 文件系统中读写数据,
是 5$ 中最核心的模块。
内部管理了一系列 对象,每个 对应了
< 中的一个 , 中由多个 组成。每个 对
应了 < 中的一个 .">" 的存储,可以看出每个 ."
>" 其实就是一个集中的存储单元,因此最好将具备共同 ) 特性的
" 放在一个 .">" 中,这样最高效。
存储是 5$ 存储的核心了,其中由两部分组成,一部分是
9",一部分是 >$。9" 是 9"

5L,用户写入的数据首先会放入 9",当 9" 满了以后会
>$( 成一个 >(底层实现是 >),当 > 文件数量增长到
一定阈值,会触发 ." 合并操作,将多个 >$ 合并成一个
>,合并过程中会进行版本合并和数据删除,因此可以看出 5$ 其
实只有增加数据,所有的更新和删除操作都是在后续的 " 过程中进行
的,这使得用户的写操作只要进入内存中就可以立即返回,保证了 5$6)
的高性能。当 >$." 后,会逐步形成越来越大的 >,
当单个 > 大小超过一定阈值后,会触发 操作,同时把当前
成 ? 个 ,父 会下线,新 出的 ? 个孩子
会被 9$ 分配到相应的 上,使得原先 个
的压力得以分流到 ? 个 上。下图描述了 ." 和
的过程:
在理解了上述 的基本原理后,还必须了解一下 的功能,因为上
述的 在系统正常工作的前提下是没有问题的,但是在分布式系统环境
中,无法避免系统出错或者宕机,因此一旦 意外退出,
9" 中的内存数据将会丢失,这就需要引入 了。每个
中都有一个 对象, 是一个实现 (
的类,在每次用户操作写入 9" 的同时,也会写一份数据到
剩余32页未读,继续阅读

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论7