Hadoop2.7实战v1.0之start-balancer.sh与hdfs balancer数据均衡
适用场景:
a.当动态添加或者删除集群的数据节点,必然会使各节点的数据不均衡
b.当正常维护时
1.对hdfs负载设置均衡,因为默认的数据传输带宽比较低,可以设置为64M,
即hdfs dfsadmin -setBalancerBandwidth 67108864即可
点击(此处)折叠或打开
- [root@sht-sgmhadoopnn-01 ~]# cd /hadoop/hadoop-2.7.2/bin
- [root@sht-sgmhadoopdn-01 bin]# ./hdfs dfsadmin -setBalancerBandwidth 67108864
- Balancer bandwidth is set to 67108864 for sht-sgmhadoopnn-01/172.16.101.55:8020
- Balancer bandwidth is set to 67108864 for sht-sgmhadoopnn-02/172.16.101.56:8020
2.默认balancer的threshold为10%,即各个节点存储使用率偏差不超过10%,我们可将其设置为5%;然后启动Balancer,sbin/start-balancer.sh -threshold 5,等待集群自均衡完成即可
点击(此处)折叠或打开
- [root@sht-sgmhadoopdn-01 bin]# cd ../sbin
- starting balancer, logging to /hadoop/hadoop-2.7.2/logs/hadoop-root-balancer-sht-sgmhadoopnn-01.telenav.cn.out
- [root@sht-sgmhadoopnn-01 sbin]# ./start-balancer.sh -threshold 5
- starting balancer, logging to /hadoop/hadoop-2.7.2/logs/hadoop-root-balancer-sht-sgmhadoopnn-01.telenav.cn.out
###运行这个命令start-balancer.sh -threshold 5和使用hdfs balancer -threshold 5是一样的
#### Usage: hdfs balancer
点击(此处)折叠或打开
- [root@sht-sgmhadoopnn-01 bin]# ./hdfs balancer -threshold 5
- 16/03/05 18:57:33 INFO balancer.Balancer: Using a threshold of 1.0
- 16/03/05 18:57:33 INFO balancer.Balancer: namenodes = [hdfs://mycluster]
- 16/03/05 18:57:33 INFO balancer.Balancer: parameters = Balancer.Parameters[BalancingPolicy.Node, threshold=1.0, max idle iteration = 5, number of nodes to be excluded = 0, number of nodes to be included = 0]
- Time Stamp Iteration# Bytes Already Moved Bytes Left To Move Bytes Being Moved
- 16/03/05 18:57:34 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
- 16/03/05 18:57:35 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.58:50010
- 16/03/05 18:57:35 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.60:50010
- 16/03/05 18:57:35 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.66:50010
- 16/03/05 18:57:35 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.59:50010
- 16/03/05 18:57:35 INFO balancer.Balancer: 0 over-utilized: []
- 16/03/05 18:57:35 INFO balancer.Balancer: 0 underutilized: []
- The cluster is balanced. Exiting...
- Mar 5, 2016 6:57:35 PM 0 0 B 0 B -1 B
- Mar 5, 2016 6:57:35 PM Balancing took 2.66 seconds
- 1).为什么我执行该命令hdfs balancer -threshold 5平衡数据命令没有反应呢?
5表示5% ,
群总存储使用率: 1.74%
sht-sgmhadoopdn-01: 1.74%
sht-sgmhadoopdn-02: 1.74%
sht-sgmhadoopdn-03: 1.74%
sht-sgmhadoopdn-04: 0%
执行-threshold 5, 表示每一个 datanode 存储使用率和集群总存储使用率的差值都应该小于这个阀值5%;
假如超过5%,会执行数据平衡操作。
B. 2).怎样判断执行命令是否会生效,数据平衡操作?
if (群总存储使用率 — 每一台datanode 存储使用率) > -threshold 5
#会执行数据平衡
else
#该命令不生效
end if
C. 3).the threshold range of [1.0, 100.0],所以最小只能设置 -threshold 1
D. 4).balance命令可以执行在namenode或者datanode节点上,最好在新增的或者空闲的数据节点上执行
3. 执行命令hdfs balancer -threshold 1
点击(此处)折叠或打开
- [root@sht-sgmhadoopnn-01 hadoop]# hdfs balancer -threshold 1
- ……………..
- ……………..
- 16/03/08 16:08:09 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.59:50010
- 16/03/08 16:08:09 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.58:50010
- 16/03/08 16:08:09 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.66:50010
- 16/03/08 16:08:09 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.60:50010
- 16/03/08 16:08:09 INFO balancer.Balancer: 0 over-utilized: []
- 16/03/08 16:08:09 INFO balancer.Balancer: 0 underutilized: []
- The cluster is balanced. Exiting...
- Mar 8, 2016 4:08:09 PM 1 382.22 MB 0 B -1 B
- Mar 8, 2016 4:08:09 PM Balancing took 6.7001 minutes
###新增数据节点的411.7M,偏差小于1%。
源码解析:
点击(此处)折叠或打开
- [root@sht-sgmhadoopnn-01 sbin]# more start-balancer.sh
- #!/usr/bin/env bash
-
- bin=`dirname "${BASH_SOURCE-$0}"`
- bin=`cd "$bin"; pwd`
-
- DEFAULT_LIBEXEC_DIR="$bin"/../libexec
- HADOOP_LIBEXEC_DIR=${HADOOP_LIBEXEC_DIR:-$DEFAULT_LIBEXEC_DIR}
- . $HADOOP_LIBEXEC_DIR/hdfs-config.sh
-
- # Start balancer daemon.
-
- "$HADOOP_PREFIX"/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script "$bin"/hdfs start balancer $@
- 解析:start-balancer.sh脚本其实最终还是调用hdfs start balancer $@ 命令,对于 $@ 是指shell脚本运行的传递的参数列表,一般参数为-threshold 5
-
- [root@sht-sgmhadoopnn-01 sbin]# more stop-balancer.sh
- #!/usr/bin/env bash
-
- bin=`dirname "${BASH_SOURCE-$0}"`
- bin=`cd "$bin"; pwd`
-
- DEFAULT_LIBEXEC_DIR="$bin"/../libexec
- HADOOP_LIBEXEC_DIR=${HADOOP_LIBEXEC_DIR:-$DEFAULT_LIBEXEC_DIR}
- . $HADOOP_LIBEXEC_DIR/hdfs-config.sh
-
- # Stop balancer daemon.
- # Run this on the machine where the balancer is running
-
- "$HADOOP_PREFIX"/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script "$bin"/hdfs stop balancer
- 解析:stop-balancer.sh脚本其实最终还是调用hdfs stop balancer命令
- [root@sht-sgmhadoopnn-01 sbin]#
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
HBase Java编程示例
HelloWorld.zip 点击(此处)折叠或打开 package elementary; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.HBaseConfiguration; import org....
- 下一篇
为什么选择ali-E-MapReduce
介绍 E-MapReduce是构建于阿里云ECS弹性虚拟机之上,利用开源大数据生态系统,包括但不限于Hadoop、Spark、Hbase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。我们提供的软件基本都是开源的软件,会有一些性能的优化,但是绝对不引入任何不兼容的改动。具体实施可以参考:https://www.aliyun.com/product/emapreduce Hadoop可以处理哪些场景 Hadoop as a service的概念提出由来已久,当前99.9%的公司都在使用Hadoop。目前可以处理几乎所有的场景,如:ETL、实时流式处理、实时查询、机器学习等场景。当前,在阿里云E-MapReduce中,每个场景都有一些用户在使用,后续我们也会提供一些典型的场景给您作为参考。 为什么需要上云 针对这个问题可能业界已经
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果