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的回收策略的使用等一些需要注意的事项
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
2018MaxCompute开发者圣诞趴 — 承认吧,你向往的不是红包,而是最前沿的大数据技术
大数据开发者都怎么过圣诞节?一切如常,加班。。。提前下班,回家睡觉。。。给女朋友买个南瓜灯做礼物?OMG!!! Jingle bells,大数据开发者的圣诞时间到~这封圣诞邀请,我想发给所有MaxCompute开发者和大数据爱好者们,搞个Party,你可别说你要改bug, 发几波红包,你可别说你眼里只有code,送几轮礼物,你可别说你正忙着ETL... 圣诞节,天气冷,刚好围坐给你讲讲温暖的故事:你垂直90度角写代码的姿势很有形而上学的气息,你关注数据的神情令人着迷,你专注计算的模样令人神往,你是业务的解放者在海量的数据中,你的言语带着拘谨的魅力,看你敲键盘时的帅气让人恨不得变成一行行代码... 这里有比你更新的大数据开发者,这里有比你更牛的大数据技术主咖,这里有阿里巴巴EB级数据存储,百PB级单日计算能力的大数据平台技术,这里更有重磅
- 下一篇
学习笔记1 - 使用MaxCompute进行数据质量核查
大数据Clouder:使用MaxCompute进行数据质量核查 数据,数据质量,数据质量管理MaxCompute,DataIDE监控,监控报告 对数据的改善和管理,直接提升数据质量;对组织的改善和管理,间接提升数据质量。 数据质量影响因素:①需求过程引发,②数据源引发,③统计口径引发,④系统自身引发。数据质量问题类型:①错误值,②重复值,③数据不一致,④数据完整性,⑤缺失值,⑥异常值。 MaxCompute,大数据开发工具:①DataIDE:可视化形式。②Studio客户端,③odpscmd客户端:都是命令行形式。 数据产生:阿里云的RDS。数据收集与存储:DataIDE数据同步组件,从RDS中同步到MaxCompute中。数据分析与处理:DataIDE中的任务ODPS_SQL和OPEN_MR。数据提取:DataIDE。数据展现与分享:Quick BI。 注意:将本地数据上传导入到MaxCompute,如果数据文件大于10M,DataIDE就上传不了了,这时就需要使用odpscmd客户端提供的Tunnel命令方式进行上传。Tunnel命令操作 :https://help.aliyun....
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS关闭SELinux安全模块
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2更换Tomcat为Jetty,小型站点的福音