HDFS Balancer负载均衡器及语法详解

 更新时间:2023年03月31日 11:24:22   作者:huan1993  
这篇文章主要为大家介绍了HDFS Balancer负载均衡器及语法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

1、背景

当我们的hadoop集群运行了一段时间之后,各个DataNode上的数据分布不一定均匀分布的。比如说: 我们向现有集群中添加了一个新的DataNode。

2、什么是平衡

此处是我自己的一个简单的理解

所谓的平衡指的是 每个DataNode的利用率集群的利用率 之间相差不超过给定的阈值百分比。此处的平衡 指的是各个DataNode之间的平衡,同一个DataNode之间的各个磁盘是不会平衡的。

2.1 每个DataNode的利用率计算

DataNode的利用率= dfs已用的空间 / 分配给dfs的空间。

注意: 分配给dfs的空间 不是磁盘的总空间。

2.2 集群的利用率

集群的利用率= 各datanode dfs已使用的空间 / 各datanode总空间

2.3 平衡

假设平衡的阈值是 5%,集群的利用率是 37.5,那么每个节点的利用率在32.5%42.5%之间都认为是均衡的。也就是说,极端情况下,DataNode的利用率最大相差10%

3、hdfs balancer语法

[hadoopdeploy@hadoop01 ~]$ hdfs balancer --help
Usage: hdfs balancer
	[-policy <policy>]	the balancing policy: datanode or blockpool
	[-threshold <threshold>]	Percentage of disk capacity
	[-exclude [-f <hosts-file> | <comma-separated list of hosts>]]	Excludes the specified datanodes.
	[-include [-f <hosts-file> | <comma-separated list of hosts>]]	Includes only the specified datanodes.
	[-source [-f <hosts-file> | <comma-separated list of hosts>]]	Pick only the specified datanodes as source nodes.
	[-blockpools <comma-separated list of blockpool ids>]	The balancer will only run on blockpools included in this list.
	[-idleiterations <idleiterations>]	Number of consecutive idle iterations (-1 for Infinite) before exit.
	[-runDuringUpgrade]	Whether to run the balancer during an ongoing HDFS upgrade.This is usually not desired since it will not affect used space on over-utilized machines.
	[-asService]	Run as a long running service.

Generic options supported are:
-conf <configuration file>        specify an application configuration file
-D <property=value>               define a value for a given property
-fs <file:///|hdfs://namenode:port> specify default filesystem URL to use, overrides 'fs.defaultFS' property from configurations.
-jt <local|resourcemanager:port>  specify a ResourceManager
-files <file1,...>                specify a comma-separated list of files to be copied to the map reduce cluster
-libjars <jar1,...>               specify a comma-separated list of jar files to be included in the classpath
-archives <archive1,...>          specify a comma-separated list of archives to be unarchived on the compute machines

The general command line syntax is:
command [genericOptions] [commandOptions]
参数描述
threshold磁盘容量的百分比。默认值为10%,表示上下浮动10%。
policy平衡策略。
datanode(默认):当每一个DataNode是平衡的时候,集群就是平衡的。
blockpool:当每一个DataNode中的blockpool是平衡的,集群就是平衡的。
exclude不参与平衡的DataNode节点
include参与平衡的DataNode节点
source仅选取指定的数据节点作为源节点
blockpoolsBalancer仅在指定的blockpools中运行
idleiterations退出前的连续空闲迭代次数(-1表示无限)
-runDuringUpgrade是否在正在进行的HDFS升级过程中运行平衡器。通常不需要这样做,因为这不会影响过度使用的计算机上的已用空间。
-asService作为长期运行的服务运行

4、运行一个简单的balance案例

4.1 设置平衡数据传输带宽

[hadoopdeploy@hadoop01 ~]$ hdfs dfsadmin  -setBalancerBandwidth 10485760
Balancer bandwidth is set to 10485760
[hadoopdeploy@hadoop01 ~]$

当我们的集群负载需要调低这个值,当我们的集群负载较低时,可以适当调高这个值。

4.2 执行banalce

[hadoopdeploy@hadoop01 ~]$ hdfs balancer -policy datanode -threshold 5
2023-03-26 14:10:09,785 INFO balancer.Balancer: Using a threshold of 5.0
2023-03-26 14:10:09,786 INFO balancer.Balancer: namenodes  = [hdfs://hadoop01:8020]
2023-03-26 14:10:09,786 INFO balancer.Balancer: parameters = Balancer.BalancerParameters [BalancingPolicy.Node, threshold = 5.0, max idle iteration = 5, #excluded nodes = 0, #included nodes = 0, #source nodes = 0, #blockpools = 0, run during upgrade = false]
2023-03-26 14:10:09,786 INFO balancer.Balancer: included nodes = []
2023-03-26 14:10:09,786 INFO balancer.Balancer: excluded nodes = []
2023-03-26 14:10:09,786 INFO balancer.Balancer: source nodes = []
Time Stamp               Iteration#  Bytes Already Moved  Bytes Left To Move  Bytes Being Moved  NameNode
2023-03-26 14:10:09,787 INFO balancer.NameNodeConnector: getBlocks calls for hdfs://hadoop01:8020 will be rate-limited to 20 per second
2023-03-26 14:10:10,392 INFO balancer.Balancer: dfs.namenode.get-blocks.max-qps = 20 (default=20)
2023-03-26 14:10:10,392 INFO balancer.Balancer: dfs.balancer.movedWinWidth = 5400000 (default=5400000)
2023-03-26 14:10:10,392 INFO balancer.Balancer: dfs.balancer.moverThreads = 1000 (default=1000)
2023-03-26 14:10:10,392 INFO balancer.Balancer: dfs.balancer.dispatcherThreads = 200 (default=200)
2023-03-26 14:10:10,392 INFO balancer.Balancer: dfs.balancer.getBlocks.size = 2147483648 (default=2147483648)
2023-03-26 14:10:10,392 INFO balancer.Balancer: dfs.balancer.getBlocks.min-block-size = 10485760 (default=10485760)
2023-03-26 14:10:10,392 INFO balancer.Balancer: dfs.datanode.balance.max.concurrent.moves = 100 (default=100)
2023-03-26 14:10:10,392 INFO balancer.Balancer: dfs.datanode.balance.bandwidthPerSec = 104857600 (default=104857600)
2023-03-26 14:10:10,395 INFO balancer.Balancer: dfs.balancer.max-size-to-move = 10737418240 (default=10737418240)
2023-03-26 14:10:10,395 INFO balancer.Balancer: dfs.blocksize = 134217728 (default=134217728)
2023-03-26 14:10:10,401 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.121.141:9866
2023-03-26 14:10:10,401 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.121.140:9866
2023-03-26 14:10:10,401 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.121.142:9866
2023-03-26 14:10:10,402 INFO balancer.Balancer: 0 over-utilized: []
2023-03-26 14:10:10,402 INFO balancer.Balancer: 0 underutilized: []
2023-3-26 14:10:10                0                  0 B                 0 B                0 B                  0  hdfs://hadoop01:8020
The cluster is balanced. Exiting...
2023-3-26 14:10:10       Balancing took 810.0 milliseconds
[hadoopdeploy@hadoop01 ~]$

5、参考文档

1、hadoop.apache.org/docs/curren…

2、https://www.jb51.net/article/279671.htm

以上就是HDFS Balancer负载均衡器及语法详解的详细内容,更多关于HDFS Balancer负载均衡器的资料请关注脚本之家其它相关文章!

相关文章

  • Java中的迭代器和foreach原理

    Java中的迭代器和foreach原理

    这篇文章主要介绍了Java中的迭代器和foreach原理,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-09-09
  • 详解spring 配置的两种方式:JAVA配置和注解配置

    详解spring 配置的两种方式:JAVA配置和注解配置

    这篇文章主要介绍了详解spring 配置的两种方式:JAVA配置和注解配置,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Java内部类与匿名内部类

    Java内部类与匿名内部类

    这篇文章主要介绍了Java内部类与匿名内部类,内部类可以直接访问外部类的成员,包括私有成员。外部类要访问内部类的成员,必须要建立内部类的对象,更多相关内容可以参考下面文章内容
    2022-06-06
  • JAVA删除字符串固定下标字串的实现

    JAVA删除字符串固定下标字串的实现

    本文主要介绍了JAVA删除字符串固定下标字串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • java普通类如何转javafx程序

    java普通类如何转javafx程序

    这篇文章主要介绍了java普通类如何转javafx程序方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Java多线程知识点全面总结

    Java多线程知识点全面总结

    这篇文章主要介绍了Java多线程知识点全面总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java Math类的三个方法ceil,floor,round用法

    Java Math类的三个方法ceil,floor,round用法

    这篇文章主要介绍了Java Math类的三个方法ceil,floor,round用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 一次"java:程序包org.aspectj.lang不存在"问题解决实战记录

    一次"java:程序包org.aspectj.lang不存在"问题解决实战记录

    这篇文章主要给大家介绍了一次"java:程序包org.aspectj.lang不存在"问题解决的实战过程,这个错误提示意味着你的Java程序中引用了org.aspectj.lang这个包,但是该包并不存在,文章通过图文介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • 如何解决HttpServletRequest.getInputStream()多次读取问题

    如何解决HttpServletRequest.getInputStream()多次读取问题

    这篇文章主要介绍了如何解决HttpServletRequest.getInputStream()多次读取问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • java自定义拦截器用法实例

    java自定义拦截器用法实例

    这篇文章主要介绍了java自定义拦截器用法,实例分析了java自定义拦截器的实现与使用技巧,需要的朋友可以参考下
    2015-06-06

最新评论