hbase的文件存储在生产环境下是基于hadoop HDFS文件系统的,HDFS为hbase提供了高容错和分布式的保证。下面是hbase集群处理hbase文件的示意图:
从上图可以看出,hbase中的文件分三部分:log日志文件即Write-Ahead Log,保存在内存中的(in-memory)memstore,storeFile野鸡HFile文件。
Write-Ahead Log(WAL):
一个HRegion Server服务器内部保持一个这样的日志文件,被HRegion Server上所有region共同使用,它扮演一个中央骨干日志记录对服务器上的region所做的每一次修改。
其目的是应对灾难恢复(disaster strikes),确保当服务器失效时可以通过该日志文件恢复日志中未持久化的数据。该文件和Mysql中的binary log很像,它会记录对所有数据做的的变更修改。如果服务器崩溃,那么WAL就可以很有效的replay日志的方式将数据在其他server上将恢复,这也意味着,如果写WAL log日志失败的话,整个操作也就失败了。
下图是一次数据修改在WAL和memstore之间的流程示图:
处理流程是这样的:
1、首先,客户端发起一个修改数据的请求,如put()、delete()和increment()等操作;
2、客户请就操作数据被包装成KeyValue的实例对象,通过RPC调用被发送到和修改信息相匹配的HRegion服务器上;
3、数据到达后,他们会被路由到负责维护所给的ROW的HRegion,数据会被首先写到WAL,然后接着会将数据写到内存中的Memstore。
WAL日志文件由一个后台的线程在一定时间间隔内通过回滚的方式清除已经被持久化到StoreFile中的日志数据。
在hbase中,实现WAL的类叫HLog,数据是按HRegion Server就收到的数据的先后顺序被追加到该文件中的;WAL日志文件实际上就是hadoop上的SequenceFile文件。
是可通过调用setWriteWAL(false)的方法关闭写WAL日志的功能(默认是打开该功能的),在某种情况下这可作为性能优化的一项调优操作。但是如果关闭写WAL日志的话,当HRegion崩溃的时候,数据就将这的丢失,强烈建议打开该操作,不要对此有任何怀疑。
HLog其中的一个很重要的功能就是它可以追踪数据修改的变更,该功能是通过一个顺序数字来支持这一功能的。当HRegion Server上的region打开的时候,它会去读服务器上的所有已持久化的数据中的最大的顺序数字——该数字被作为元数据信息保存到HFile中。
Memstore:
memstore是HRegion Server节点上的内存中的缓存,服务器上的每一个HRegion对应一块儿叫memstore的内存区,memstore内保存着对应的HRegion但还未持久化到磁盘的最新的数据,它主要是用来加快用户响应。
memstore有固定的大小,并且是经过排序的树形结构。当update到memstore的数据到一定的阀值时,就会触发一个flush操作,该操作会将memstore中的数据刷新到磁盘的一个叫StoreFile的文件中,每次涮洗数据就会生成一个storefile——保持在hadoop的HDFS上,同时在内存中生成一个新的memstore,也会触发一个minor compaction操作。
StoreFile:
每次将memstore中的数据刷新操作,都会生成一个storefile,然后将数据保存到其中。
storefile内部的数据结构是一个经过一定优化--区间查询优化—-的B-树,按数据的rowkey排序。
storefile使用HFile类实现的,该类的目的就是特别为高效存储hbase数据创建的。HFile是基于hadoop的TFile类,它模仿的是google的bigTable的SSTable,hbase最早使用hadoop的MapFile存储数据的,但是在hbase中使用使用MapFile存储数据被证明在性能上满足不了需求。
storefile文件包含大量的数据块block,每个block数据块只有fileinfo和trailor是固定必有的,当然由于存储文件也会保持数据——但在理论上可以没有数据部分,据图如下图所示:
trailer指向block中其他部分的数据,trailer中的信息是要保存的数据被持久化后才生成的;
indexblock的数据记录着要保存的data和meta元数据的偏移量,data block和meta block适可选的,但是考虑到storefile中的blocks是保持持久化数据的,因此至少data blocks是有的。
storefile中的block的大小可以在用户定义列族时修改默认的大小——默认64k。block的大小在JavaDoc中这样解释的:
最小块儿大小,在通常的使用当中我们建议设置在8KB到1MB之间。在主要使用顺序查询的场景中优先考虑设置较大的block,但是大的block导致低效的随机查询(因为有很多数据需要解压缩)。较小的block适用于随机查询,但是会需要比较多的内存来保存块索引,创建block也会较慢些(我们必须把数据以压缩流的方式持久化到每一个data block中,每一个data block就会导致一次I/O刷新操作)。
每个block包含一个magic头信息和许多经序列化的KeyVlaue。Magic内容就是一些随机数字,目的是防止数据损坏。
hbase block和hadoop block
到这里你会主要的一个问题,那就是hbase里的block和hadoop中的block到底有什么区别?在默认情况下,hbase block的大小事64KB,而hadoop block的大小是64MB,hadoop block大大小是hbase block的1024倍,实际上是,两种block之间没有一点儿的联系。hbase透明地将数据存储到文件系统上;实际上HDFS使用block是一个巧合,并且HDFS也不知到hbase存储的是什么,HDFS只把hbase的data block看做是二进制文件。
- 大小: 79.4 KB
- 大小: 73.7 KB
- 大小: 33.3 KB
分享到:
相关推荐
《HBase权威指南》是Hadoop生态中关于分布式列式数据库HBase的重要参考资料,它深入浅出地介绍了如何利用HBase构建大规模数据存储系统。这本书与《Hadoop权威指南》一起,构成了理解大数据处理和存储的关键知识体系...
《HBase权威指南》是HBase领域的经典著作,旨在深入解析这款分布式大数据存储系统的方方面面。随书提供的源代码是理解书中理论与实践结合的关键。在本文中,我们将围绕HBase的核心概念、架构以及如何通过源代码学习...
《HBase权威指南》是一本深入探讨分布式大数据存储系统HBase的专业书籍,旨在为读者提供全面、详尽的HBase知识。这本书涵盖了从基础概念到高级应用,包括HBase的架构设计、数据模型、表设计策略、性能优化、监控与...
《HBase权威指南》是一本深入探讨分布式大数据存储系统HBase的专业书籍,其源代码的提供为读者提供了更直观的学习材料。HBase是基于Apache Hadoop的非关系型数据库(NoSQL),它在大规模数据存储方面表现卓越,尤其...
《HBase权威指南中文版》是一本深入探讨大数据领域中分布式数据库HBase的专著。这本书旨在帮助读者理解和掌握如何有效地使用HBase处理大规模数据存储和检索问题。HBase是建立在Apache Hadoop之上,一个面向列的、...
《HBase权威指南》是一本深入探讨分布式列式数据库HBase的专业书籍,旨在帮助读者全面理解和掌握这一强大的大数据存储系统。HBase是构建在Apache Hadoop之上,专门为处理大规模数据而设计的非关系型数据库(NoSQL)...
《HBase权威指南高清中文版本》是一本深入探讨HBase技术的专业书籍,旨在为读者提供全面、详尽的HBase知识。HBase是构建在Apache Hadoop之上的一款分布式、高性能、列族式数据库,适用于处理大规模数据。这本书的...
《HBase:权威指南》是一本深入探讨分布式大数据存储系统的书籍,主要针对HBase这一开源的、基于Hadoop的非关系型数据库。本书适合对传统关系型数据库有了解,或者希望学习新式数据存储架构的人群,特别是那些面对大...
《HBase资源合集》包含了四本重量级的书籍,分别是《HBase企业应用开发实战》、《HBase权威指南》、《HBase实战》以及《HBase应用架构》。这些书籍深入浅出地探讨了HBase在大数据环境中的应用与开发,是学习和掌握...
《HBase:权威指南》是一本深度探讨分布式列式数据库HBase的专业书籍,它为读者提供了全面、深入的HBase知识。HBase是基于Apache Hadoop的开源项目,旨在为大规模数据集提供低延迟的随机读写能力。本书是HBase开发者...
### HBase 权威指南...通过上述内容可以看出,《HBase 权威指南》不仅覆盖了 HBase 的基本原理和技术细节,还包含了丰富的实践经验和未来展望,对于想要深入学习 HBase 的技术人员来说是一本非常有价值的参考书。
- 《hbase权威指南》不仅是一本详尽的技术手册,也是理解HBase架构和实现原理的重要参考书。它覆盖了从理论基础到实际应用的各个方面,对于希望深入学习HBase的技术人员来说非常有价值。通过本书的学习,读者可以...
《HBase:The Definition Guide》是一本全面深入探讨HBase的权威指南,旨在为读者提供HBase的详尽理解。HBase,作为Apache Hadoop生态系统中的一个分布式、面向列的数据库,源自Google的BigTable设计,被Facebook等...
《HBase权威指南》是一本深入探讨Apache HBase这一分布式列式数据库的著作。源代码是书中理论知识的实践体现,对于理解HBase的工作原理、实现机制以及如何使用HBase进行数据存储和处理非常有帮助。以下是根据标题和...