一文读懂HBase 2.0 MOB 特性
前言
HBase 2.0 发布了很多新的特性,其中一个非常值得关注的是中等对象存储的特性,即 HBase MOB(Medium Object Storage)特性。HBase 2.0 MOB的引入,扩宽了HBase在人工智能、物联网等领域的应用场景。
初识HBase MOB
HBase MOB特性是由HBASE-11339这个issue引入的,主要解决的是HBase对中等大小对象(100KB~10MB)的低延时读写支持,提升HBase对象存储的能力。这个特性的引入,使得HBase能够非常适合存储图片、文件、短视频等二进制对象,拓宽了HBase在人工智能、物联网等领域的应用场景。
在MOB特性引入之前,HBase也能够存储大小在100KB以上的二进制对象,但是HBase针对大小100KB以下的数据在读写路径上做了优化,因此在处理大量的大小在100KB以上的数据时,性能其实非常低效,由压缩与分裂带来的I/O压力会使HBase整体性能下降,这也是要引入MOB的原因。当使用MOB特性时,理想的二进制对象大小应该在100KB~10MB之间,超过10MB的文件HBase也能够进行存储但是效率相对比较低,一些较大的文件还是建议直接存放在HDFS上,充分发挥HDFS文件存储的能力。
剖析HBase MOB
架构设计
包含MOB特性的HBase整体架构如下图:
由于大部分担心来自于压缩带来的IO压力,因此HBase 2.0将MOB移出普通region的管理来避免region split和compaction。HBase MOB在架构设计上类似于 HBase + HDFS 的方式,通过分离文件引用和 MOB 对象的 IO 路径来实现。
版本支持
HBase MOB是HBase 2.0 版本引入的特性,详见HBASE-11339,因此原生的Apache HBase要2.0及以上版本才支持。
此外,目前使用比较多的CDH和HDP均已提前解决了HBase-11339 issue,在各自更早的HBase版本中便已经支持MOB特性了,具体情况如下:
- Cloudera:从CDH5.4.x版本开始支持MOB特性,详细可参考 https://blog.cloudera.com/blog/2015/06/inside-apache-hbases-new-support-for-mobs
- Hortonworks:从HDP2.5.x版本开始支持MOB特性,详细可参考 https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.5.0/bk_data-access/content/ch_MOB-support.html
如何开启MOB特性
开启HBase MOB特性有一个先决条件,就是必须支持HFile v3。通过修改hbase-site.xml中hfile.format.version属性值为 3 得到支持:
<property><name>hfile.format.version</name><value>3</value>
</property>
满足先决条件后,开启MOB其实很简单,创建表时指定以下列族属性或修改列族属性:
IS_MOB:设置为true,这项配置是必须的;
MOB_THRESHOLD:设置MOB阈值,超过阈值的被当做MOB存储,默认100KB。
HBase Shell命令:
hbase> create ‘t1’, {NAME => ‘f1’, IS_MOB => true, MOB_THRESHOLD => 102400}
hbase> alter ‘t1’, {NAME => ‘f1’, IS_MOB => true, MOB_THRESHOLD => 102400}
HBase API代码:
HColumnDescriptor hcd = new HColumnDescriptor(“f”);
hcd.setMobEnabled(true);
hcd.setMobThreshold(102400L);
配置MOB压缩策略
为了减少MOB HFiles的数量以提升性能,HBase会定期做MOB Compaction,默认是按天压缩。
另外,HBASE-16981又引入了按周和月的MOB压缩聚合策略,改善了MOB的存储(CDH HBase自CDH5.11.0开始支持HBASE-16981修复的版本)。
通过属性MOB_COMPACT_PARTITION_POLICY设置不同的压缩聚合策略,可选值有daily、weekly和monthly,例如:
hbase> alter ‘t1’, {NAME => ‘f1’, IS_MOB => true, MOB_THRESHOLD => 102400, MOB_COMPACT_PARTITION_POLICY => ‘weekly’}
配置MOB缓存属性
为了提高MOB读取的性能,服务端会保留一级LRU缓存,相关的参数包含:
- hbase.mob.file.cache.size:缓存MOB文件的数量,默认1000;
- hbase.mob.cache.evict.period:缓存清理周期,默认是3600s;
- hbase.mob.cache.evict.remain.ratio:缓存清理后保留文件的比例,取值范围为0~1,默认0.5f。
MOB功能/性能测试
HBase官网提供一个用于测试MOB功能的工具类org.apache.hadoop.hbase.IntegrationTestIngestMOB,可以通过命令行直接使用,命令如下:
$ hbase org.apache.hadoop.hbase.IntegrationTestIngestWithMOB
-threshold 1024
-minMobDataSize 512
-maxMobDataSize 5120
其中各个参数的含义如下:
- threshold:MOB阈值,单位 字节;
- minMobDataSize:MOB 数据大小的最小值,单位 字节;
- maxMobDataSize MOB 数据大小的最大值,单位 字节;
通过该工具类测试,控制台会打印类似下面的信息,供参考:
19/04/08 19:55:23 INFO util.MultiThreadedAction: [W:20] Keys=5248, cols=58.3 K, time=00:00:05 Overall: [keys/s= 1048, latency=18 ms] Current: [keys/s=1049, latency=18 ms], wroteUpTo=199999
HBase MOB小结
Apache HBase 2.0 重新定义了中等大小对象随机读写的方式,为HBase对象存储提供了一体化的解决方案,拓展了HBase的应用场景。请关注后续HBase MOB 特性实际使用场景介绍。
参考文档:
- HBase 2.0 MOB 设计文档
- HBase 2.0 MOB 使用手册
往期推荐
1、HBase最佳实践 | 聊聊HBase核心配置参数
2、Apache Hudi:剑指数据湖的增量处理框架
3、Hadoop社区比 Ozone 更重要的事情
4、MapReduce Shuffle 和 Spark Shuffle 结业篇
一文读懂HBase 2.0 MOB 特性相关推荐
- 一文读懂Fabric 2.0新特性
文章目录 前言 1. 智能合约的去中心化管理 1.1 链码新的生命周期 1.1.1 链码的安装和定义 1.1.1.1 打包链码 1.1.1.2 安装链码 1.1.1.3 同意链码的定义 1.1.1.4 ...
- 一文读懂服务器centos7.0安装指导指南(详细)
一文读懂服务器centos7.0安装指导指南(详细) 一.服务器到货核对 服务器进行软件部署前,对其硬件性能和质量是否符合要求进行核对.核对内容主要包括服务器的外观和性能参数两方面,通过核对达到熟悉服 ...
- 一文读懂,从0到1设计电商评价产品
我们经常听说某地方的特色产品或景色,如东北的猪肉炖粉条.武汉的热干面.四川火锅.你在没有实际尝过的时候,为什么也会很肯定地说这些地方的美食特别好,而且还会慕名而去呢? 这就是口碑,美食通过口口相传的方 ...
- 一文读懂HBase(安装,架构原理,优化,API,es二级索引,phoenix)
1.HBase简介 HBASE是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群. HBASE的目标是存储并处理大型的数据 ...
- 浪潮服务器nf5270m5做raid_一文读懂服务器centos7.0安装指导指南(详细)
一.服务器到货核对 服务器进行软件部署前,对其硬件性能和质量是否符合要求进行核对.核对内容主要包括服务器的外观和性能参数两方面,通过核对达到熟悉服务器硬件的目的. 1.1外观核对 服务器外观核对分以下 ...
- 一文读懂功率放大器(功率放大器的特性是什么意思)
功率放大器是一种电子放大器,旨在增加给定输入信号的功率幅度.功率放大器一般要求得到一定的不失真或者较小失真的输出功率,在大信号状态下进行工作,主要是输出较大功率. 功率放大器的特性介绍: 1.增益 功 ...
- 一文读懂大数据平台——写给大数据开发初学者的话!
一文读懂大数据平台--写给大数据开发初学者的话! 文|miao君 导读: 第一章:初识Hadoop 第二章:更高效的WordCount 第三章:把别处的数据搞到Hadoop上 第四章:把Hado ...
- 从实验室走向大众,一文读懂Nanopore测序技术的发展及应用
关键词/Nanopore测序技术 文/基因慧 随着基因测序技术不断突破,二代测序的发展也将基因检测成本大幅降低.理想的测序方法,是对原始DNA模板进行直接.准确的测序,消除PCR扩增带来的偏差, ...
- 一文读懂Faster RCNN
来源:信息网络工程研究中心本文约7500字,建议阅读10+分钟 本文从四个切入点为你介绍Faster R-CNN网络. 经过R-CNN和Fast RCNN的积淀,Ross B. Girshick在20 ...
最新文章
- 设备树与驱动的关系_Linux I2C驱动竟然如此简单?手把手教你写i2c驱动
- 前端入门(加载特效,css)
- matlab 已知函数值纵坐标值(Y值)获得对应的横坐标
- mongodb 添加用户及权限设置详解
- 《交互式程序设计 第2版》一第2章 编程基础
- Java容器Set接口
- 十大最热门人工智能技术
- 漫画:什么是二分查找?(修订版)
- editormd显示后台html,editormd文档不显示内容了,js也全部都引入了
- Python语言特色集锦
- 机器阅读理解之开山鼻祖Teaching Machines to Read and Comprehend
- 服务器电脑通电自动开机
- 18-windows10如何将电脑图标显示在桌面
- 各大电商平台API数据,包括淘宝天猫的api明细接口
- ffmpeg4.4 学习笔记 -(2)读取视频文件并用SDL 显示
- 音视频开发之旅(58) -H.264 帧内预测
- selenium使用PhantomJS浏览器报错module ‘selenium.webdriver‘ has no attribute ‘PhantomJS‘
- Python的作者吉多·范罗苏姆简介
- 小菜狗套Unet分割模型
- 使用O2OA(翱途)体验人力资源管理系统
热门文章
- 【GIS前沿】周成虎院士:GIS的大数据时代展望(PPT分享)
- python_字符串正则表达式
- miui12android11,基于安卓11正式版打造 MIUI 12稳定版内测 首批支持小米系列
- JS-Cookie操作
- 最新升级pip命令,查看pip版本命令,pycharm升级pip命令,推荐收藏关注不迷路
- 【VC ++ 2010】 C语言 计算机二级编译器 Visual C ++ 2010 Express(中文学习版)的安装与使用
- c#中用LumiSoft类库实现IMAP4接收…
- CBAM:融合通道和空间注意力的注意力模块
- 2022的最后一杯酒
- 《伤寒论》398条——张仲景