#!/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. robot framework 笔记(二),web ui 元素定位

    背景: 元素定位的方式很多,有通过 id.name.class等等,有感兴趣的同学可以参看相关文档,本文介绍 跟过文字定位的方法,在工作中一直使用这一种 no bb 方法如下: 1.根据"我 ...

  2. [JSOI2018]战争

    题目描述 九条可怜是一个热爱读书的女孩子. 在她最近正在读的一本小说中,描述了两个敌对部落之间的故事.第一个部落有 nnn 个人,第二个部落有 mmm 个人,每一个人的位置可以抽象成二维平面上坐标为 ...

  3. Java - MyBites 逆向工程

    逆向工程是什么呢? 说白了就是 mybatis 中提供了一个可以让你从 已经创建好的 数据库中,去通过表名,生成对应类,类属性和XML文件(sql语句). 源码:mybatis_AutoGenerat ...

  4. thinkpadT470P安装问题

    [问题描述]: 最近在将Thinkpad E430c的ubuntu系统重装成windows 7的过程中,出现了装好win7系统后,开机自动进入boot menu界面的问题,而且不论你选择从光驱还是硬盘 ...

  5. yaml文件

    apiVersion: apps/v1beta1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: ...

  6. 删除tppabs,href="javascript:if(confirm)...",、/*tpa=http://...

    扒网站,据说是web从业人员的必备技能; 废话不多,下面应该是你想要的; 1:   tppabs="h[^"]*" 2: href="javascript\:i ...

  7. Linux 的磁盘格式化、挂载、磁盘检验、df、du、fdisk、free命令的使用

    df:列出文件系统的整体磁盘使用量du:检查磁盘空间使用量fdisk:用于磁盘分区 free:查看内存占用情况 一.df命令列出系统的整体磁盘使用量 df命令参数功能:检查文件系统的磁盘空间占用情况. ...

  8. navicat 链接阿里云服务器数据库报80070007 的错误

    navicat用ssh跳转登录mysql连接时报: 80070007: SSH Tunnel: Server does not support diffie-hellman-group1-sha1 f ...

  9. python 链表的实现

    code #!/usr/bin/python # -*- coding: utf- -*- class Node(object): def __init__(self,val,p=): self.da ...

  10. 【模板】最小割树(Gomory-Hu Tree)

    传送门 Description 给定一个\(n\)个点\(m\)条边的无向连通图,多次询问两点之间的最小割 两点间的最小割是这样定义的:原图的每条边有一个割断它的代价,你需要用最小的代价使得这两个点不 ...