HBase-Region太多的问题简单总结

简介:

后果

  • 我们知道一个RegionServer上有n个region,每个region会根据不同的col family数拥有不同的store,每个store有一块自己的memstore内存区和多个HFile文件,所以在region很多的情况下,平均RegionServer分担的Region就会多了,那么一台RegionServer上资源是优先的,并且多个region都有自己的memstore,所以就会争抢资源,一直与memstore比较小了,所以在memstore很小的时候,就会频繁的刷HFile,那么memstore刷出来的HFile也就相应的变小了,所以为了保证HFile的数量合理,就会发生大规模的合并,那么合并就会拖慢性能,甚至导致Full GC的发生.这就会造成RegionServer与ZK可能发生失联,那么就会造成一系列的错误

主要的问题可能会有

  • 合并风暴,因为HFile文件多
  • 客户端超时,因为合并可能会涉及集群中网络的IO风暴
  • 批量加载超时,因为RegionServer太忙了无法反应,可能会报出RegionTooBusyException异常

原因

  • Region最大值设置的太小
  • 新HBase版本用了旧版本配置了,比如之前的HBase拆分上限是1G.现在是10G
  • 预分区不合理
  • 等等等...

解决参考

  • Region 过多的问题的最终目的是使Region总数降低,也就是说进行合并Region
  • 在0.98之前只支持离线的合并,这个过程需要暂时数据写入,并且需要先关闭集群然后执行合并操作,然后再启动集群.这样柑橘已经没有了学习价值了就不做笔记了
  • 0.98之前还有一个CopyTable工具可以使用,将一个表拷贝到另一个新的预分裂的表,但是这需要有个问题,就是如果你之前put或者修改数据的时候是自己定义的时间戳,那么Copy到新表的时候,如果新表与旧表中有重复列,并且自定义的时间戳比当前重复列的时间戳小,那么就会造成数据的永久丢失,并且Copy一个大表的话会相当耗费时间
  • 0.98之后加入了在线合并,合并的时候将不需要关闭集群了,将表禁用disable即可,在线合并可以通过hbase shell 或者 javaapi来操作,合并完成后,可以从HBase的web页面看到结果

防范

  • 列族不易太多,400个拥有两个列族的region,不如800个拥有一个列族的region
  • 保证最大的文件大小设置为至少10G,有些region小于10G没问题,但是要确保在必要的情况下,region能达到10GB,推荐使用可视化工具监控region大小,留意增长速度快的region,在非高峰情况下将他们拆分
  • 有时候在负载比较小的情况下,可能会创建很多小region,为了确保region能增长到正常大小,要确保hbase.hregion.max.filesize siz的属性设置为至少10GB,也可以将最大文件大小设置更大,比如100GB,当使用较大的region大小的时候,我们就可以手动拆分,确保split时间合适,这是对集群的影响最小的操作

行键和表设计

  • 这我总感觉有很多需要注意的地方,我会在之后学习并总结成学习笔记的

自己的总结

  • 看到这总的来说,除了行键和表设计自己没有学,本文主要学习到了Region的大小不能设置太小,列族不能太多,也可以在设置split规则的情况下把大小设置的大一点以便自己在集群非高峰的情况下进行拆分,而预设split而并非禁用split是因为防止忘记region需要需要拆分了,而导致region增长的非常大以至于速度变慢,其实结合之前学习还要相当注意Full GC的回收策略的使用等一些需要注意的事项
相关实践学习
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
目录
相关文章
|
2月前
|
存储 分布式计算 Hadoop
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
56 2
|
存储 分布式数据库
hbase-region个数
hbase-region数量 单个regionserver配置region个数的两种方案: 根据官方推荐配置(硬盘容量);根据内存配置 一:官方推荐配置(硬盘容量): 官方文档给出的推荐: regionserver上的region个数范围在20~200;每个region的大小在10G~30G之间,比较符合实际。
2991 0
|
存储 大数据 Java
深入解读HBase2.0新功能之高可用读Region Replica
基于时间线一致的高可用读(Timeline-consistent High Available Reads),又称Region replica,为HBase带来了高可用读的能力。本文主要介绍region replica这个功能设计的背景,技术细节和使用方法,同时会仔细分析这个功能的优缺点并给出使用建议。
9147 0
|
存储 缓存 分布式数据库
HBase源码分析之Region定位
        我们知道,HBase是一个基于RowKey进行检索的分布式数据库。它按照行的方向将表中的数据切分成一个个Region,而每个Region都会存在一个起始行StartKey和一个终止行EndKey。
2049 0
|
分布式数据库 Hbase
技术篇-深入解读 HBase2.0 新功能之高可用读 Region Replica
1.前言 基于时间线一致的高可用读(Timeline-consistent High Available Reads),又称 Region replica。其实早在 HBase-1.2 版本的时候,这个功能就已经开发完毕了, 但是还是不太稳定,离生产可用级别还有一段距离,后来社区又陆陆续续修复了 一些 bug,比如说 HBASE-18223。
4661 0
|
存储 Shell 分布式数据库
|
分布式数据库 Hbase 负载均衡
HBase Region合并分析
1.概述 HBase中表的基本单位是Region,日常在调用HBase API操作一个表时,交互的数据也会以Region的形式进行呈现。一个表可以有若干个Region,今天笔者就来和大家分享一下Region合并的一些问题和解决方法。
3133 0