案例篇-HBase 实战之 MOB 使用指南

本文涉及的产品
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,通用型 2核4GB
简介: 1. 背景 HBase 可以很方便的将图片、文本等文件以二进制的方式进行存储。虽然 HBase 一般可以处理从 1 字节到 10MB 大小的二进制对象,但是 HBase 通常对于读写路径的优化主要是针对小于 100KB 的值。

1. 背景

HBase 可以很方便的将图片、文本等文件以二进制的方式进行存储。虽然 HBase 一般可以处理从 1 字节到 10MB 大小的二进制对象,但是 HBase 通常对于读写路径的优化主要是针对小于 100KB 的值。当 HBase 处理数据为 100KB~10MB 时, 由于分裂(split)和压缩(compaction)会引起写的放大,从而会降低 HBase 性 能。所以在 HBase2.0+引入了 MOB 特性,这样保持了 HBase 的高性能、强一致 性和低开销。

若要启用 MOB 功能,需要在每个 RegionServer 进行配置,并在建表或者修改表 时对指定列族启用 MOB 特性。在 HBase 尝鲜版中启用 MOB 功能,需要由 admin 用户设置定期进程,以重新优化 MOB 数据的分布。

2. 启用和配置 RegionServer 上的 MOB 特性

增加或者修改 hbase-site.xml 文件中的某些配置

2.1 设置 MOB 文件的缓存配置

_2019_01_10_11_11_54

说明:

  1. hbase.mob.file.cache.size 打开的文件句柄缓存数,默认值是 1000。通 过增加文件句柄数可以提高读的性能,可以减少频繁的打开、关闭文件。若这个值设置过大,会导致“too many opened file handers”。
  2. hbase.mob.cache.evict.period MOB 缓存淘汰缓存的 MOB 文件时间间隔
    (以秒为单位),默认值为 3600 秒。
  3. hbase.mob.cache.evict.remain.ratio 当缓存的 MOB 文件数 目超 过hbase.mob.file.cache.size 设置的数目后,会触发 MOB 缓存淘汰机制 (eviction),0.5f 为剩余的 MOB 缓存比率(0~1),默认的比率为 0.5f。

2.2 配置 MobMasterObserver 作为协处理器的 master

主要用于表在删除后,MOB 文件的归档。

_2019_01_10_11_33_17

MOB的管理 MOB 特性为 HBase 引入新的读写路径,此时我们采用外部工具对其进行优化处理,一个是 expiredMobFileCleanerTTL 处理 TTL 和时间的过期数据,另一个是清理工具用来合并小的 MOB 文件或者多次更新、删除的 MOB 文件。

2.2.1 清理过期的 MOB 数据(expiredMobFileCleaner)

_2019_01_10_11_34_17

设置清理延时

_2019_01_10_11_34_57

2.2.2 清理工具

_2019_01_10_11_35_31

属性值设置如下:

_2019_01_10_11_54_35

说明:

  1. hbase.mob.compaction.invalid.file.ratio 如果在 MOB 文件中删除了太 多的单元格,则被视为作为无效文件,需要重新写入或者合并。当 MOB 文件 (mobFileSize)大小减去存在的单元格(existingCellsSize)大小之差除 以 MOB 文件(mobFileSize)的比率小于设定的值时,我们就认为其为无效 文件。默认值为0.3f。
  2. hbase.mob.compaction.small.file.threshold 如果 MOB 的大小小于阈值, 则视为小文件,需要合并。默认值为64MB。
  3. hbase.mob.compaction.memstore.flush.size MOB 里 memstore 大小,超过 此大小就会 flush,并且每个 sweep reducer 拥有各自 memstore。

警告
使用清理工具最坏的情况:MOB 文件压缩合并成功,但是相关的(put)更新失败。 这意味着新的 MOB 文件已经创建但未能将新的 MOB 文件路径。存入 HBase 中, 因此 HBase 不会指向这些 MOB 文件。

小贴士

请检查 yarn-site.xml 的配置,在 yarn.application.classpath 中添加 hbase 的安装 路径:$HBASE_HOME/ 和 hbase 的 lib 路径: $HBASE_HOME/lib/

_2019_01_10_11_55_54

在表中开启 MOB 特性 a 将列族设置为 MOB

_2019_01_10_11_56_20

2.2.3 设置 MOB 单元格的阈值,默认为 102400

_2019_01_10_11_57_07

对于客户端而言,MOB 单元格操作和普通单元格类似。

2.2.4 插入 MOB 值

_2019_01_10_11_59_07

2.2.5 获取 MOB 值

_2019_01_10_11_59_41

2.2.6 获取 MOB 所有数据(raw =true)

_2019_01_10_1_15_49

运行一个 MOB 示例

_2019_01_10_1_16_32

相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
4月前
|
数据可视化 JavaScript 关系型数据库
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(五)FineBI可视化
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(五)FineBI可视化
44 0
|
4月前
|
SQL 消息中间件 关系型数据库
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(四)实时计算需求及技术方案
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(四)实时计算需求及技术方案
76 0
|
4月前
|
SQL 消息中间件 分布式数据库
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(三)离线分析
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(三)离线分析
63 0
|
4月前
|
消息中间件 存储 数据采集
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(二)数据源
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(二)数据源
53 0
|
4月前
|
存储 消息中间件 分布式数据库
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(一)案例需求
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(一)案例需求
56 0
|
4月前
|
存储 SQL 分布式数据库
分布式数据恢复-hbase+hive分布式存储数据恢复案例
hbase+hive分布式存储数据恢复环境: 16台某品牌R730XD服务器节点,每台物理服务器节点上有数台虚拟机,虚拟机上配置的分布式,上层部署hbase数据库+hive数据仓库。 hbase+hive分布式存储故障&初检: 数据库文件被误删除,数据库无法使用。 通过现场对该分布式环境的初步检测,发现虚拟机还可以正常启动,虚拟机里面的数据库块文件丢失。好在块文件丢失之后没有对集群环境写入数据,底层数据损坏可能性比较小。
|
8月前
|
存储 关系型数据库 分布式数据库
|
分布式数据库 Hbase
|
分布式计算 分布式数据库 Scala
Spark查询Hbase小案例
写作目的 1)正好有些Spark连接HBase的需求,当个笔记本,到时候自己在写的时候,可以看 2)根据rowkey查询其实我还是查询了好久才找到,所以整理了一下 3)好久没发博客了,水一篇
179 0
Spark查询Hbase小案例
|
存储 分布式计算 负载均衡
深入浅出 HBase 实战|青训营笔记
1.介绍 HBase 的适用场景和数据模型;2.分析 HBase 的整体架构和模块设计;3.针对大数据场景 HBase 的解决方案
183 0
深入浅出 HBase 实战|青训营笔记