和上篇一样的操作
查看代码
#!/bin/bash# 确保以 root 用户运行
if [ "$(id -u)" -ne "0" ]; thenecho "请以 root 用户运行此脚本!"exit 1
fi# 定义目录和文件路径
SOFTWARE_DIR="/export/software"
SERVER_DIR="/export/servers"
HADOOP_TAR="hadoop-3.3.5.tar.gz"
HADOOP_DIR="hadoop-3.3.5"
HADOOP_SYMLINK="hadoop"# 确保目标目录存在
if [ ! -d "$SOFTWARE_DIR" ]; thenecho "目录 $SOFTWARE_DIR 不存在,正在创建..."mkdir -p "$SOFTWARE_DIR"if [ $? -ne 0 ]; thenecho "创建目录 $SOFTWARE_DIR 失败。"exit 1fi
fiif [ ! -d "$SERVER_DIR" ]; thenecho "目录 $SERVER_DIR 不存在,正在创建..."mkdir -p "$SERVER_DIR"if [ $? -ne 0 ]; thenecho "创建目录 $SERVER_DIR 失败。"exit 1fi
fi# 切换到软件目录
cd "$SOFTWARE_DIR" || { echo "无法切换到目录 $SOFTWARE_DIR"; exit 1; }# 检查 Hadoop 压缩包是否存在
if [ ! -f "$HADOOP_TAR" ]; thenecho "压缩包 $HADOOP_TAR 不存在,请上传该文件后再运行脚本。"exit 1
fi# 删除现有的 Hadoop 目录(如果存在)
if [ -d "$SERVER_DIR/$HADOOP_DIR" ]; thenecho "目录 $SERVER_DIR/$HADOOP_DIR 已存在,正在删除..."rm -rf "$SERVER_DIR/$HADOOP_DIR" || { echo "删除 $HADOOP_DIR 失败"; exit 1; }
fiif [ -d "$SERVER_DIR/$HADOOP_SYMLINK" ] || [ -L "$SERVER_DIR/$HADOOP_SYMLINK" ]; thenecho "符号链接或目录 $SERVER_DIR/$HADOOP_SYMLINK 已存在,正在删除..."rm -rf "$SERVER_DIR/$HADOOP_SYMLINK" || { echo "删除符号链接 $HADOOP_SYMLINK 失败"; exit 1; }
fi# 解压 Hadoop 包
echo "正在解压 $HADOOP_TAR 到 $SERVER_DIR..."
tar -zxvf "$HADOOP_TAR" -C "$SERVER_DIR" || { echo "解压失败"; exit 1; }# 重命名解压后的 Hadoop 目录
if [ -d "$SERVER_DIR/$HADOOP_DIR" ]; thenecho "重命名 $HADOOP_DIR 为 $HADOOP_SYMLINK..."mv "$SERVER_DIR/$HADOOP_DIR" "$SERVER_DIR/$HADOOP_SYMLINK" || { echo "重命名失败"; exit 1; }
elseecho "目录 $HADOOP_DIR 不存在,检查解压结果。"exit 1
fi# 配置 Hadoop 环境变量
PROFILE_FILE="/etc/profile"
echo "配置 Hadoop 环境变量..."
{echo "# Hadoop 环境变量配置"echo "export HADOOP_HOME=$SERVER_DIR/$HADOOP_SYMLINK"echo "export PATH=\$PATH:\$HADOOP_HOME/bin:\$HADOOP_HOME/sbin"
} >> "$PROFILE_FILE"# 重新加载环境变量
echo "重新加载环境变量..."
source "$PROFILE_FILE" || { echo "无法重新加载环境变量配置"; exit 1; }# 验证 Hadoop 是否安装成功
echo "验证 Hadoop 安装..."
hadoop version || { echo "Hadoop 安装失败"; exit 1; }echo "Hadoop 安装和配置完成!"