首页 > 其他分享 >深入浅出HBase实战

深入浅出HBase实战

时间:2022-08-30 17:13:02浏览次数:49  
标签:实战 存储 Zookeeper 深入浅出 key HBase 数据 数据模型

深入浅出HBase实战

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

1. Hbase使用场景

1.1 什么是HBase?

HBase是一个开源的NoSQL分布式数据库,是Apache软件基金会顶级项目之一

  • 采用存储计算分离架构
    • 存储层基于HDFS存储数据,提供容错机制和高可靠性
    • 计算层提供灵活快速的水平扩展、负载均衡和故障恢复能力

1.2 HBase和关系型数据库的区别

image-20220830163329039

1.3 HBse数据模型

HBase以列族(column family) 为单位存储数据,以行键(rowkey)索引数据。

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

image-20220830163729185

1.4 适用场景

  • “近在线”的海量分布式KV / 宽表存储,数据量级可达到PB级以上
  • 写密集型、高吞吐应用,可接受一定程度的时延抖动
  • 字典序主键索引、批量顺序扫描多行数据的场景
  • Hadoop大数据生态友好兼容
  • 半结构化数据模型,行列稀疏的数据分布,动态增减列名
  • 敏捷平滑的水平扩展能力,快速响应数据体量、流量变化

1.5 典型应用

  • 电商订单数据
  • 搜索推荐引擎
  • 广告数据流
  • 用户交互数据
  • 时序数据引擎
  • 图存储引擎
  • 大数据生态

1.6 HBase数据模型的优缺点

image-20220830164439856

2. HBase架构设计

主要组件

HMaster

元信息管理组件,以及集群调度、保活等功能。通常部署一个主节点和一到多个备节点,通过Zookeeper选主。

RegionServer

提供数据读写服务,每个实例负责一段不重叠的连续rowkey范围内的数据。

ThriftServer

提供一层以Thrift协议访问数据的代理层。

依赖组件

Zookeeper

提供分布式一致性的元数据管理服务。HBase使用Zookeeper实现master节点信息登记、master节点选主、RegionServer信息登记、分布式任务管理等功能。

HDFS

分布式文件系统,HBase数据存储底座

image-20220830165810079

3. 最佳实践

3.1 rowkey设计

  • 最大长度是64KB,实际应用中长度一般为 10 ~ 100bytes。key在保证功能的前提下建议越短越好,因为key是冗余到每个cell存储的,过长的key会占用更多存储、缓存空间。

  • 设计Key时,要充分利用排序存储这个特性,将经常一起读取的行存储到一起。HBase以HFile文件块为单位从HDFS读取数据,一次性读出相邻相关数据可以达到随机读变成顺序读的效果。

但同时要防止出现热key聚焦打爆region server实例。

反例:以时间戳作rowkey前缀,一段时间的请求会全部打到同一regionserver。

3.2 Column family数量

过多的cf会影响HBase性能,建议不超过3个。

3.3 value大小

建议不要超过1MB。过大的value会影响HBase读写性能。可以将实际value存储在其他对象存储系统,在HBase的value存储其位置信息。

3.4 Region数量

一个region的大小最好在10-50GB之间。

3.5 mapreduce的应用在低峰期运行

批处理任务建议在业务低峰期运行,并且需要对HBase的访问流量进行一定限制。

3.6 尽量复用client实例

新建client实例需要访问Zookeeper和元信息表所在regionserver,频繁操作有打垮服务的风险。

3.7 client参数调优

  • nodelay设置true

  • 读较多的应用中gc的新生代不能设置太小

  • 数据版本尽可能少来增加有效缓存容量,提升命中率

  • 避免一次scan过多的row,尽量拆分为多次小规模scan作分页查询

标签:实战,存储,Zookeeper,深入浅出,key,HBase,数据,数据模型
From: https://www.cnblogs.com/sam0/p/16640065.html

相关文章

  • Git实战(五)| 让工作更高效,搞定Git的分支管理
    ⬇️点击“下方链接”,提升测试核心竞争力!>>更多技术文章分享和免费资料领取上一篇讲到Git的分支管理实操,在线合并和本地合并都进行了实操。毕竟:光说不练是假把式。而只练......
  • JMeter 高级性能测试实战训练营 | 开班通知
    ⬇️点击“下方链接”,提升测试核心竞争力!>>更多技术文章分享和免费资料领取1.性能测试只测不调:很多测试同学提交的性能测试报告只是各种参数的堆砌,而缺乏性能分析与优化建......
  • Git实战(四)| Git分支管理实操,搞定在线合并和本地合并
    ⬇️点击“下方链接”,提升测试核心竞争力!>>更多技术文章分享和免费资料领取类似于SVN这种集中式版本管理,三年前刚来上海工作时候,在华为驻场上班,华为用的就是SVN,印象最深......
  • 5分钟搞定MySQL/PostgreSQL/Oracle到StarRocks数据迁移同步-CloudCanal实战
    ##简述CloudCanal2.1.0.x版本开始支持StarRocks作为对端的数据迁移同步能力本文通过MySQL->StarRocks的数据迁移同步案例简要介绍这个源端的能力。链路特点:-结......
  • hbase
    hbase和hadoophttp://c.biancheng.net/view/6501.htmlhbase架构文档https://blog.csdn.net/u012485099/article/details/110941341一个regionserver管理多个region,......
  • 多线程实战双色球
    随机数索引生成代码: usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceYpDotNet......
  • 大数据架构和算法实现之路:电商系统的技术实战 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1ed9wiUcGoxfSih5UYls5LQ点击这里获取提取码大数据架构和算法实现之路:电商系统的技术实战介绍了一些主流技术在商业项目中的......
  • 编译与反编译技术实战 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/10S1P67rU97MHrOxWsCDOnQ点击这里获取提取码编译与反编译技术实战全书共14章,第1章简要介绍了本书所基于的环境与工具;第2~6章......
  • 《Python带我起飞》——入门、进阶、商业实战_ 入门版电子书籍分享
     《Python带我起飞》——入门、进阶、商业实战PDF高清版免费下载地址 内容简介······《Python带我起飞——入门、进阶、商业实战》针对Python3.5以......
  • JS逆向实战3——AESCBC 模式解密
    爬取某省公共资源交易中心通过抓包数据可知这个data是我们所需要的数据,但是已经通过加密隐藏起来了分析首先这是个json文件,我们可以用请求参数一个一个搜但是由于我......