Hbase-0.98.6源码分析--负载均衡过程
来源:互联网 发布:python scope visiual 编辑:程序博客网 时间:2024/05/23 01:19
毕业设计做弹性方面的评测,HBase作为分布式数据库,弹性必然是其重点的研究方面,它是如何实现弹性的呢?最重要的一点是它具有负载均衡功能。
首先,Region在HBase中定义为表按行方向切分的一个个数据区域,交由RegionServer负责管理,并向外提供数据读写服务。如果一个RegionServer上的Region过多,那么该RegionServer对应的就会承担过多的读写等服务请求,也就有可能在高并发访问的情况下,造成服务器性能下降甚至宕机。如此,RegionServer间Region的动态负载均衡,也就成了HBase实现高性能读写请求访问的一个需要解决的问题。那么,Region是如何在RegionServer间动态负载均衡的呢?
在HMaster中,有几个成员变量定义如下:
接下来,在finishInitialization()中,开始对上述实体进行初始化:
在initializeZKBasedSystemTrackers()方法中,
回到finishInitialization()中 ,
在getAndStartBalancerChore()方法中,
再次回到finishInitialization()中,balancer进行初始化
接下来介绍下BalancerChore类型的成员变量balancerChore,它为一个后台线程,会周期性的调用HMaster的balance()方法,周期性的完成实际的Region的负载均衡。它的定义如下:
它的父类Chore为HBase中的抽象线程类,HBase中很多工作线程都是继承自Chore,它的run()方法定义如下:
最后是我们的重点,HMaster的balance()方法:
这其中比较重要的就是这个迁移计划表的获取:
紧接着就开始循环处理这个移动计划列表plans,开始移动Region。移动计划的执行,实际上是由assignmentManager的balance()实现的。
- Hbase-0.98.6源码分析--负载均衡过程
- hbase源码分析-负载均衡过程
- Hbase负载均衡流程以及源码
- hbase 源代码分析 (19) HMaster 启动负载均衡过程分析
- hbase 源代码分析(18)负载均衡
- dubbo源码分析-负载均衡算法
- HBase负载均衡算法
- hbase负载均衡流程
- HBase 负载均衡
- hbase源码系列(一)Balancer 负载均衡
- hbase全局负载均衡流程
- Hbase 源码分析5--Master启动过程
- HBase源码分析_Master启动过程
- HBase 0.94 master启动过程源码分析
- HBase源码分析:HTable put过程
- hbase 源码分析 (14) spit 过程
- Hbase-0.98.6源码分析--Nonce管理机制源码分析
- Hbase-0.98.6源码分析--行锁
- [LeetCode] 12. Integer to Roman
- ubuntu12.04更新源update不成功
- [JZSC2016]【NOIP2016提高组A组7.16】(A_Crazy_Czy命题) 总结
- hdu5700区间交
- Nginx配置示例和方法(虚拟主机)
- Hbase-0.98.6源码分析--负载均衡过程
- 面试题38:数字在排序数字中出现的次数
- android studio 通过新建Library module的方式来导入SDK
- matlab调用VS生成的DLL
- LinkedList 基本属性
- UVA-340 Master-Mind Hints
- 无法解析的外部符号 __imp__curl_easy_init
- 布局属性的设置
- Hibernate学习笔记(一)