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的更多相关文章

  1. HBase单个RegionServer的region数目上限

    前言 RegionServer维护Master分配给它的region,处理对这些region的IO请求,负责切分在运行过程中变得过大的region, 由于集群性能( 分配的内存和磁盘是有限的 )有限的 ...

  2. HBase -- 基于HDFS的开源分布式NoSQL数据库

    HBase(Hadoop Database)是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,我们可以利用HBase技术在廉价的PC上搭建起大规模结构化存储集群.同Google的Bigtable ...

  3. HBase之五:hbase的region分区

    一.Region 概念 Region是表获取和分布的基本元素,由每个列族的一个Store组成.对象层级图如下: Table (HBase table) Region (Regions for the ...

  4. 【转帖】HBase之五:hbase的region分区

    HBase之五:hbase的region分区 https://www.cnblogs.com/duanxz/p/3154487.html 一.Region 概念 Region是表获取和分布的基本元素, ...

  5. hbase的region

    一.Region 概念 Region是表获取和分布的基本元素,由每个列族的一个Store组成.对象层级图如下: Table (HBase table) Region (Regions for the ...

  6. hbase删除region块的脚本

    删除hbase表region块脚本 文件hua.txt格式: CHAT_INFO,1318153079100530000314050,1318173760068.991ca04ff164c3f7987 ...

  7. Spark笔记之数据本地性(data locality)

    一.什么是数据本地性(data locality) 大数据中有一个很有名的概念就是"移动数据不如移动计算",之所以有数据本地性就是因为数据在网络中传输会有不小的I/O消耗,如果能够 ...

  8. Hadoop生态圈-Hbase的Region详解

    Hadoop生态圈-Hbase的Region详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  9. HBase,region以及HFile概念

    什么是HBase的Region? 大家一定对一个词不陌生:域分区,这个域就是Region:Region定义为key的一个取值范围的子集的数据载体:比如常见的域分区有固定大小分区,比如1-10一个reg ...

随机推荐

  1. Linux中Postfix邮件接收配置(四)

    Dovecot介绍 MRA邮件取回代理也有很多如courier-imap,cyrus-imap和dovecot这三个个工具,下面重点介绍Dovecot: 1.高安全性.据 Dovecot 的作者声称, ...

  2. web前端----JavaScript(JS)简单介绍

    JavaScript(JS) 一.JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEa ...

  3. centos下nginx安装与配置

    nginx依赖以下模块: l  gzip模块需要 zlib 库 l  rewrite模块需要 pcre 库 l  ssl 功能需要openssl库 tar xzvf nginx-1.9.15.tar. ...

  4. 关于mysql连接抛出10038错误问题

    今天用Navicat Premium连接windows server 2003 mysql的时候, 抛出10038问题, 这种问题之前在rhel也出现过一次, 就是防火墙不允许连接kill掉了这个请求 ...

  5. 20145337《网络对抗技术》逆向及BOF基础

    20145337<网络对抗技术>逆向及BOF基础 实践目标 操作可执行文件pwn1,通过学习两种方法,使main函数直接执行getshall,越过foo函数. 实践内容 手工修改可执行文件 ...

  6. 20165310_Exp2实验二《Java面向对象程序设计》

    实验二<Java面向对象程序设计> TDD与单元测试 前期准备: 什么是单元测试? 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证.对于单元测试中单元的含 ...

  7. 使用fragment添加底部导航栏

    切记:fragment一定要放在framlayout中,不然不会被替换完全(就是切换之后原来的fagment可能还会存在) main.xml <LinearLayout xmlns:androi ...

  8. BZOJ 2594 水管局长数据加强版(动态树)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2594 题意:给出一个无向图,边有权值.定义一条路径的长度为该路径所有边的最大值.两种操作 ...

  9. SQLSERVER中order by ,group by ,having where 的先后顺序

    SELECT [Name]  FROM [LinqToSql].[dbo].[Student]  where name='***' group  by  name    having (name='* ...

  10. 【第三十八章】 springboot+docker(maven)

    回顾上一章的整个部署过程: 使用"mvn install"进行打包jar 将jar移动到与Dockerfile文件相同的文件夹下 编写Dockerfile文件 使用"do ...