一文读懂 HBase 2.0 MOB 特性

栏目: 数据库 · 发布时间: 5年前

内容简介:HBase 2.0 发布了很多新的特性,其中一个非常值得关注的是中等对象存储的特性,即 HBase MOB(Medium Object Storage)特性。HBase 2.0 MOB的引入,扩宽了HBase在人工智能、物联网等领域的应用场景。HBase MOB特性是由在MOB特性引入之前,HBase也能够存储大小在100KB以上的二进制对象,但是HBase

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 得到支持:

满足先决条件后,开启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 数据大小的最大值,单位 字节;

通过该工具类测试,控制台会打印类似下面的信息,供参考:

HBase MOB小结

Apache HBase 2.0 重新定义了中等大小对象随机读写的方式,为HBase对象存储提供了一体化的解决方案,拓展了HBase的应用场景。请关注 后续 HBase MOB 特性实际使用场景介绍。

参考文档

HBase 2.0 MOB 设计文档:

https://issues.apache.org/jira/secure/attachment/12724468/HBase%20MOB%20Design-v5.pdf

HBase 2.0 MOB 使用手册:

https://issues.apache.org/jira/secure/attachment/12851133/MOB%20user%20guide_v6.docx

喜欢就点一下在看呗


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

面向模式的软件体系结构(卷1) (平装)

面向模式的软件体系结构(卷1) (平装)

Frank Buschmann、Regine meunier、Hans Rohnert、Peter Sommerlad、Michael Stal / 贲可荣、郭福亮 / 机械工业出版社 / 2003-1 / 45.0

一起来看看 《面向模式的软件体系结构(卷1) (平装)》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具