网易视频云:HBase – Memstore Flush深度解析.doc

网易视频云:HBase – Memstore Flush深度解析.doc

ID:49531667

大小:53.77 KB

页数:7页

时间:2020-03-02

网易视频云:HBase – Memstore Flush深度解析.doc_第1页
网易视频云:HBase – Memstore Flush深度解析.doc_第2页
网易视频云:HBase – Memstore Flush深度解析.doc_第3页
网易视频云:HBase – Memstore Flush深度解析.doc_第4页
网易视频云:HBase – Memstore Flush深度解析.doc_第5页
资源描述:

《网易视频云:HBase – Memstore Flush深度解析.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、vcloud.163.com网易视频云:HBase–MemstoreFlush深度解析网易视频云是网易公司旗下的视频云服务产品,以Paas服务模式,向开发者提供音视频编解码SDK和开放API,助力APP接入音视频功能。现在,网易视频云的技术专家给大家分享一则技术深度文章:HBase–MemstoreFlush深度解析。  Memstore是HBase框架中非常重要的组成部分之一,是HBase能够实现高性能随机读写至关重要的一环。深入理解Memstore的工作原理、运行机制以及相关配置,对hbase集群管理、性能调优都有着非常重要的帮助。  Memstore概述  HBase中,Region是

2、集群节点上最小的数据服务单元,用户数据表由一个或多个Region组成。在Region中每个ColumnFamily的数据组成一个Store。每个Store由一个Memstore和多个HFile组成,如下图所示:  vcloud.163.com  之前我们提到,HBase是基于LSM-Tree模型的,所有的数据更新插入操作都首先写入Memstore中(同时会顺序写到日志HLog中),达到指定大小之后再将这些修改操作批量写入磁盘,生成一个新的HFile文件,这种设计可以极大地提升HBase的写入性能;另外,HBase为了方便按照RowKey进行检索,要求HFile中数据都按照RowKey进行排序

3、,Memstore数据在flush为HFile之前会进行一次排序,将数据有序化;还有,根据局部性原理,新写入的数据会更大概率被读取,因此HBase在读取数据的时候首先检查请求的数据是否在Memstore,写缓存未命中的话再到读缓存中查找,读缓存还未命中才会到HFile文件中查找,最终返回merged的一个结果给用户。  可见,Memstore无论是对HBase的写入性能还是读取性能都至关重要。其中flush操作又是Memstore最核心的操作,接下来重点针对Memstore的flush操作进行深入地解析:首先分析HBase在哪些场景下会触发flush,然后结合源代码分析整个flush的操作流

4、程,最后再重点整理总结和flush相关的配置参数,这些参数对于性能调优、问题定位都非常重要。  MemstoreFlush触发条件  HBase会在如下几种情况下触发flush操作,需要注意的是MemStore的最小flush单元是HRegion而不是单个MemStore。可想而知,如果一个HRegion中Memstore过多,每次flush的开销必然会很大,因此我们也建议在进行表设计的时候尽量减少ColumnFamily的个数。  Memstore级别限制:当Region中任意一个MemStore的大小达到了上限(hbase.hregion.memstore.flush.size,默认12

5、8MB),会触发Memstore刷新。vcloud.163.com  Region级别限制:当Region中所有Memstore的大小总和达到了上限(hbase.hregion.memstore.block.multiplier*hbase.hregion.memstore.flush.size,默认2*128M=256M),会触发memstore刷新。  RegionServer级别限制:当一个RegionServer中所有Memstore的大小总和达到了上限(hbase.regionserver.global.memstore.upperLimit*hbase_heapsize,默认40

6、%的JVM内存使用量),会触发部分Memstore刷新。Flush顺序是按照Memstore由大到小执行,先FlushMemstore最大的Region,再执行次大的,直至总体Memstore内存使用量低于阈值(hbase.regionserver.global.memstore.lowerLimit*hbase_heapsize,默认38%的JVM内存使用量)。  当一个RegionServer中HLog数量达到上限(可通过参数hbase.regionserver.max.logs配置)时,系统会选取最早的一个HLog对应的一个或多个Region进行flush  HBase定期刷新Mems

7、tore:默认周期为1小时,确保Memstore不会长时间没有持久化。为避免所有的MemStore在同一时间都进行flush导致的问题,定期的flush操作有20000左右的随机延时。  手动执行flush:用户可以通过shell命令flush‘tablename’或者flush‘regionname’分别对一个表或者一个Region进行flush。  MemstoreFlush流程  为了减少flush过程

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

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

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