HBase基于region数目和data locality来balance regions
1. 在Hbase的运维过程中,我们经常需要做如下操作:
- 移动 regionserver 到其他的 regionserver group中
- 下线一台机器
- 增加一台机器
- 移动 table 到其他 regionserver group中。
2. 在进行上述操作的过程中,一个 regionserver 上的 regions,或者一个 table 的 regions 都会重新进行分配,这样的分配过程是 HBase 控制的,我们无法控制一个 region 会移动到哪一个 regionserver 上。
3. 在 region 提供服务的过程中,影响服务质量的因素有:
- regionserver的负载情况,一般来说,region 的数目越多,如果不考虑热键的话regionserver的负载也会越高。
- regionserver机器的性能,性能越好的机器,可以提供越多的服务,在异构的HBase集群中,尤其明显。对于一些比较重要的表我们会把它们放在性能比较好的机器上。
- region的cache locality,region在服务的过程中,会通过memstore&blockcache缓冲机制来提高服务的速度,当region迁移后,region会丢失缓冲。
- data locality,data locality用来衡量region服务的数据即region的HFile位于本地的程度,在region写HFile的时候,根据HDFS的replica策略,至少会有一个备份存储在本地,因此随着时间的推移,region的locality会逐渐趋于1。region迁移的时候,不一定能移动到正好有这个region数据备份的机器上,因此,数据就会从其他节点获取,造成网络开销增加,延迟增加。
4. 考虑上面情况,我们希望可以人工干预region的迁移,比如下线一台机器之前,我们可以先把它上面的region移动到最合适的位置,然后再把机器下线。我们的移动策略有:
- cache locality:尽可能保证region的位置不发生移动。
- data locality:尽可能把region迁移到data locality高的节点。
- region count:尽可能使得region的数目分配均衡,不给单一节点造成较大的压力。
- Ability and responsibility:性能越好的机器,需要承担更多的责任。
5. 总结以上需求,我们需要这样一个工具:
- 输入1——table 我们需要balance的表,这是我们操作的基本单位。
- 输入2——server list,我们需要把表中的数据balance到那些机器上,通过用户提供列表可以非常方便实现机器的增加和减少,以及把table上的region移动到指定机器上。在提供server list的时候可以指定机器的性能参数。
- 输入3——balance的策略
6. 具体实现可见github:git@github.com:LiuPeien/hbase-balance-util.git
HBase基于region数目和data locality来balance regions的更多相关文章
- HBase单个RegionServer的region数目上限
前言 RegionServer维护Master分配给它的region,处理对这些region的IO请求,负责切分在运行过程中变得过大的region, 由于集群性能( 分配的内存和磁盘是有限的 )有限的 ...
- HBase -- 基于HDFS的开源分布式NoSQL数据库
HBase(Hadoop Database)是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,我们可以利用HBase技术在廉价的PC上搭建起大规模结构化存储集群.同Google的Bigtable ...
- HBase之五:hbase的region分区
一.Region 概念 Region是表获取和分布的基本元素,由每个列族的一个Store组成.对象层级图如下: Table (HBase table) Region (Regions for the ...
- 【转帖】HBase之五:hbase的region分区
HBase之五:hbase的region分区 https://www.cnblogs.com/duanxz/p/3154487.html 一.Region 概念 Region是表获取和分布的基本元素, ...
- hbase的region
一.Region 概念 Region是表获取和分布的基本元素,由每个列族的一个Store组成.对象层级图如下: Table (HBase table) Region (Regions for the ...
- hbase删除region块的脚本
删除hbase表region块脚本 文件hua.txt格式: CHAT_INFO,1318153079100530000314050,1318173760068.991ca04ff164c3f7987 ...
- Spark笔记之数据本地性(data locality)
一.什么是数据本地性(data locality) 大数据中有一个很有名的概念就是"移动数据不如移动计算",之所以有数据本地性就是因为数据在网络中传输会有不小的I/O消耗,如果能够 ...
- Hadoop生态圈-Hbase的Region详解
Hadoop生态圈-Hbase的Region详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- HBase,region以及HFile概念
什么是HBase的Region? 大家一定对一个词不陌生:域分区,这个域就是Region:Region定义为key的一个取值范围的子集的数据载体:比如常见的域分区有固定大小分区,比如1-10一个reg ...
随机推荐
- 2018 Java线程热门面试题,你知道多少?
面试,难还是不难?取决于面试者的底蕴(气场+技能).心态和认知及沟通技巧.面试其实可以理解为一场聊天和谈判,在这过程中有心理.思想上的碰撞和博弈.其实你只需要搞清楚一个逻辑:“面试官为什么会这样问?他 ...
- mysql-innodb的事务日志
[参考书籍:mysql技术内幕 INNODB存储引擎][参考了一些博客内容] 事务的隔离性由锁机制来实现,事务的原子性,一致性,持久性通过INNODB的redo log和undo log来完成. re ...
- Python入门之python装饰器的4种类型:函数装饰函数、函数装饰类、类装饰函数、类装饰类
一:函数装饰函数 def wrapFun(func): def inner(a, b): print('function name:', func.__name__) r = func(a, b) r ...
- Eclipse编码规范——Code Templates设置
Eclipse编码规范——Code Templates设置 Eclipse编码规范主要包括三个方面:设置Code Templates.Eclipse formatter.Checkstyle, 本篇主 ...
- 20145220韩旭飞《网络对抗》实验九:web安全基础实践
基础问答 (1)SQL注入攻击原理,如何防御 原理:把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串. 防御: 利用输入规则限制进行防御,不允许特殊字符输入 (2)XSS攻击的原理,如 ...
- 数据结构-队列(3)-使用Java内置队列
大多数流行语言都提供内置的队列库,因此您无需重新发明轮子. 如前所述,队列有两个重要的操作,入队 enqueue 和出队 dequeue. 此外,我们应该能够获得队列中的第一个元素,因为应该首先处理它 ...
- Python3基础 os chdir 改变工作目录
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Linux命令中:rsync和cp之间的区别
rsync:只拷贝那些更新的文件: cp -u:也可以实现类似效果: 两者都基本可以满足备份的需求: 只是一般情况下,用rsync做这类备份之类的事情,更多见: 在备份的操作中,拷贝,过期文件的删除是 ...
- 记录Java中对url中的参数进行编码
Code: import java.net.URLEncoder; import java.util.HashMap; import java.util.Iterator; import java.u ...
- 垒骰子|2015年蓝桥杯B组题解析第九题-fishers
垒骰子 赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体. 经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥! 我们先来规范一下骰子:1 的 ...