HBase 的MOB压缩分区策略介绍
HBase应用场景很广泛。社区前面有一系列文章。
大家能够到社区看看看。张少华同学本篇主要讲HBase的MOB压缩分区策略介绍,很赞。大力推荐!
社区系列文章:
介绍
HBase中等对象(MOB---MediumObject)存储特性引入是源自社区HBASE-11339。
对于中等大小的文档、图像等文件的存储(文件大小从100K到10MB)。可降低读取延迟和写入訪问时间[1]。
通过分离文件的IO路径和MOB文件对象。对文件採取不同的压缩策略,从而降低因为HBase压缩造成的写入扩大。
若一个表的MOB文件存储在MOB区域(MOB region)中,则意味着该区域中将存在大量的MOB文件。请參考下图中HBase MOB架构。
MOB体系结构
从上图我们能够看出MOB文件相对较小(小于1或者2个HDFS块)。为了提高HDFS的效率。通过MOB压缩方法将MOB文件定期合并为较大的文件,而且这样的压缩方法与正常的压缩过程相互独立。MOB压缩最初是将当天多个MOB文件合并为较大的MOB文件。通过以下演示样例我们能够更清楚了解这一过程。表t1有两个两个分区(r1,r2),一个列族f1,而且启用了MOB功能。
你能够看到例如以下两个前缀:
D279186428a75016b17e4df5ea43d080 相应分区r1中startkey的散列值
D41d8cd98f00b204e9800998ecf8427e 相应分区r2中startkey的散列值
在MOB区域中,从2016.1.1-2016.1.2。r1分区中每天有两个MOB文件。2016.1.1当天。分区r2中有三个MOB文件
通过MOB压缩后,r1、r2分区中同一日期的文件合并为一个文件,例如以下:
因为仅仅有在同一区而且为同一天的MOB文件才可压缩。因此在一个MOB区域中的文件夹下一年产生的MOB文件数量为365乘以分区数目。若有1000个分区,通过MOB压缩,10年后将会有365 x 1000 x 10,3.65(百万)个文件产生而且文件数量会一直增长。可是,因为HDFS中一个文件夹下文件存储受限[2]。若MOB文件数超过HDFS限制后。MOB表将不再可写入文件。HDFS的一个文件夹下默认的最大文件数为100万,那么对于1000个分区来说,文件存储数目将在3年左右达到这个极限值。
分区越多,最大文件数会越快达到这个极限。
从HBASE-16981引入按周和月的MOB压缩分区策略。对此MOB文件存放比例相应提高了7%和30%。
HBASE-16981基本思路是将一周或者一个月的MOB文件压缩合并为更大的文件。
依据ISO8601定义的周(起始为周一结束为周日),若採用周策略进行MOB压缩后,则每一个分区每周会产生一个文件,同理,用压缩方法按月压缩,每月会生成一个文件,终于在一个MOB区域文件夹下的文件数分别为52 乘以分区数和12乘以分区数。这样就大大降低了压缩后MOB文件的数量。
最初的方法
依据MOB压缩发生的频率,文件可能多次被压缩。比如。第一天全部的MOB文件被压缩为一个文件。第二天将第一天和第二天的MOB文件压缩为一个新的文件,第三天将第二天和第三天产生的文件压缩为一个新文件。以此类推,一个月后,第1天的文件压缩会超过30次,因此也就将写的IO数量扩大了30倍以上。
HBase MOB的设计目标是降低因为MOB压缩而导致的写入扩大。上述的这样的方法没能达到设计目标。
终于的方法
为了克服最初提出方案的不足,在HBASE-16981中採用了新的按周和月压缩策略。
图2展示了怎样按月压缩策略。同一时候按周压缩策略与此相似。
图2 按月MOB压缩策略
图2所看到的的MOB压缩发生在2016.11.15。
依据配置的MOB阈值,每日分区中的文件按周进行压缩。上图中11.14和11.15的两天的文件各自压缩。
当前月份(11月)中过去的几周的文件基于每周阈值分区进行压缩(MOB阈值 x 7)。如11.1-11.6和11.7-11.13的文件分别压缩。11月之前的文件按月进行压缩,比如10.1-10.31文件压缩在一起。须要注意的是11月的第一周是从10.31-11.6结束。
因为2016.10.31是10月的最后一天。因此当天的文件压缩是依照月分区进行压缩,这样11月的第一周压缩的天数仅仅剩下6天(11.1-11.6),假设MOB压缩阈值和压缩大小设置合理,那么第一周会有5个压缩文件。
通过这样的设计模式,MOB文件能够通过2个阶段或3个阶段完毕压缩。在每一个阶段,日、周、月分区都会随着MOB压缩阈值的添加而变化。通常情况下。MOB文件按月最多3次压缩,按周最多压缩2次。
具体的设计细节能够參考[3]。
使用方法
在默认情况下。MOB压缩分区策略是每日一次。
若要用周或月策略,能够在MOB列族中加入了一个新属性字段:MOB_COMPACT_PARTITION_POLICY。用户可通过HBase shell在创建表时设置该属性。比如:
同一时候也能够改变该属性字段值
假设压缩策略从每日改为每周或每月,或从每周改为每月。则下一个MOB压缩将又一次压缩之前压缩的MOB文件。假设策略从每月或每周改为每日或每月更新。则对已使用先前策略压缩的MOB文件将不会与新策略再次运行压缩。
结束语
HBASE-16981攻克了文件数大量添加的问题。并在Apache HBase 2.0.0版本号中使用。CDH的CDH5.4.0+及以后的版本号開始使用HBase MOB特性。当中从5.11.0開始使用HBASE-16981修复的版本号。
因为译者水平有限,有翻译不当之处还请大大家多多指出。互相学习。
HBase 的MOB压缩分区策略介绍的更多相关文章
- DART: a fast and accurate RNA-seq mapper with a partitioning strategy DART:使用分区策略的快速准确的RNA-seq映射器
DART: a fast and accurate RNA-seq mapper with a partitioning strategyDART:使用分区策略的快速准确的RNA-seq映射器 Abs ...
- hbase实战——(1.1 nosql介绍)
什么是nosql NoSQL(NoSQL = Not Only SQL),意思是不仅仅是SQL的扩展,一般指的是非关系型的数据库. 随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0 ...
- cassandra框架模型之一——Colum排序,分区策略 Token,Partitioner bloom-filter,HASH
转自:http://asyty.iteye.com/blog/1202072 一.Cassandra框架二.Cassandra数据模型 Colum / Colum Family, SuperColum ...
- GC之一--GC 的算法分析、垃圾收集器、内存分配策略介绍
一.概述 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了. jvm 中,程序计数器.虚拟机栈.本 ...
- hbase开放lzo压缩
hbase仅仅支持对gzip的压缩,对lzo压缩支持不好. 在io成为系统瓶颈的情况下,一般开启lzo压缩会提高系统的吞吐量. 但这须要參考详细的应用场景,即是否值得进行压缩.压缩率是否足够等等. ...
- Linux内核策略介绍
Linux内核策略介绍学习笔记 主要内容 硬件 策略 CPU 进程调度.系统调用.中断 内存 内存管理 外存 文件IO 网络 协议栈 其他 时间管理 进程调度 内核的运行时间 系统启动.中断发 ...
- HBase在HDFS上的目录介绍
总所周知,HBase 是天生就是架设在 HDFS 上,在这个分布式文件系统中,HBase 是怎么去构建自己的目录树的呢? 第一,介绍系统级别的目录树. 一.0.94-cdh4.2.1版本 系统级别的一 ...
- 对已经存在的hbase表修改压缩方式
业务上可能会遇到这种情况,在最初创建hbase表时候,未指定压缩方式,当数据导入之后,由rowkey带来的数据膨胀导致hdfs上的数据大小远远大于原始数据大小.所以这时候可能就不得不考虑使用压缩,但是 ...
- Spark GraphX图算法应用【分区策略、PageRank、ConnectedComponents,TriangleCount】
一.分区策略 GraphX采用顶点分割的方式进行分布式图分区.GraphX不会沿着边划分图形,而是沿着顶点划分图形,这可以减少通信和存储的开销.从逻辑上讲,这对应于为机器分配边并允许顶点跨越多台机器. ...
随机推荐
- ABBYY PDF Transformer+系统要求
ABBYY PDF Transformer+是一个新的,全面的巧妙解决PDF文档的工具,它将泰比的光学字符识别(OCR)技术和Adobe®PDF技术完美结合,以确保实现便捷地处理任何类型的PDF文件, ...
- Photo Sphere Viewer 全景图
Photo Sphere Viewer 一款基于 three.js 的简易3D插件,方便,实用,友好,看到网上有些API有错误,所以自己写一个修正版的 该js插件可以360度旋转查看全景图,也可以上 ...
- 公众平台返回原始数据为: 错误代码-40164,错误信息-invalid ip, not in whitelist hint
1.登录公众平台,进入开发->基本配置页面 2.点击配置进入IP白名单设置页 3.填写微客助理IP地址:183.63.25.68 4.管理员扫码确认保存 5.设置成功后点击“关闭” 6.修改成功 ...
- [Bayes] Hist & line: Reject Sampling and Importance Sampling
吻合度蛮高,但不光滑. > L= > K=/ > x=runif(L) > *x*(-x)^/K)) > hist(x[ind],probability=T, + xla ...
- [Tensorflow] RNN - 04. Work with CNN for Text Classification
Ref: Combining CNN and RNN for spoken language identification Ref: Convolutional Methods for Text [1 ...
- 获取HttpServletRequest请求Body中的内容
在实际开发过程中,经常需要从 HttpServletRequest 中读取HTTP请求的body内容,俗话说的好”好记性不如烂笔头“,特在此将其读取方法记录一下. import java.io.Buf ...
- sencha touch 入门学习资料大全(2015-12-30)
现在sencha touch已经更新到2.4.2版本了 重新整理一下资料 官方网站:http://www.sencha.com/products/touch/ 在线文档:http://docs.sen ...
- Mac下利用safari调试 Cordova的WebApp
1.打开Safari,打开顶部菜单栏中的'偏好设置',切换'高级',将“在菜单栏中显示开发菜单”钩上: 2.打开iPhone的“设置”程序,进入“Safari”->“高级”页面开启“Web检查器 ...
- 不偏移的天地图地图服务-SuperMap版
在<不偏移的天地图地图服务-ArcGIS版>中,提供了相应的服务地址:而SuperMap中,则是将纠偏的方法集成到程序中,只需要修改一个配置参数,则可以实现天地图的纠偏. 打开Web型数据 ...
- spark - Locality Level
这几个值在图中代表 task 的计算节点和 task 的输入数据的节点位置关系 PROCESS_LOCAL: 数据在同一个 JVM 中,即同一个 executor 上.这是最佳数据 locality. ...