深入浅出 HBase 实战|青训营笔记

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 1.介绍 HBase 的适用场景和数据模型;2.分析 HBase 的整体架构和模块设计;3.针对大数据场景 HBase 的解决方案

课程资料

课程链接:https://live.juejin.cn/4354/yc_HBase

课程PPT:https://bytedance.feishu.cn/file/boxcn3OIZS5YiWoCJFXxLLuHhvh

学员手册:https://juejin.cn/post/7126813033602482190/#heading-0

完整手册:https://bytedance.feishu.cn/docx/doxcnECGEFkCKYqbxaDipK1qrVf

一、HBase适用场景

HBase特性

image-20220806133557427

HBase数据模型

HBase以列族为单位存储数据,以行键索引数据

  • 列族需要在使用前预先创建,列名不需要预先声明,因此支持半结构化数据模型
  • 支持保留多个版本的数据,(行键+列族+列名+版本号)定位一个具体的值

image-20220806133839371

简单起见可以将HBase数据格式理解为如下数据结构:

// table名格式:"${namespace}:${table}"
// 例如:table = "default:test_table"
[
    "rowKey1": { // rowkey定位一行数据
        "cf1": { // column family需要预先定义到表结构
            "cq_a": { // column qualifier无需定义,使用任意值
                "timestamp3": "value3", 
                // row=rowKey1, column="cf1:cf_a", timestamp=timestamp2
                // 定位一个cell
                "timestamp2": "value2", 
                "timestamp1": "value1"
            },
            "cq_b": {
                "timestamp2": "value2",
                "timestamp1": "value1"
            }
        }, 
        "cf3": {
            "cq_m": {
                "timestamp1": "value1"
            },
            "cq_n": {
                "timestamp1": "value1"
            }
        },
    },   
    "rowKey3": { 
        "cf2": { // 缺省column family不占用存储空间
            "cq_x": {
                "timestamp3": "value3",
                "timestamp2": "value2",
                "timestamp1": "value1"
            },
            "cq_y": {
                "timestamp1": "value1"
            }
        },
    }
]

使用场景

  • “近在线”的海量分布式KV/宽表存储,数据量级达到百TB级以上
  • 写密集型应用,高吞吐,可接受一定的时延抖动
  • 需要按行顺序扫描的能力
  • 接入Hadoop大数据生态
  • 结构化、半结构化数据,可以经常新增/更新列属性
  • 平滑的水平扩展

image-20220806134644104

优缺点

image-20220806134733992

二、HBase架构设计

主要组件

image-20220806134854856

  • HMaster:元数据管理、集群调度、保活
  • RegionServer:提供数据读写服务,每个实例负责若干个互不重叠的rowkey区间内的数据
  • ThriftServer:提供Thrift API读写代理层
  • Zookeeper:分布式一致性共识协作管理,例如HMaster选主、任务分发、元数据变更管理
  • HDFS:分布式文件系统,HBase数据存储底座

三、大数据支撑

HBase在大数据生态的定位

  • 对TB、PB级海量数据支持强一致、近实时的读写性能,支持快速的ad-hoc分析查询任务
  • 支持字典序批量扫描大量数据,支持只读取部分列族的数据,灵活支持不同的查询模式,避免读取不必要的数据
  • 存储大规模任务(MapReduce、Spark、Flink)的中间/最终计算结果
  • 平滑快速的水平扩展能力,能够敏捷应对大数据高速增长的数据体量和大规模的并发访问
  • 精细化的资源成本控制,计算层和存储层分别按需扩展,避免资源浪费

水平扩展

image-20220806135835772

  • 增加RegionServer实例,分配部分region到新实例
  • 扩展过程平滑,无序搬迁实际数据
  • 可用性影响时间很短,用户基本无感知

Region热点切分

  • 找到该表中哪个region的数据最大
  • 找到该region内哪个column family的数据最大
  • 找到column family内哪个HFile的数据大小最大

这是我参与「第四届青训营 」笔记创作活动的的第8天

image-20220806140122323

  • 找到HFile里处于最中间位置的Data Block
  • 用这个Data Block的第一条KeyValue的Rowkey作为切分点

image-20220806140508750

Region碎片整合

image-20220806140654454

Region负载均衡

image-20220806140755341

  • 根据总的region数量和RegionServer的数量计算平均的region数量,设定弹性上下界避免不必要的操作,例如默认slop为0.2,平均region数量为5,则负载均衡的RS上的region的数量为[4, 6]
  • 将RegionServer按照region数量降序排序,对region数量超出上界的选取需要迁出region并且按照创建时间从新到老排序
  • 选出region数量低于下限的RS列表,round-robin分配步骤2选出的regions
  • 处理边界情况,尽量保证region数量接近

\

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库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
相关文章
|
6月前
|
存储 分布式计算 大数据
HBase分布式数据库关键技术与实战:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析了HBase的核心技术,包括数据模型、分布式架构、访问模式和一致性保证,并探讨了其实战应用,如大规模数据存储、实时数据分析及与Hadoop、Spark集成。同时,分享了面试经验,对比了HBase与其他数据库的差异,提出了应对挑战的解决方案,展望了HBase的未来趋势。通过Java API代码示例,帮助读者巩固理解。全面了解和掌握HBase,能为面试和实际工作中的大数据处理提供坚实基础。
387 3
|
3月前
|
分布式计算 大数据 分布式数据库
"揭秘HBase MapReduce高效数据处理秘诀:四步实战攻略,让你轻松玩转大数据分析!"
【8月更文挑战第17天】大数据时代,HBase以高性能、可扩展性成为关键的数据存储解决方案。结合MapReduce分布式计算框架,能高效处理HBase中的大规模数据。本文通过实例展示如何配置HBase集群、编写Map和Reduce函数,以及运行MapReduce作业来计算HBase某列的平均值。此过程不仅限于简单的统计分析,还可扩展至更复杂的数据处理任务,为企业提供强有力的大数据技术支持。
63 1
|
6月前
|
存储 NoSQL 分布式数据库
【HBase入门与实战】一文搞懂HBase!
该文档介绍了HBase,一种高吞吐量的NoSQL数据库,适合处理大规模数据。HBase具备快速读写、列式存储和天然支持集群部署的特点,常用于高并发场景。NoSQL与关系型数据库的主要区别在于数据模型、查询语言和可伸缩性。HBase的物理架构包括Client、Zookeeper、HMaster和RegionServer,其中RegionServer管理数据存储。HBase的读写流程利用MemStore和Bloom Filter提高效率。此外,文档还提到了HBase的应用,如时间序列数据、消息传递和内容服务。
715 1
【HBase入门与实战】一文搞懂HBase!
|
Java Shell Linux
HBase笔记
HBase笔记
148 0
HBase笔记
|
分布式数据库 Hbase
|
分布式数据库 Hbase
|
分布式数据库 Hbase
|
分布式计算 Hadoop Java
hbase-微博三表实战demo
这是根据学习图谱中hbase的教程,写的最后的微博案例demo,使用的是mac系统,本地安装的mysql,单机版的hbase,本地环境配置的jdk版本是openjdk11.0.16.1,具体逻辑是用户微博内容写入到内容表,关注该用户的用户根据用户关系表,将数据推送到信箱表中。
225 0
|
大数据 分布式数据库 Hbase
《玩转HBase和Lindorm大数据入门和实战》电子版地址
玩转HBase和Lindorm大数据入门和实战
130 0
《玩转HBase和Lindorm大数据入门和实战》电子版地址
|
2月前
|
分布式计算 Java Hadoop
java使用hbase、hadoop报错举例
java使用hbase、hadoop报错举例
90 4