hadoop集群空间使用情况报告脚本

最近集群空间有点紧张,总是担心空间不足而崩溃,近期扩容又不太现实,经与集群用户沟通发现:集群上存储了很多无用的历史数据,可以删除,这样就可以通过一个crontab脚本每天生成集群空间使用报告,当使用量超过70%、80%是分别报警,并通知那些用户占用空间较大,预留当机冗余空间,这样就不需要时刻担心集群空间爆满了。


[hdfs@hanagios48 root]$ more  /home/hdfs/dfsadmin_report.sh 
#!/bin/bash
source ~/.bash_profile

today=$(date +%Y%m%d)
#report=`hadoop dfsadmin -report|head -n 11`

report=/tmp/report
echo "Hi,各位集群用户
   当Hadoop集群空间使用量达到70%时,各位将会收到Warning邮件,提示清理空间;
   当Hadoop集群空间使用量到达80%时,各位将会收到Critical邮件,   提示清理空间;
为保证集群数据安全,预留down机冗余空间,请各位务必清理,如因数据量确实巨大,集群无法容纳,请及时告知运维进行扩容,谢谢!">$report

echo >>$report
hadoop dfsadmin -report|head -n 11 >>$report

echo ----------------------       >>$report
echo dfs used details:      >>$report
hadoop fs -du /                  >>$report
echo                                    >>$report
hadoop fs -du /user         >>$report


dfs_used_percent=`cat $report|grep "DFS Used%"|awk -F: '{print $2}'`
dfs_used=`echo ${dfs_used_percent}|awk -F% '{print $1}'`


# 百分百小数比较
#expr ${dfs_used} \>\= 80

user=laijingli2006@126.com
title=`echo "${today}[${dfs_used_percent}] WBY Hadoop Cluster Hdfs Useage Report: dfs_used ${dfs_used_percent}"`
echo $title


if [ $(expr ${dfs_used} \>\= 80) = 1 ];then
 echo dfs_used  80
 #cat $report|mail -s "Critical: $title" $user
  cat $report|/usr/bin/mutt  -s  "Critical: $title" $user

elif [ $(expr ${dfs_used} \>\= 70) = 1 ];then
 echo 70
 #cat $report|mail -s "Warning: $title" $user
 cat $report|/usr/bin/mutt  -s "Warning: $title" $user

else
 echo 60
 #cat $report|mail -s "Normal: $title" $user
 #cat $report|/usr/bin/mutt  -s "Normal: $title" $user
fi

#cat $report|mail -s $today DfsReport: dfs_used ${dfs_used_percent}  362560701@qq.com



crontab执行效果还不错:

[hdfs@hanagios48 root]$ crontab -l
05 8 * * * /home/hdfs/dfsadmin_report.sh 

[hdfs@hanagios48 root]$ more /tmp/report                                      
Hi,各位集群用户
   当Hadoop集群空间使用量达到70%时,各位将会收到Warning邮件,提示清理空间;
   当Hadoop集群空间使用量到达80%时,各位将会收到Critical邮件,提示清理空间;
为保证集群数据安全,预留down机冗余空间,请各位务必清理,如因数据量确实巨大,集群无法容纳,请及时告知运维进行扩容,谢谢!


Configured Capacity: 124854950621184 (113.55 TB)
Present Capacity: 118317151626783 (107.61 TB)
DFS Remaining: 38704545865728 (35.2 TB)
DFS Used: 79612605761055 (72.41 TB)
DFS Used%: 67.29%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0


-------------------------------------------------
Datanodes available: 15 (15 total, 0 dead)
----------------------
dfs used details:
Found 6 items
0               hdfs://hamaster140:9000/benchmarks
125752          hdfs://hamaster140:9000/data0
0               hdfs://hamaster140:9000/system
13721821810608  hdfs://hamaster140:9000/tech
1803375805154   hdfs://hamaster140:9000/tmp
6411197575455   hdfs://hamaster140:9000/user

Found 14 items
33222938       hdfs://hamaster140:9000/user/azk
4072247213805  hdfs://hamaster140:9000/user/cla
40705761240    hdfs://hamaster140:9000/user/din
0              hdfs://hamaster140:9000/user/fea
0              hdfs://hamaster140:9000/user/gao
36454169547    hdfs://hamaster140:9000/user/gmz
1877816487439  hdfs://hamaster140:9000/user/hdf
148965233376   hdfs://hamaster140:9000/user/imp
2416017438     hdfs://hamaster140:9000/user/in
0              hdfs://hamaster140:9000/user/lin
0              hdfs://hamaster140:9000/user/luo
149973222708   hdfs://hamaster140:9000/user/shi
82586246964    hdfs://hamaster140:9000/user/wuy
0              hdfs://hamaster140:9000/user/zho

[hdfs@hanagios48 root]$ 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的脚本,可以快速在 CentOS 7 上搭建 Hadoop 集群: ```bash #!/bin/bash # Hadoop Cluster Setup Script # Set hostname echo "Setting hostname..." hostnamectl set-hostname hadoop-master echo "127.0.0.1 hadoop-master" >> /etc/hosts # Install Java echo "Installing Java..." yum install -y java-1.8.0-openjdk-devel # Download Hadoop echo "Downloading Hadoop..." curl -O https://apache.org/dist/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz # Extract Hadoop echo "Extracting Hadoop..." tar -xzvf hadoop-3.3.1.tar.gz mv hadoop-3.3.1 /usr/local/hadoop rm hadoop-3.3.1.tar.gz # Configure Hadoop echo "Configuring Hadoop..." echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk" >> /usr/local/hadoop/etc/hadoop/hadoop-env.sh echo "export HADOOP_HOME=/usr/local/hadoop" >> /etc/profile echo "export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin" >> /etc/profile source /etc/profile # Configure Hadoop Cluster echo "Configuring Hadoop Cluster..." cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml sed -i 's/localhost/hadoop-master/' /usr/local/hadoop/etc/hadoop/core-site.xml sed -i 's/localhost/hadoop-master/' /usr/local/hadoop/etc/hadoop/hdfs-site.xml sed -i 's/localhost/hadoop-master/' /usr/local/hadoop/etc/hadoop/yarn-site.xml echo "export HDFS_NAMENODE_USER=root" >> /usr/local/hadoop/etc/hadoop/hadoop-env.sh echo "export HDFS_DATANODE_USER=root" >> /usr/local/hadoop/etc/hadoop/hadoop-env.sh echo "export HDFS_SECONDARYNAMENODE_USER=root" >> /usr/local/hadoop/etc/hadoop/hadoop-env.sh echo "export YARN_RESOURCEMANAGER_USER=root" >> /usr/local/hadoop/etc/hadoop/yarn-env.sh echo "export YARN_NODEMANAGER_USER=root" >> /usr/local/hadoop/etc/hadoop/yarn-env.sh # Start Hadoop Cluster echo "Starting Hadoop Cluster..." /usr/local/hadoop/sbin/start-dfs.sh /usr/local/hadoop/sbin/start-yarn.sh # Configure Hadoop Cluster on other nodes echo "Configure Hadoop Cluster on other nodes..." echo "hadoop-slave1" >> /etc/hosts echo "hadoop-slave2" >> /etc/hosts # Done echo "Hadoop Cluster Setup Complete!" ``` 这个脚本包括了以下步骤: 1. 设置主机名和 hosts 文件。 2. 安装 Java。 3. 下载和解压 Hadoop。 4. 配置 Hadoop。 5. 配置 Hadoop 集群。 6. 启动 Hadoop 集群。 7. 在其他节点上配置 Hadoop 集群。 可以将这个脚本保存为 `setup-hadoop.sh`,并在每个节点上运行它。注意,在运行脚本之前,需要将每个节点的 hostname 和 IP 地址添加到 `/etc/hosts` 文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值