网易视频云分享:HBase–探索HFile索引机制

网易视频云分享:HBase–探索HFile索引机制

ID:42697426

大小:312.31 KB

页数:11页

时间:2019-09-20

网易视频云分享:HBase–探索HFile索引机制_第1页
网易视频云分享:HBase–探索HFile索引机制_第2页
网易视频云分享:HBase–探索HFile索引机制_第3页
网易视频云分享:HBase–探索HFile索引机制_第4页
网易视频云分享:HBase–探索HFile索引机制_第5页
资源描述:

《网易视频云分享:HBase–探索HFile索引机制》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、网易视频云分享:HBase-探索HFile索引机制网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,为客户提供稳定流畅、低时延、高并发的视频直播、录制、存储、转码及点播等音视频的PASS服务。在线教育、远程医疗、娱乐秀场、在线金融等各行业及企业用户只需经过简单的开发即可打造在线音视频平台。现在,网易视频云的技术专家与大家分享一下HBase-探索HFile索引机制。HFile索引结构解析HFile中索引结构根据索引层级的不同分为两种:single-level和mutil・lev

2、el,前者表示单层索引,后者表示多级索引,一般为两级或三级。HFileVI版本中只有single-level—种索引结构,V2版本中引入多级索引。之所以引入多级索引,是因为随着HFile文件越来越大,DataBlock越来越多,索引数据也越来越大,已经无法全部加载到内存中(VI版本中_个RegionServer的索引数据加载到内存会占用几乎6G空间),多级索引可以只加载部分索引,降低内存使用空间。上一篇文章《HBase■存储文件HFile结构解析》”我们提到BloomFilter内存使用问题是促使VI版本

3、升级到V2版本的_个原因,再加上这个原因,这两个原因就是VI版本升级到V2版本最重要的两个因素。V2版本IndexBlock有两类:RootIndexBlock和NonRootIndexBlock,其中NonRootIndexBlock又分为IntermediateIndexBlock和LeafIndexBlock两种。HFile中索引结构类似于一棵树,RootIndexBlock表示索引数根节点zIntermediateIndexBlock表示中间节点,LeafIndexblock表示叶子节点,叶子节点

4、直接指向实际数据块。HFile中除了DataBlock需要索引之夕卜上一篇文章提到过BloomBlock也需要索引,索引结构实际上就是采用了single-level结构,文中BloomIndexBlock就是一种RootIndexBlocko对于DataBlock,由于HFile刚开始数据量较小,索引采用single-level结构,只有RootIndex—层索引,直接指向数据块。当数据量慢慢变大,RootIndexBlock满了之后,索引就会变为mutil-level结构,由一层索引变为两层,根节点指向

5、叶子节点,叶子节点指向实际数据块。如果数据量再变大,索引层级就会变为三层。下面就针对RootindexBlock和NonRootindexBlock两种结构进行解析,因为RootIndexBlock已经在上面一篇文章中分析过,此处简单带过,重点介绍NonRootIndexBlock结构(InterMediateIndexBlock和leafIndexBlock在内存和磁盘中存储格式相同/都为NonRootIndexBlock格式)。RootIndexBlockRootIndexBlock表示索引树根节点索

6、引块,可以作为bloom的直接索引,也可以作为data索引的根索引。而且对于single-level和mutil-level两种索引结构对应的RootIndexBlock略有不同,本文以mutil-level索弓結构为例进行分析(single-level索引结构是mutual・level的一种简化场景),在内存和磁盘中的格式如下图所示:IndexEntryindexEntryindexEntryMkRoafBiockO^etMadleafBIockOfxlrsicStieMk3Koy6ntry其中Inde

7、xEntry表示具体的索引对象,每个索引对象由3个字段组成,BlockOffset表示索引指向数据块的偏移量,BlockDataSize表示索弓指向数据块在磁盘上的大小,BlockKey表示索弓脂向数据块中的第Tkey。除此之外,还有另外3个字段用来记录MidKey的相关信息,MidKey表示HFile所有DataBlock中中间的一个DataBlock,用于在对HFile进行split操作时,快速定位HFile的中间位置。需要注意的是single-level索引结构和mutil-level结构相比,就只

8、缺少MidKey这三个字段。RootIndexBlock会在HFile解析的时候直接加载到内存中,此处需要注意在TrailerBlock中有一个字段为datalndexCount就表示此处IndexEntry的个数。因为IndexEntry并不定长,只有知道Entry的个数才能正确的将所有IndexEntry加载到内存。NonRootIndexBlock当HFile中DataBlock越来越多,single-level结构的索

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。