• 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
  • 相关阅读:
    相关正则的一些知识
    数组中的方法
    封装ajax
    swiper结合ajax的轮播图
    事件
    原型、原型链
    HTML 常用标签
    HTML基础了解
    JSON 与 XML基本了解
    JavaScript(js)
  • 原文地址:https://www.cnblogs.com/xinfang520/p/11209731.html
Copyright © 2020-2023  润新知