#!/bin/bash
#作用:hdfs使用率取最大100个主机和最小80个主机进行数据均衡
#打印报告
hdfs dfsadmin -report>report.txt
#截取主机名
cat report.txt | grep -i "hostname" | awk -F ': ' '{print $2}' >hostname.txt
#截取hdfs使用率
cat report.txt | grep -i "DFS Used%" | awk -F ': ' '{print $2}' | awk -F '%' '{print $1}' >dfsused.txt
#截取datanode存活数
livenum=$(cat report.txt | grep -i "Live datanodes" | awk -F "(" '{print $2}' | awk -F ")" '{print $1}')
#删除总的hdfs使用率
sed -i '1d' dfsused.txt
#截取存活datanode的hdfs使用率和主机名
dfsarr=((sed -n '1,$livenum p' dfsused.txt))
hostarr=((sed -n '1,$livenum p' hostname.txt))
#组合主机名和hdfs使用率一一对应起来
let livenum+=1
if [ $livenum -gt 0 ]
then
for((i=1;i<$livenum;i++))
do
for((j=1;j<$livenum;j++))
do
if [ $i -eq $j ]
then
echo ${hostarr[$i]} ":" ${dfsarr[$j]} >> hostdfs.txt
fi
done
done
else
echo "Not Live DataNodes"
fi
#获取使用率最大100个主机名和最小80台主机名(按第二列排序)
sort -rn -k 2 -t : hostdfs.txt | awk -F ":" '{print $1}' | head -n 100 >>host.txt
sort -rn -k 2 -t : hostdfs.txt | awk -F ":" '{print $1}' | tail -n 80 >>host.txt
#求平均值和最大值进行比较
avg_used=$(cat hostdfs.txt | awk -F ":" '{print $2*100}' | awk '{sum+=$1} END {print sum/NR}')
max_used=$(cat hostdfs.txt | awk -F ":" '{print $2*100}' | sort -rn | head -n 1)
diff_max_avg=$(($max_used-$avg_used))
#如果最大值与平均值的之差大于5,表示集群数据不均衡
if [ $diff_max_avg -gt 5 ]
then
jps | grep -i "balancer"
if [ $? -eq 0]
then
kill -9 $(jps | grep -i "balancer" | awk '{print $1}')
else
#对这些主机执行局部均衡
hdfs dfs -rm /system/balancer.id
hdfs balancer
-Ddfs.datanode.balance.max.concurrent.moves = 10 \
-Ddfs.balancer.moverThreads = 1024 \
-Ddfs.balance.bandwidthPerSec = 104857600 \
-policy datanode -threshold 5 -include -f host.txt
fi
else
echo "Nothing to do"
fi

Hadoop记录-HDFS均衡脚本的更多相关文章

  1. Hadoop记录-hdfs转载

    Hadoop 存档 每个文件均按块存储,每个块的元数据存储在namenode的内存中,因此hadoop存储小文件会非常低效.因为大量的小文件会耗尽namenode中的大部分内存.但注意,存储小文件所需 ...

  2. Hadoop记录-HDFS balancer配置

    HDFS balancer配置(可通过CM配置)dfs.datanode.balance.max.concurrent.moves 并行移动的block数量,默认5 dfs.datanode.bala ...

  3. Hadoop记录-HDFS配额Quota

    设置文件数配额 hdfs dfsadmin -setQuota <N> <directory>...<directory> 例如:设置目录下的文件总数为1000个h ...

  4. 介绍hadoop中的hadoop和hdfs命令

    有些hive安装文档提到了hdfs dfs -mkdir ,也就是说hdfs也是可以用的,但在2.8.0中已经不那么处理了,之所以还可以使用,是为了向下兼容. 本文简要介绍一下有关的命令,以便对had ...

  5. hadoop记录-hive常见设置

    分区表 set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstrict;create tabl ...

  6. 深入理解Hadoop之HDFS架构

    Hadoop分布式文件系统(HDFS)是一种分布式文件系统.它与现有的分布式文件系统有许多相似之处.但是,与其他分布式文件系统的差异是值得我们注意的: HDFS具有高度容错能力,旨在部署在低成本硬件上 ...

  7. 大数据技术之Hadoop(HDFS)

    第1章 HDFS概述 1.1 HDFS产出背景及定义 1.2 HDFS优缺点 1.3 HDFS组成架构 1.4 HDFS文件块大小(面试重点) 第2章 HDFS的Shell操作(开发重点) 1.基本语 ...

  8. Apache Hadoop2.0之HDFS均衡操作分析

    1 HDFS均衡操作原理 HDFS默认的块的副本存放策略是在发起请求的客户端存放一个副本,如果这个客户端在集群以外,那就选择一个不是太忙,存储不是太满的节点来存放,第二个副本放在与第一个副本相同的机架 ...

  9. hadoop记录-Hadoop参数汇总

    Hadoop参数汇总 linux参数 以下参数最好优化一下: 文件描述符ulimit -n 用户最大进程 nproc (hbase需要 hbse book) 关闭swap分区 设置合理的预读取缓冲区 ...

随机推荐

  1. Django示例演示--?

    引用自:https://blog.csdn.net/weixin_42950386/article/details/83143293 定义模型类 模型类被定义在"应用/models.py&q ...

  2. 织梦个人空间中调用ip,会员类型,邮箱,金币,会员积分

    织梦个人空间中调用.用户昵称,最后登录,会员等级 ,会员头衔,会员积分,空间访问,邮箱地址 ,金币数量,会员组的有效期天数 ,升级会员组的时间 ,用户的等级,用户的性别 ,会员的类型,ip 第一步确定 ...

  3. 计算 byte[] 转 int modebus 指定位数 获取值 使用

    计算 byte[] 转 int modebus 指定位数 获取值 使用 if (bytetores.Length > 6) { int total = 0; for (int i = 0; i ...

  4. PHP 鸟哥:我也曾经是“不适合”编程的人

    网名:雪候鸟,大家尊称鸟哥,惠新宸 @Laruence, 是国内最有影响力的 PHP 技术专家,PHP 开发组核心成员,PECL 开发者,Zend 公司外聘顾问.他曾供职于雅虎,百度,现在新浪微博任平 ...

  5. c语言数组的概念和指针的加减使用

    //数组变量名:就是一个地址:就是数组首元素的地址#include <stdio.h> int main(void) { int age[5] = {10,50,100,22,44}; / ...

  6. SqrtTree学习笔记

    散步的时候yy区间最值的不同分块做法,发现单点修改\(O(\sqrt{n})\)查询\(O(1)\)的做法不是很会? 于是yy了一个奇怪做法,写出来看看. 考虑查询的时候两端的散点可以用前后缀最值查出 ...

  7. GoCN每日新闻(2019-09-24)

    1. Go 搭建的高效网页爬虫:https://creekorful.me/building-fast-modern-web-crawler/ 2. Go 时区处理:https://medium.co ...

  8. CodeForeces 842d Vitya and Strange Lesson ——(带lazy标记的01字典树)

    给一个序列,每次操作对这个序列中的所有数异或一个x,问每次操作完以后整个序列的mex值. 做法是去重后构建01字典树,异或x就是对root加一个x的lazy标志,每次pushDown时如果lazy的这 ...

  9. 2019年领航杯 江苏省网络信息安全竞赛 初赛部分writeup

    赛题已上传,下载连接:https://github.com/raddyfiy/2019linghangcup 做出了全部的misc和前三道逆向题,排名第10,暂且贴一下writeup. 关卡一 编码解 ...

  10. python 二维码

    pip3 install Pillow pip3 install qrcode import qrcode text ="gisoracle我爱你呀" #input("输 ...