Hadoop是一个高容错、高延时的分布式文件系统和高并发的批处理系统,不适用于提供实时计算;HBase是可以提供实时计算的分布式数据库,数据被保存在Hadoop HDFS分布式文件系统上,由HDFS保证期高容错性,但是再生产环境中,HBase是如何基于hadoop提供实时性呢?
前面的章节已经介绍过,hbase上的数据是以storefile(HFile)二进制流的形式存储在HDFS上block块儿中;但是HDFS并不知道的hbase存的是什么,它只把存储文件是为二进制文件,也就是说,hbase的存储数据对于HDFS文件系统是透明的。
HBase文件在HDFS上的存储示意图
HBase HRegion servers集群中的所有的region的数据在服务器启动时都是被打开的,并且在内冲初始化一些memstore,相应的这就在一定程度上加快系统响应;而Hadoop中的block中的数据文件默认是关闭的,只有在需要的时候才打开,处理完数据后就关闭,这在一定程度上就增加了响应时间。
从根本上说,HBase能提供实时计算服务主要原因是由其架构和底层的数据结构决定的,即由LSM-Tree + HTable(region分区) + Cache决定——客户端可以直接定位到要查数据所在的HRegion server服务器,然后直接在服务器的一个region上查找要匹配的数据,并且这些数据部分是经过cache缓存的。具体查询流程如下图所示:
1、Client会通过内部缓存的相关的-ROOT-中的信息和.META.中的信息直接连接与请求数据匹配的HRegion server;
2、然后直接定位到该服务器上与客户请求对应的region,客户请求首先会查询该region在内存中的缓存——memstore(memstore是是一个按key排序的树形结构的缓冲区);
3、如果在memstore中查到结果则直接将结果返回给client;
4、在memstore中没有查到匹配的数据,接下来会读已持久化的storefile文件中的数据。前面的章节已经讲过,storefile也是按key排序的树形结构的文件——并且是特别为范围查询或block查询优化过的,;另外hbase读取磁盘文件是按其基本I/O单元(即 hbase block)读数据的。具体就是过程就是:
如果在BlockCache中能查到要造的数据则这届返回结果,否则就读去相应的storefile文件中读取一block的数据,如果还没有读到要查的数据,就将该数据block放到HRegion Server的blockcache中,然后接着读下一block块儿的数据,一直到这样循环的block数据直到找到要请求的数据并返回结果;如果将该region中的数据都没有查到要找的数据,最后接直接返回null,表示没有找的匹配的数据。当然blockcache会在其大小大于一的阀值(
heapsize * hfile.block.cache.size * 0.85)后启动基于LRU算法的淘汰机制,将最老最不常用的block删除。
- 大小: 50.6 KB
- 大小: 65.4 KB
分享到:
相关推荐
如果你正在寻找一种具备可伸缩性的存储解决方案来适应几乎没有穷尽的数据的话,这本书将可以向你表明apache hbase完全能够满足你的需求。作为google bigtable架构的开源实现,hbase能够支持数以十亿计的记录数和数以...
hbase权威指南中文完整版pdf 12章+6附录
hbase权威指南源码
hbase权威指南,hadoop,spark,hbase设计,hbase权威指南-完整版
《hbase权威指南》探讨了如何通过使用与hbase高度集成的hadoop将hbase的可伸缩性变得简单;把大型数据集分布到相对廉价的商业服务器集群中;使用本地java客户端,或者通过提供了rest、avro和thrift应用编程接口的...
HBase权威指南中文版
Hbase 学习 资料 英文 Hbase权威指南 PDF
hbase权威指南中文版hbase权威指南中文版hbase权威指南中文版 hbase权威指南中文版hbase权威指南中文版hbase权威指南中文版
HBase权威指南,完整高清版。本书探讨了如何通过使用与HBase高度集成的Hadoop将HBase的可伸缩性变得简单;
Hbase权威指南 随书源代码 源码包 绝对完整版 maven工程,带pom文件,可以直接作为一个完整工程导入eclipse等ide。
《hbase权威指南》随书示例源代码.方便学习
Hbase权威指南英文版
HBase权威指南中文版.pdf ,深入学习HBase
Hbase权威指南中文版 带目录 人民邮电出版社 Hbase权威指南中文版 带目录 人民邮电出版社
hbase权威指南英文原版,带有书签目录。
《HBase权威指南》探讨了如何通过使用与HBase高度集成的Hadoop将HBase的可伸缩性变得简单;把大型数据集分布到相对廉价的商业服务器集群中;使用本地Java客户端,或者通过提供了REST、Avro和Thrift应用编程接口的...
HBase权威指南.pdf HBase权威指南.pdf HBase权威指南.pdfHBase权威指南.pdfHBase权威指南.pdf HBase权威指南.pdf HBase权威指南.pdfHBase权威指南.pdf