HBase rebalance 负载均衡源码角度解读使用姿势
关键词:hbase rebalance 负载均衡
参考源码版本:apache-hbase-1.1.2
什么是HBase Rebalance ?
随着数据写入越来越多以及不均衡,即使一开始每个RegionServer的region数差不多,后期也会出现较为明显的差异现象。如果不做均衡,region过多的RS就有可能成为热点服务器,成为瓶颈。因此rebalance相当于一个负载调整的过程,把负载重的RS的部分region分发出去给别的RS去分担region压力。
Rebalance 策略
Rebalance由HMaster触发,因此主要代码在 org.apache.hadoop.hbase.master.balancer 下。配置 hbase.master.loadbalancer.class。
主要有三种策略:
- StochasticLoadBalancer . 默认策略,是一种综合的计算方法,考虑了六个因素(具体逻辑可看代码或参考 http://openinx.github.io/2016/06/21/hbase-balance):
- 每台RegionServer读请求数(ReadRequestCostFunction)
- 每台RegionServer写请求数(WriteRequestCostFunction)
- 每台RegionServer的Region个数(RegionCountSkewCostFunction)
- 移动代价(MoveCostFunction)
- 数据locality(TableSkewCostFunction)
- 每张表占据RegionServer中region个数上限(LocalityCostFunction)
- SimpleLoadBalancer.
- FavoredNodeLoadBalancer.
Rebalance 触发
HMaster会有个BalancerChore定时类去检查触发,间隔时间:hbase.balancer.period (dft 300000=5min) 。当然HBaseAdmin或shell也提供了命令接口可以手动触发。
Rebalance 方式
有两种方式,默认是把当前RS的region混在一起去rebalance,若hbase.master.loadbalance.bytable=true,则会按照一个表一个表来rebalance,这样至少可以确保某些表中途是rebalance完的。有人会称后者为表级rebalance,但实际上这并不是纯粹的表级rebalance,如果你真的只想触发某个表的rebalance,可能得考虑自定义策略去过滤其他表的region并且将上述bytable配置配置为true。(然而从平台角度来说,这并不是一种鼓励的做法,毕竟一般情况下所有表都需要负载均衡服务)
HBase rebalance 负载均衡源码角度解读使用姿势的更多相关文章
- CentOS 6.5 + Nginx 1.8.0 + PHP 5.6(with PHP-FPM) 负载均衡源码安装
CentOS 6.5 + Nginx 1.8.0 + PHP 5.6(with PHP-FPM) 负载均衡源码安装 http://www.cnblogs.com/ppoo24/p/4918288.ht ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_4-03 高级篇幅之Ribbon负载均衡源码分析实战
笔记 3.高级篇幅之Ribbon负载均衡源码分析实战 简介: 讲解ribbon服务间调用负载均衡源码分析 1.完善下单接口 2.分析@LoadBalanced ...
- Tars | 第2篇 TarsJava SpingBoot启动与负载均衡源码初探
目录 前言 1. Tars客户端启动 @EnableTarsServer 2. Communicator通信器 3. 客户端的负载均衡调用器LoadBalance 最后 前言 通过源码分析可以得出这样 ...
- CentOS 6.5 + Nginx 1.8.0 + PHP 5.6(with PHP-FPM) 负载均衡源码安装 之 (三)Nginx负载均衡配置
Nginx反向代理到单个PHP-FPM(PHP-FPM可位于不同机器) 0.首先,创建我们的网站根目录[注:须在PHP-FPM所在的那台机器创建](以后网站的代码放到此目录下): mkdir /opt ...
- CentOS 6.5 + Nginx 1.8.0 + PHP 5.6(with PHP-FPM) 负载均衡源码安装 之 (二)PHP(PHP-FPM)安装篇
编译安装PHP及内置PHP-FPM nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端(浏览器). nginx一般是把请 ...
- CentOS 6.5 + Nginx 1.8.0 + PHP 5.6(with PHP-FPM) 负载均衡源码安装 之 (一)Nginx安装篇
CentOS 6.5 minimal安装不再赘述 Nginx源码安装 1.安装wget下载程序 yum -y install wget 2.安装编译环境:gcc gcc-c++ automake au ...
- CentOS 6.5 + Nginx 1.8.0 + PHP 5.6(with PHP-FPM) 负载均衡源码安装 之 (四)问题汇总
关于外网无法访问虚拟机centos的问题 此一般由于centos默认防火墙配置,导致外部不允许访问80端口(或其他如9000端口).解决方法如下: 1.加入80端口的防火墙规则 /sbin/iptab ...
- Android进阶:二、从源码角度看透 HandlerThread 和 IntentService 本质
上篇文章我们讲日志的存储策略的时候用到了HandlerThread,它适合处理"多而小的任务"的耗时任务的时候,避免产生太多线程影响性能,那这个HandlerThread的原理到底 ...
- Hbase WAL线程模型源码分析
版权声明:本文由熊训德原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/257 来源:腾云阁 https://www.qclo ...
随机推荐
- GDAL create kml
新增kml 点 public void WriteKmlPiont() { string driverName = "KML"; //MapInfo File OSGeo.GDAL ...
- Mysql5.7数据导出提示--secure-file-priv选项问题的解决方法
mysql可使用into outfile参数把表中的数据到处到csv,示例如下: select user_id from weibo_comment into outfile '/home/dazha ...
- sql选择
关系型数据库遵循ACID规则 1.A (Atomicity) 原子性 原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整 ...
- 【转】一文掌握 Linux 性能分析之 CPU 篇
[转]一文掌握 Linux 性能分析之 CPU 篇 平常工作会涉及到一些 Linux 性能分析的问题,因此决定总结一下常用的一些性能分析手段,仅供参考. 说到性能分析,基本上就是 CPU.内存.磁盘 ...
- MySQL之CONCAT()的用法
mysql CONCAT()函数用于将多个字符串连接成一个字符串,是最重要的mysql函数之一,下面就将为您详细介绍mysql CONCAT()函数,供您参考 mysql CONCAT(str1,st ...
- centOS6.5 mysql-community-server安装失败
卸载mysql,重新装 yum install mysql-server 图中没有放卸载的图 [root@cgrctenOS6 ~]# yum install mysql-community-serv ...
- java ReentrantLock结合条件队列 实现生产者-消费者模式 以及ReentratLock和Synchronized对比
package reentrantlock; import java.util.ArrayList; public class ProviderAndConsumerTest { static Pro ...
- linux extglob模式 和rm反选
前言 extglob模式开启之后Shell可以另外识别出5个模式匹配操作符,能使文件匹配更加方便. 不然不识别! 正文 #开启命令: shopt -s extglob #关闭命令: shopt -u ...
- GLSL ES 3.0 和 2.0 的区别
GLSL ES 3.0 和 2.0 的区别 语法区别 attribute和varying. 取而代之的是 in和out 头文件多了个#version 300 es 纹理 texture2D 和 tex ...
- Java重头学
前言:这两周来上了腾讯课堂-软媒-JAVA架构师黄埔班的课程后,发现自己真心是一个菜鸟,Java基础知识和日常开发所需的知识还有很多很多.就此,我准备跟着这个课程重头学习Java,成为一名合格的Jav ...