HBase技术与应用实践 | HBase2.0重新定义小对象实时存取

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云数据库 Tair(兼容Redis),内存型 2GB
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
简介: 本次分享来自中国HBase技术社区第七届MeetUp成都站,分享嘉宾天引 阿里巴巴 技术专家专注在大数据领域,拥有多年分布式、高并发、大规模系统的研发与实践经验,先后参与HBase、Phoenix、Lindorm等产品的内核引擎研发,目前负责阿里上万节点的HBase As a Service的发展与落地。

本次分享来自中国HBase技术社区第七届MeetUp成都站,分享嘉宾天引 阿里巴巴 技术专家专注在大数据领域,拥有多年分布式、高并发、大规模系统的研发与实践经验,先后参与HBase、Phoenix、Lindorm等产品的内核引擎研发,目前负责阿里上万节点的HBase As a Service的发展与落地。
分享主题:HBase2.0重新定义小对象实时存取
内容概要:小对象,特别指1K~10MB范围的数据,比如图片,短视频,文档等广泛的存在于人工智能,医疗,教育,生活分享,电子商务等领域。HBase2.0在MOB技术的加持下重新定义小对象实时存取,具有低延迟,读写强一致,检索能力强,水平易扩展等关键能力。本文介绍了MOB特性的原理与实现,以及与经典对象存储相比,MOB带来的差异性与优势。

下载链接:http://hbase.group/slides/167

参考链接:HBase2.0重新定义小对象实时存取


1.背景介绍

HBase2.0加持MOB技术,支持小对象实时存取,具有读写强一致,低延迟,高并发等特点,并兼容所有企业级特性如Snapshot,Replication。

MOB问题背景诸如以下问题:

  • IO放大:

    • 多副本

    • WAL

    • Flush

    • Compaction

  • 资源限制

    • ECS 16核64G 5Gbps

    • 高效云盘140MBps

    • ECS15个挂载点

  • 写入瓶颈

    • Compaction落后导致文件数上升,进而导致flush延迟,进而导致内存瓶颈,最终阻塞写入;同时文件数过多导致查询慢

    • 假设网络IO放大系数=5,则实际可用带宽为5Gbps / 8 / 5 = 128MB/s,对于1MB对象单机能提供的TPS=128


2.MOB原理与背景

解决思路:降低Compaction的频率,一天或者一周做一次合并。

  • 系统架构

dd156832cce5b348e160b8af7c68c64de281a272
47bb5763adf3f517dc2e8c3c8a6c68fa313b1eff
1122d64344788c5c15a3ad5212b8c8e195a59bf4
c98e4f8873e1f27e7eecf68a4138ceeafd4aca0e
e84e72ed4adf9eec73ad67be8ad02dc2dd9fcec0
  • MOB合并策略

    • 分组合并

      • 按照文件所属分区以及日期两个维度进行分区,分区内的文件进行合并称为:PartitionedMobCompactor

    • 默认每日合并

      • 按天分区,小于阈值的文件参与合并,阈值默认为1028MB

    • 周月合并

      • 周合并,按周分区,当前周文件小于阈值的参与,其它周的文件小于7*阈值的参与

      • 月合并,按月分区,当前周不参与,本月周小于7*阈值参与,其它月小于28*阈值的参与

  • MOB缓存

    • 文件句柄缓存

      • hbase.mob.file.cache.size = 1000

      • LRU cache

    • MOB对象缓存

      • 复用BlockCache

  • 使用方式

    • Shell访问

      • hbase> create 't1', {NAME => 'f1', IS_MOB => true, MOB_THRESHOLD => 102400} 

      • hbase> alter ‘t1’, {NAME => ‘f1’, IS_MOB => true, MOB_THRESHOLD => 102400} 

    • Java API

      • HColumnDescriptor hcd = new HColumnDescriptor(“f”);

        hcd.setMobEnabled(true);

        hcd.setMobThreshold(102400L);


3.MOB VS. 传统对象存储

  • 回顾对象存储

    • 模型

      • KV 结构

      • 一组KV组成的集合成为Bucket

      • 缺少灵活性

    • API

      • 支持前缀扫描,获取符合条件的Keys

      • 通过Key获取对象

      • 检索能力弱

    • 访问协议

      • REST

      • 简洁,语言无关

      • 消耗更多的链接和网络带宽

    • 计费模式

      • 按请求次数计费

      • 请求频率越高成本越高

      • Bug可能引发计费灾难

  • 云HBase与对象存储对比


d32a089b8764e637cb0fc4e4cf1773a0eb6166ec
  • 从一条SQL开始

    • 用户表T:包含三个属性S1、S2、S3

      属性的大小为50bytes左右,包含一个对象数据Object从100KB~10MB

      S1

      S2

      S3

      Object

      查询 select Object from T where S1 = xxx and S2 > yyy and S3 < zzz

  • 对象存储方案

    • 设计逻辑表为:S1+S2+S3 => Object,将S1、S2、S3组合成一个key

6bba5d7068ff04c1241a26196cce764e0945008e

    • 优势

      • 读写强一致

      • 支持水平扩展

    • 劣势

      • 实时性差,一次请求要查询N次服务器

      • 检索能力不足,仅支持key的前缀检索

      • 当属性列增多,特别是动态增加的情况下,对象存储很难支持(key会变得非常复杂)

  • MySQL+对象存储

fdc774c44ed1d894fda1542a67baf6dfb12cf433
    • 优势

      • 检索能力强

      • 支持存储结构化数据

    • 劣势

      • 实时性差,一次请求要查询N次服务器

      • 读写存在不一致问题

      • 不支持动态列

      • 运维复杂

  • HBase MOB

d1bf4030d6a655ace6bc616d0898f3b7f8e7c8fd
    • 优势

      • 实时查询,延迟低

      • 读写强一致

      • 检索能力强

      • 支持存储结构化数据

      • 支持动态列

      • 支持水平扩展

      • 易于维护

  • 各方案对比

01ca3ab2eaf64cbbfeb240db753067f9b7f985a3

4.总结与展望

HBase2.0重新定义了小对象实时存取的业务访问方式,不再是索引+对象的多次查询,提供简洁的一体化解决方案。具有访问延迟低,读写强一致,检索能力强,水平易扩展等关键能力;并且具备动态列,多版本等灵活的功能;最后一体化的解决方案简化了用户端的代码,也减少了服务端的运维成本。

后续发展包括:

  • 整合OSS

    • 将冷数据归档到OSS,优化成本

  • 提升MOB合并能力

    • 目前由Master执行,考虑改为分布式

  • 独立配置

    • MOB可以采用不同于主体表的压缩,编码,块大小等配置

703a1490a1db961932a35f7312a73617d02d41a6
d2833c50467ef870b668288b1018cc7f510bf47b
46fb5f8a30283e9ab4507d31cd80302a91af0991
238bfb8dd09b20ae59d81f374c5a9b39ea36c183
398637b87ece336d72b75353a663f1076794d7d4
1d076bb86dac4dc52b0272a59b09aa194730e8f4
9a42f0523f338268b9f8ed33a05b5feeef61f1a2
0b0394cb39a03ce366f32edb59c9b39b730819f8
16282fb007f1f976511de39b32bc21e37b6eb187
f0435df655fcda871291bfeafaa06fc10d9977c8
86b139c07a48c97bff51031e7028b3494dfdf870
dd8eff608de760980691aebccbe1fa34faab65c5
259568ccec75f182d8831305a213768f9df4ef81
ceecfe445cd709e2cfefac81fdf35f990e24652c
53e2a3671fe1b4d8865d8d8aaeb773a518e94f02
2d0cf30bb8a7ba12b2db35f62feb4c95e9f3facb
b86ea6aa2a391d50b45928ac6cf4e05b14d5d298
f27c3e5bd5d47eba606c456808a24292fc0b894b
682267e37bfb56089b4ac6152504c6479ef27f99
be9c89ae19333e7751cdb278b32d685385110934
366cbc298ee771ad2610c9fb626a399854985ec1
bb05a8893d21322d283e650f2b124a0cf77261ca
469bf2cd1320ddb5617502e065c07f4b12fb9aeb
6a37dfefb0a1221715aa9b18339747afb160fa70
6794808ca470276749e562b04d8646ee722aca1a
1222ae217f66d0866706435aadbee5ea64507a0f
b02bcd9c4debfc0afaba1fc3ae95392b4a9c06b7
57926f95ae733b5d0f912eaa1981f201a2f98de4
aebaca46810ec4c56807e7adc1bde097992ac0fc

d3f2f0da5b6761a64c7049db7719525a2c492a0c

大家工作学习遇到HBase技术问题,把问题发布到HBase技术社区论坛http://hbase.group,欢迎大家论坛上面提问留言讨论。想了解更多HBase技术关注HBase技术社区公众号(微信号:hbasegroup),非常欢迎大家积极投稿。

8f0bea83ed2c6fdd73e7c1735f6e3ba308136350
HBase技术交流社区 - 阿里官方“HBase生态+Spark社区大群”点击加入: https://dwz.cn/Fvqv066s

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6月前
|
存储 分布式计算 大数据
HBase分布式数据库关键技术与实战:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析了HBase的核心技术,包括数据模型、分布式架构、访问模式和一致性保证,并探讨了其实战应用,如大规模数据存储、实时数据分析及与Hadoop、Spark集成。同时,分享了面试经验,对比了HBase与其他数据库的差异,提出了应对挑战的解决方案,展望了HBase的未来趋势。通过Java API代码示例,帮助读者巩固理解。全面了解和掌握HBase,能为面试和实际工作中的大数据处理提供坚实基础。
411 3
|
6月前
|
存储 搜索推荐 关系型数据库
用户画像系列——HBase 在画像标签过期策略中的应用
用户画像系列——HBase 在画像标签过期策略中的应用
134 0
|
6月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
157 0
|
6月前
|
SQL 关系型数据库 MySQL
Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
【2月更文挑战第9天】Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
269 7
|
5月前
|
存储 大数据 分布式数据库
使用Apache HBase进行大数据存储:技术解析与实践
【6月更文挑战第7天】Apache HBase,一个基于HDFS的列式存储NoSQL数据库,提供高可靠、高性能的大数据存储。其特点是列式存储、可扩展至PB级数据、低延迟读写及多版本控制。适用场景包括大规模数据存储、实时分析、日志存储和推荐系统。实践包括集群环境搭建、数据模型设计、导入、查询及性能优化。HBase在大数据存储领域扮演关键角色,未来有望在更多领域发挥作用。
|
5月前
|
存储 SQL 分布式计算
技术心得记录:深入学习HBase架构原理
技术心得记录:深入学习HBase架构原理
|
5月前
|
存储 缓存 分布式计算
必知的技术知识:Hbase配置(伪分布式模式)
必知的技术知识:Hbase配置(伪分布式模式)
602 0
|
6月前
|
存储 Java 分布式数据库
【分布式计算框架】HBase数据库编程实践
【分布式计算框架】HBase数据库编程实践
110 1
|
6月前
|
存储 分布式计算 Java
大数据存储技术(3)—— HBase分布式数据库
大数据存储技术(3)—— HBase分布式数据库
1563 0
|
6月前
|
消息中间件 Java 关系型数据库
【Spring Boot+Kafka+Mysql+HBase】实现分布式优惠券后台应用系统(附源码)
【Spring Boot+Kafka+Mysql+HBase】实现分布式优惠券后台应用系统(附源码)
285 2
下一篇
无影云桌面