Hadoop Balancer原理分析_第1页
Hadoop Balancer原理分析_第2页
Hadoop Balancer原理分析_第3页
Hadoop Balancer原理分析_第4页
Hadoop Balancer原理分析_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Hadoop Balancer详解 康承昆 2012223040060 基本概念 “过载节点”是指存储使用率大于“平均 存储使用率+允许偏差”的节点; “负载节点”是指存储使用率小于“平均 存储使用率-允许偏差”的节点。 存储使用率表示一个数据节点上已用空间 占可用空间的百分比; 可用空间指的是分配给HDFS可使用的空间, 并非是节点所在机器的全部硬盘空间。 为何需要Balancer? 1、异构机器 磁盘容量不一样,可能存在部分DataNode磁盘 使用较高,而部分较低 2、新增机器 新增机器机器后,只有新写的数据可能到新的 机器中,老数据不会自动迁移 3、固定的DataNode上上传数据 H

2、DFS上传策略中,如果上传机器为DataNode, 则默认的第一个备份会放在本机上 Balancer的设计 单独作为一个daemon运行 避开和主节点放在一台机器运行 运行达到平衡后,daemon会自动退出,因 此需要定期启动,平衡集群数据 Balancer原理 Balancer根据用户设置的thld值,将DataNode利用率分为 四种,如下图: 其中: avgUtilization= totalUsedSpace/totalCapacity*100 Balancer处理最上面和最下面的两个区域。对于 avgUtilization-thld avgUtilization+thld间的,认 为

3、已经是平衡的。 Thld可以在启动时,通过-thresld参数设置,默认为10. avgUtilizationavgUtilization avgUtilizationavgUtilization- - thldthld avgUtilizationavgUtilization+ + thldthld aboveAvgUtilizedDatanodes overUtilizedDatanodes belowAvgUtilizedDatanodes underUtilizedDatanodes Balancer移动原则 分为Source和Target Source = overUtilizedD

4、atanodes, aboveAvgUtilizedDatanodes Target = belowAvgUtilizedDatanodes, , underUtilizedDatanodes 将Source对应的DataNode中的数据移动到 Target对应的DataNode中 选择数据移动的源节点和目的节点的依据 对于负载节点,依据以下条件随机选取选取作为其source,条 件优先级自上而下递减 同一机架上的过载节点 同一机架上的高于平均使用率的节点 其他机架上的过载节点 其他机架上的高于平均使用率的节 对于过载节点,依据以下条件随机选取选取作为其destination, 条件优先级自上

5、而下递减 同一机架上的负载节点 同一机架上的低于平均使用率的节点 其他机架上的负载节点 其他机架上的低于平均使用率的节点 Source Target匹配原则 首先按照同Rack进行DN匹配 1、匹配over区和under区 overUtilizedDatanodesoverUtilizedDatanodes underUtilizedDatanodeunderUtilizedDatanode s s source target Pair Source NodeTask target forfor source in source in overUtilizedDataNodesoverUtil

6、izedDataNodes choose target ()/100); else / else / aboveabove和和belowbelow区,区,移动该数据量后移动该数据量后,节点肯定还在平衡区中,节点肯定还在平衡区中 maxSizeToMove = (long)(Math.long)(Math.abs(abs(avgUtilavgUtil-utilization)-utilization)* *datanode.getCapacitydatanode.getCapacity()/100);()/100); if (utilization if (utilization avgUtil

7、avgUtil ) / ) / 如果是如果是targettarget节点,还要考虑磁盘剩余可用空间节点,还要考虑磁盘剩余可用空间 maxSizeToMove = Math.min(datanode.getRemaining(), maxSizeToMove); / MAX_SIZE_TO_MOVE固定为10G,不可配置,需要修改源码 maxSizeToMove = Math.min(MAX_SIZE_TO_MOVE, maxSizeToMove); overover above below underunder Source Target匹配总结 构建每一对时,会计算这一对可以移动的数 据大小

8、,计算原则如下: min(source.availibaleSize(), target.availiableSize(), avaliable计算如下 availableSize = maxMoveSize - scheduledSize 其中 scheduledSize初始为0,当出现多个匹配(如,)时,计 算后一对时( ) ,要减去第一队中已经配比好的移动大小 ()。 Balancer调度原则 针对匹配每一对,创建一 个线程,加入dispatcherExecutor中,代 码逻辑如下: Future futures = new Futurenew Futuresources.sizeso

9、urces.size();(); intint i i=0;=0; for (Source for (Source sourcesource : sources) : sources) futuresi+ = dispatcherExecutor.submit(source.newnew BlockMoveDispatcherBlockMoveDispatcher();(); 注: 1、BlockMoveDispatcher调用了source的dispatchBlocks函数,该函 数完成主要迁移工作 2、这里看不到pair的概念,是因为在Source中保存了NodeTask类, 而NodeT

10、ask类中保存了target的信息; 3、调度时,以source为单位,进行调度,一个source可能对应多个 target(NodeTask); Balancer调度原则 dispatchBlocks函数分析 1、从source节点获取block列表; 2、去除非法的block 破坏rack特性的block,已经传输的block 3、为合法的block寻找proxy节点,添加block到对应的target 节点的传输队列(队列长度默认不能超过5- MAX_NUM_CONCURRENT_MOVES) 4、创建实际执行的线程,加入线程池(moverExecutor = Executors.new

11、FixedThreadPool(MOVER_THREAD_POOL_SIZE); MOVER_THREAD_POOL_SIZE=1000) 5、线程给target节点发送OP_REPLACE_BLOCK请求; 6、target节点中连接proxy进行block的复制请求,并将操作 结果范围给客户端(balancer处); 7、如果block的复制成功,balancer给proxy节点发出请求, 删掉对应的block; Balancer调度原则 其他注意事项 当Source节点中的blockList中没有数据时,需 要向NameNode请求新的block列表(getBlocks 函数),次函数返回列表时,是随机返回指定 DataNode上一些block数据,因此多次请求中, 返回的可能有重复,因此在balancer中需要记 录已经moved的block,避免多次执行; Balancer速度估算 针对初始化得到的进行线程 调度,最多只会有DISPATCHER_THREAD_POOL_SIZE (默 认1000)个同时运行; 针对每一次调度source、target,各自最多同 时最多处理MAX

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论