- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
HBase存储文件格式概述.doc
HYPERLINK /blog/828549 HBase存储文件格式概述
概述
HBase是基于Bigtable论文的面向列的分布式存储系统,其存储设计是基于Memtable/SSTable的。其它如Cassandra都是采用的该设计。
整个存储分为两部分,一部分为内存中的MemStore(Memtable),另外一部分为磁盘(这里是HDFS)上的HFile(SSTable)。下面分别讲述两种类型的存储分别的实现:
MemStore中最重要的变量是:
Java代码
volatile?KeyValueSkipListSet?kvset;??
volatile KeyValueSkipListSet kvset;
这里的KeyValueSkipListSet里面实际是这样的:
Java代码
private?final?ConcurrentNavigableMapKeyValue,?KeyValue?delegatee;??
private final ConcurrentNavigableMapKeyValue, KeyValue delegatee;
换句话说,其实就是一个放内存的Map存放着kv。
?
HFile是HBase实际的文件存储格式,它是基于 HYPERLINK /jira/browse/HADOOP-3315 TFile的文件格式,替换了??期的MapFile,改进了性能。
然后HBase会进行控制,当MemStore写满了以后进行刷磁盘操作。
而HLog是HBase的日志格式实现,主要是在写入的时候进行write-ahead-log,主要为recovery而做。
HFile
HFile是HBase中实际存数据的文件,为HBase提供高效快速的数据访问。它是基于Hadoop的TFile,模仿Google Bigtable 架构中的SSTable格式。之前的Hadoop的MapFiles已经被证明性能不能到达我们的期望。文件格式如下:
?
?
文件是变长的,唯一固定的块是File info和Trailer,如图所示,Trailer有指向其它块的指针,这些指针也写在了文件里,Index块记录了data和meta块的偏移量,data和meta块都是可选的。
块的大小是由表创建时的HColumnDescriptor指定的,如下是master web interface上看到的一个例子:
{NAME = docs, FAMILIES = [{NAME = cache, COMPRESSION = NONE, VERSIONS = 3, TTL = 2147483647, BLOCKSIZE = 65536, IN_MEMORY = false, BLOCKCACHE = false}, {NAME = contents, COMPRESSION = NONE, VERSIONS = 3, TTL = 2147483647, BLOCKSIZE = 65536, IN_MEMORY = false, BLOCKCACHE = false}, ...
默认的大小是64KB,下面是一段关于HFile的解释:
“最小的块大小。我们建议通常将其设置为8KB到1MB之间,如果经常进行基于primary key的顺序访问,可以设置更大的块大小,但是这样会带来低效的随机访问效率(更多的数据需要被解压缩)。更小的块大小将带来更好的随机访问效率,但是会耗费更多的内存去维持索引,并且在创建的时候会比较慢,因为需要flush压缩流,这将导致一个FS I/O flush。由于内部的压缩codec的缓存,最小的块大小可以为20-30KB”
?
?
?
上图是HFile中每个KeyValue的格式,和普通的key-value没有太大的区别。
?
HLog
源码中的实现类是HLog。每个HRegionServer会对应一个HLog,HRegion在初始化的时候HRegionServer会将该HLog的实例作为构造函数传入其中。HLog的核心函数是其append()函数。
在HLog中,会维持一个Sequence Number,是一个AtomicLong型,当一个Region启动的时候会从HFile的Meta field里面读出当前的Sequence Number。
如图所示,由于HLog是Region之间共享的,因此,log的顺序是不定的,这一点后面会提到。当一个HRegionServer崩溃掉后,HMaster会让HRegionServer重启的时候根据日志进行恢复。
当前的WAL使用的是Hadoop下的SequenceFile格式,其key是HLogKey实例,它包括以下内容:
Java代码
private?byt
您可能关注的文档
最近下载
- 《客户服务与管理》教案 第5课 学会使用即时通信工具.pdf VIP
- 民爆信息系统网路服务平台.pptx VIP
- 《QCNPC41-2001-防喷器判废技术条件》.pdf VIP
- 《客户服务与管理》(李清文)718-1教案 第2课 熟悉客户服务人员的综合素质要求.docx VIP
- 《客户服务与管理》(李清文)718-1教案 第3课 学会使用电话服务工具.docx VIP
- 3《峨日朵雪峰之侧》同步练习(含答案)统编版高中语文必修上册.docx VIP
- 第2课 让美德照亮幸福人生.pptx VIP
- 《峨日朵雪峰之侧》同步练习 统编版高中语文必修上册.docx VIP
- 海马普力马PREEMA 1.8L、1.6升 电路图07-发动机和变速箱控制.pdf VIP
- 《客户服务与管理》教案 第1课 初识客户服务与管理.docx
文档评论(0)