前言

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 特性相关推荐

  1. 一文读懂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 ...

  2. 一文读懂服务器centos7.0安装指导指南(详细)

    一文读懂服务器centos7.0安装指导指南(详细) 一.服务器到货核对 服务器进行软件部署前,对其硬件性能和质量是否符合要求进行核对.核对内容主要包括服务器的外观和性能参数两方面,通过核对达到熟悉服 ...

  3. 一文读懂,从0到1设计电商评价产品

    我们经常听说某地方的特色产品或景色,如东北的猪肉炖粉条.武汉的热干面.四川火锅.你在没有实际尝过的时候,为什么也会很肯定地说这些地方的美食特别好,而且还会慕名而去呢? 这就是口碑,美食通过口口相传的方 ...

  4. 一文读懂HBase(安装,架构原理,优化,API,es二级索引,phoenix)

    1.HBase简介 HBASE是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群. HBASE的目标是存储并处理大型的数据 ...

  5. 浪潮服务器nf5270m5做raid_一文读懂服务器centos7.0安装指导指南(详细)

    一.服务器到货核对 服务器进行软件部署前,对其硬件性能和质量是否符合要求进行核对.核对内容主要包括服务器的外观和性能参数两方面,通过核对达到熟悉服务器硬件的目的. 1.1外观核对 服务器外观核对分以下 ...

  6. 一文读懂功率放大器(功率放大器的特性是什么意思)

    功率放大器是一种电子放大器,旨在增加给定输入信号的功率幅度.功率放大器一般要求得到一定的不失真或者较小失真的输出功率,在大信号状态下进行工作,主要是输出较大功率. 功率放大器的特性介绍: 1.增益 功 ...

  7. 一文读懂大数据平台——写给大数据开发初学者的话!

     一文读懂大数据平台--写给大数据开发初学者的话! 文|miao君 导读: 第一章:初识Hadoop 第二章:更高效的WordCount 第三章:把别处的数据搞到Hadoop上 第四章:把Hado ...

  8. 从实验室走向大众,一文读懂Nanopore测序技术的发展及应用

    关键词/Nanopore测序技术    文/基因慧 随着基因测序技术不断突破,二代测序的发展也将基因检测成本大幅降低.理想的测序方法,是对原始DNA模板进行直接.准确的测序,消除PCR扩增带来的偏差, ...

  9. 一文读懂Faster RCNN

    来源:信息网络工程研究中心本文约7500字,建议阅读10+分钟 本文从四个切入点为你介绍Faster R-CNN网络. 经过R-CNN和Fast RCNN的积淀,Ross B. Girshick在20 ...

最新文章

  1. 设备树与驱动的关系_Linux I2C驱动竟然如此简单?手把手教你写i2c驱动
  2. 前端入门(加载特效,css)
  3. matlab 已知函数值纵坐标值(Y值)获得对应的横坐标
  4. mongodb 添加用户及权限设置详解
  5. 《交互式程序设计 第2版》一第2章 编程基础
  6. Java容器Set接口
  7. 十大最热门人工智能技术
  8. 漫画:什么是二分查找?(修订版)
  9. editormd显示后台html,editormd文档不显示内容了,js也全部都引入了
  10. Python语言特色集锦
  11. 机器阅读理解之开山鼻祖Teaching Machines to Read and Comprehend
  12. 服务器电脑通电自动开机
  13. 18-windows10如何将电脑图标显示在桌面
  14. 各大电商平台API数据,包括淘宝天猫的api明细接口
  15. ffmpeg4.4 学习笔记 -(2)读取视频文件并用SDL 显示
  16. 音视频开发之旅(58) -H.264 帧内预测
  17. selenium使用PhantomJS浏览器报错module ‘selenium.webdriver‘ has no attribute ‘PhantomJS‘
  18. Python的作者吉多·范罗苏姆简介
  19. 小菜狗套Unet分割模型
  20. 使用O2OA(翱途)体验人力资源管理系统

热门文章

  1. 【GIS前沿】周成虎院士:GIS的大数据时代展望(PPT分享)
  2. python_字符串正则表达式
  3. miui12android11,基于安卓11正式版打造 MIUI 12稳定版内测 首批支持小米系列
  4. JS-Cookie操作
  5. 最新升级pip命令,查看pip版本命令,pycharm升级pip命令,推荐收藏关注不迷路
  6. 【VC ++ 2010】 C语言 计算机二级编译器 Visual C ++ 2010 Express(中文学习版)的安装与使用
  7. c#中用LumiSoft类库实现IMAP4接收…
  8. CBAM:融合通道和空间注意力的注意力模块
  9. 2022的最后一杯酒
  10. 《伤寒论》398条——张仲景