#!/bin/bash
# 设置Hadoop路径
hadoop_path="/path/to/hadoop"
# 获取当前日期
current_date=$(date +%Y-%m-%d)
# 获取Hadoop集群中各个目录的总空间大小,并保存到文件
$hadoop_path/bin/hdfs dfs -du -s -h /user > current_space.txt
# 用awk命令提取目录名称和空间大小,并保存到文件
awk '{print $1, $2}' current_space.txt > current_space_formatted.txt
# 检查上一次记录的空间文件是否存在
if [ -f last_space.txt ]; then
# 对比两次空间文件,计算空间增长情况,并保存到文件
diff -y --suppress-common-lines last_space.txt current_space_formatted.txt > "space_growth_$current_date.txt"
# 打印空间增长情况
echo "Space Growth on $current_date:"
cat "space_growth_$current_date.txt"
else
echo "No previous space record found."
fi
# 将当前空间文件备份为上一次空间记录文件
cp current_space_formatted.txt last_space.txt
# 设置Hadoop路径
HADOOP_HOME="/path/to/hadoop"
# 创建保存磁盘使用信息的文件
USAGE_FILE="/path/to/usage.txt"
# 获取当前日期
current_date=$(date +%Y-%m-%d)
# 检查上一次记录的磁盘使用信息文件是否存在
if [ -f "$USAGE_FILE" ]; then
# 读取上一次记录的磁盘使用信息
while IFS=' ' read -r date used
do
last_date=$date
last_used=$used
done < "$USAGE_FILE"
# 获取当前日期和使用情况
new_used=$($HADOOP_HOME/bin/hdfs dfs -df -h /path/to/hdfs | awk 'NR==2{print $5}')
new_date=$current_date
# 计算每日增量
used_diff=$((new_used - last_used))
date_diff=$(($(date -d "$new_date" +%s) - $(date -d "$last_date" +%s)))
daily_increment=$(($used_diff / (($date_diff / (60 * 60 * 24)) + 1)))
else
# 第一次执行脚本,获取当前日期和使用情况
new_used=$($HADOOP_HOME/bin/hdfs dfs -df -h /path/to/hdfs | awk 'NR==2{print $5}')
new_date=$current_date
# 设置默认值为
daily_increment=
fi
# 将当前日期和使用情况保存到文件中
echo "$new_date $new_used" > "$USAGE_FILE"
# 查询当前服务器剩余磁盘预计剩余使用天数
remaining_space=$($HADOOP_HOME/bin/hdfs dfs -df -h /path/to/hdfs | awk 'NR==2{print $4}')
remaining_duration=""
if ((remaining_space >= )); then
case $remaining_space in
*T) remaining_duration="较长时间";;
*G) remaining_duration="几天到几个月";;
*M) remaining_duration="几小时到几天";;
*K) remaining_duration="不足一小时";;
*) remaining_duration="不足一小时";;
esac
else
remaining_duration="未知"
fi
# 打印磁盘使用情况和剩余空间预计使用时间
echo "当前日期:$new_date"
echo "每日增量:$daily_increment"
echo "剩余空间:$remaining_space"
echo "预计剩余使用天数:$remaining_duration"