zoukankan      html  css  js  c++  java
  • Hadoop记录-HDFS均衡脚本

    #!/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
  • 相关阅读:
    Java核心技术 卷一 笔记四 库类的直接使用
    Java核心技术 卷一 笔记三 大数值及数组
    Java核心技术 卷一 笔记2 字符串的复制
    Java核心技术 卷一 笔记1
    修改css 样式后, hover事件 不生效
    修改 element ui input 输入框 样式不生效问题
    css3 计算属性
    Vue3 改动系列
    浏览器实现,向下滑动 鼠标滚轮,页面横向移动
    linux ceont0s7 vue 打包压缩图片 一直报错
  • 原文地址:https://www.cnblogs.com/xinfang520/p/11209731.html
Copyright © 2011-2022 走看看