Region数量

通常较少的region数量可使群集运行的更加平稳,官方指出每个RegionServer大约100个regions的时候效果最好,理由如下:

  • HBase的一个特性MSLAB,它有助于防止堆内存的碎片化,减轻垃圾回收Full GC的问题,默认是开启的。但是每个MemStore需要2MB(一个列簇对应一个写缓存memstore)。所以如果每个region有2个family列簇,总有1000个region,就算不存储数据也要3.95G内存空间。

  • 如果很多region,它们中Memstore也过多,内存大小触发Region Server级别限制导致flush,就会对用户请求产生较大的影响,可能阻塞该Region Server上的更新操作。

  • HMaster要花大量的时间来分配和移动Region,且过多Region会增加ZooKeeper的负担。

  • 从HBase读入数据进行处理的mapreduce程序,过多Region会产生太多Map任务数量,默认情况下由涉及的region数量决定。

所以,如果一个HRegion中Memstore过多,而且大部分都频繁写入数据,每次flush的开销必然会很大,因此我们也建议在进行表设计的时候尽量减少ColumnFamily的个数。每个region都有自己的MemStore,当大小达到了上限(hbase.hregion.memstore.flush.size,默认128MB),会触发Memstore刷新。

计算集群region数量的公式:((RS Xmx) * hbase.regionserver.global.memstore.size) / (hbase.hregion.memstore.flush.size * (# column families))

假设一个RS有16GB内存,那么16384*0.4/128m 等于51个活跃的region。
     如果写很重的场景下,可以适当调高hbase.regionserver.global.memstore.size,这样可以容纳更多的region数量。

建议分配合理的region数量,根据写请求量的情况,一般20-200个之间,可以提高集群稳定性,排除很多不确定的因素,提升读写性能。监控Region Server中所有Memstore的大小总和是否达到了上限(hbase.regionserver.global.memstore.upperLimit * hbase_heapsize,默认 40%的JVM内存使用量),超过可能会导致不良后果,如服务器反应迟钝或compact风暴。

Region大小

HBase中数据一开始会写入memstore,满128MB(看配置)以后,会flush到disk上而成为storefile。当storefile数量超过触发因子时(可以配置),会启动compaction过程将它们合并为一个storefile。对集群的性能有一定影响。而当合并后的storefile大于max.filesize,会触发分割动作,将它切分成两个region。

  • 当hbase.hregion.max.filesize比较小时,触发split的机率更大,系统的整体访问服务会出现不稳定现象。

  • 当hbase.hregion.max.filesize比较大时,由于长期得不到split,因此同一个region内发生多次compaction的机会增加了。这样会降低系统的性能、稳定性,因此平均吞吐量会受到一些影响而下降。

hbase.hregion.max.filesize不宜过大或过小,经过实战,生产高并发运行下,最佳大小5-10GB!关闭某些重要场景的HBase表的major_compact!在非高峰期的时候再去调用major_compact,这样可以减少split的同时,显著提供集群的性能,吞吐量、非常有用。

注意:通过HBase的UI控制台都可以监控到region的数量&大小指标!!!

HBase最佳实践之Region数量大小相关推荐

  1. HBase最佳实践-HBase中的读性能优化策略

    任何系统都会有各种各样的问题,有些是系统本身设计问题,有些却是使用姿势问题.HBase也一样,在真实生产线上大家或多或少都会遇到很多问题,有些是HBase还需要完善的,有些是我们确实对它了解太少.总结 ...

  2. HBase最佳实践-用好你的操作系统

    HBase最佳实践-用好你的操作系统  2017年5月24日  范欣欣  HBase 终于又切回HBase模式了,之前一段时间因为工作的原因了解接触了一段时间大数据生态的很多其他组件(诸如Parque ...

  3. HBase最佳实践-读性能优化策略

    任何系统都会有各种各样的问题,有些是系统本身设计问题,有些却是使用姿势问题.HBase也一样,在真实生产线上大家或多或少都会遇到很多问题,有些是HBase还需要完善的,有些是我们确实对它了解太少.总结 ...

  4. HBase Region 简介和建议数量大小

    Region是HBase数据管理的基本单位,region有一点像关系型数据的分区. region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region. ...

  5. 生产环境使用HBase,你必须知道的最佳实践

    来源 | 阿丸笔记 封图| CSDN 下载于视觉中国 前面,我们已经打下了很多关于HBase的理论基础,今天,我们主要聊聊在实际开发使用HBase中,需要关注的一些最佳实践经验. Schema设计七大 ...

  6. hbase中为何不能向表中插入数据_生产环境使用HBase,你必须知道的最佳实践 | 百万人学AI...

    叮咚-你被福利砸中了!现在起,「2020 AI开发者万人大会」299门票免费送!进入报名页面[2020 AI 开发者万人大会(线上直播门票)-IT培训直播-CSDN学院],点击"立即报名&q ...

  7. 大数据最佳实践-hbase

    目录 概述 架构 MemStore WAL HMaster 读流程 写流程 Memstore Flush Flush过程 StoreFile Compaction Region Split 优化 re ...

  8. 怎样缩短c语言的占内存大小,关于优化:减少C语言中的内存使用的最佳实践是什么?...

    什么是"高效内存C编程"的最佳实践? 通常对于嵌入式/移动设备,低内存消耗的准则应该是什么? 我猜应该为a)代码存储b)数据存储单独制定准则 很高兴看到这么多截然不同的好答案,而不 ...

  9. GMTC 大前端时代前端监控的最佳实践

    摘要: 今天我分享的内容分成三个部分: 第一部分是"大前端时代前端监控新的变化", 讲述这些年来,前端监控一些新的视角以及最前沿的一些思考. 第二部分"前端监控的最佳实践 ...

最新文章

  1. 索引与联合索引使用注意
  2. 用execSQL语句建表时提示“syntax error”原因及解决方法
  3. 优胜队伍跑多快?优胜秘笈是什么?直播告诉你
  4. scala技术文章集锦
  5. SpringBoot 2.1.5(37)---SpringBoot 2.1.5 项目启动运行方式
  6. mysqli扩展是mysql扩展的增强版_PHP学习笔记【22】--PHP数据库编程 mysql扩展库 和mysqli扩展库...
  7. Java基础教程【第一章:Java概述】
  8. 炫酷的sublimeText开发工具 快捷键总结
  9. eclipse 与my eclipse区别,IDE
  10. 计算机控制的行业规模,2019年中国DCS控制系统行业市场现状及竞争格局分析,内资“两家独大”「图」...
  11. Ubuntu桌面图标无法打开终端的解决过程
  12. OSPF路由协议总结(一)
  13. 在Win10中安装Openfoam
  14. [游戏代码]求生之路插件:人物获得武器
  15. 艾孜尔江_Unity 3D入门常用函数用法及案例概要【干货】
  16. 如何在PPT中嵌入交互式图表?LightningChart助力炫酷展示
  17. KALI - 暴破wifi之抓取握手包
  18. ZK zul中显示纯的HTML代码
  19. 10 06 27 无用功
  20. VisualStdio2013旗舰版激活码-注册码.

热门文章

  1. vue项目执行npm run dev 后没有自动弹出网页问题
  2. vue进入页面执行的钩子函数_深入理解Vue 的钩子函数
  3. omc服务器操作维护与日志管理,中兴通讯WCDMA网管综合解决方案-通信/网络-与非网...
  4. html语言九九乘法表,js写九九乘法表
  5. SpringCloud微服务的概念介绍
  6. python连接Redis,学习哈希表基本操作
  7. Android startActivity流程
  8. 软件工程 软件交互设计 习题
  9. 高通camera结构【转】
  10. CAJviewer Download