Linux记录-shell获取hdfs used使用

#!/bin/bash

echo "start checking hdfs used rate..."
#切换用户,切换到用户目录
su hdfs
cd /home/hdfs
#删除文件
rm -f hostname.txt
rm -f dfused.txt
rm -f hostdfs.txt
rm -f minhost.txt
rm -f maxhost.txt
#获取主机信息
hdfs dfsadmin -report | grep Hostname | awk '{print $2}' > hostname.txt
#获取hdfs已使用信息
hdfs dfsadmin  -report | grep "DFS Used%" | awk '{print $3}' > dfused.txt
#只截取Live Datanode的信息
livesum=$(hdfs dfsadmin -report  | grep "Live datanodes" | awk '{print $3}' | cut -c2)
#删除dfused.txt第一行
sed -i '1d' dfused.txt
let livesum+=1
#从起始行删除到最后行
sed -i $livesum',$d' dfused.txt 
sed -i $livesum',$d' hostname.txt
#将主机名和DFS Used%一一对应起来
linesum=$(cat hostname.txt | wc -l)
harr=($(awk '{print $1}' hostname.txt))  
darr=($(awk '{print $1}' dfused.txt)) 
if [ $linesum > 0 ]
  then
  for (( i = 0 ; i < ${#harr[@]} ; i++ ))
  do
     for (( j = 0 ; j < ${#darr[@]} ; j++ ))
     do
         if [ $i -eq $j ]
         then
            echo ${harr[$i]} ":" ${darr[$j]} >> hostdfs.txt
         fi
     done
 done
else
   echo "Not Live Datanodes"
fi
#排序(从大到小)
#取最小的10个比例
hharr=($(cat hostdfs.txt | awk '{print $3}' |sort -ru | tail -n 10)) 
#取最大的10个比例
ddarr=($(cat hostdfs.txt | awk '{print $3}' |sort -ru | head -n 10))
#取最小比例的10个主机
for (( k = 0; k< ${#hharr[@]} ; k++ ))
do
    if [[ $(echo $(cat hostdfs.txt) | grep "${hharr[$k]}") != "" ]]
    then
    cat hostdfs.txt | grep "${hharr[$k]}" | awk 'NR==1{print $1}' >> minhost.txt
    fi
done
#取最大比例的10个主机
for (( m = 0; m< ${#ddarr[@]} ; m++ ))
do
    if [[ $(echo $(cat hostdfs.txt) | grep "${ddarr[$m]}") != "" ]]
    then
    cat hostdfs.txt | grep "${ddarr[$k]}" | awk 'NR==1{print $1}' >> maxhost.txt
    fi
done
#获取最小使用的主机
mminhost=$(cat minhost.txt | awk 'NR==1{print $1}')

  

猜你喜欢

转载自www.cnblogs.com/xinfang520/p/10316526.html