欢迎投稿

今日深度:

大数据技术-HBase:HBase IO HFile,

大数据技术-HBase:HBase IO HFile,


HBase声称可以支持实时的随机快速读写数据,但是其数据大部分是存入hdfs文件的,且是append进去的,为什么可以做到呢?下面我们将详细解释如何获取到随机I/O,怎样存储文件,及其所使用的文件格式HFile。

Hadoop有一种叫做SequenceFile的文件格式,你可以将key/value对append到hdfs上,这种文件格式不支持修改和移除,仅仅支持append。如果你需要找一个特定的key,不得不读整个文件。不过hadoop还提供了一个文件格式叫做MapFile,它是sequencefile的一个扩展。mapfile其实是一个包括两个sequencefile的字典:数据文件/data及索引文件/index。MapFile允许你排序key/value,每N个key,同时会把偏移量存起来。这个允许你快速定位数据,通过先扫索引文件。一旦你发现你需要的block,你就可以调到真实的数据文件位置。

但MapFile怎么解决两个问题呢:1》如何删除或替代key/value, 2》当我的输入是没有排序的,不能使用MapFile


HBase Key包括一个rowkey,列簇,qualifier,时间戳和type,通过type区分是删除与否,通过时间戳机制替换已有数据,通过将数据先在内存中排序,然后持久化到文件。每次做get或者scan的适合,hbase会对每个文件扫描,然后找出结果。为了防止遍历扫很多文件,一般通过compaction机制将文件个数维持在一个合理的范围内。在0.20版本以后,hbase不再使用MapFile文件格式,而是引入了新的文件格式,并经历了多个版本:

HFile v1:

与MapFile原理是类似,分数据和索引,但是它还支持metadata和index,并与数据保持在同一个文件中。




HFile v2:

这个版本文件格式进行了一些变动,主要是提升大量数据存储时的性能。v1需要将所有整个索引和bloom filters加载到内存,而新版本的将索引分层级,建立block级别的bloom filter。因此提升了性能,内存和缓存使用率。




HFile v3:

该版本重新最了HFile布局模式以提升压缩性能:

1》将所有key在一起每个block,而value在block结尾,可以使用不同压缩方式;

2》压缩时间戳用XOR使用VInt代替long


www.htsjk.Com true http://www.htsjk.com/hbase/38877.html NewsArticle 大数据技术-HBase:HBase IO HFile, HBase声称可以支持实时的随机快速读写数据,但是其数据大部分是存入hdfs文件的,且是append进去的,为什么可以做到呢?下面我们将详细解释如何获取到...
相关文章
    暂无相关文章
评论暂时关闭