Hadoop-3.3.5 自动安装

Hadoop-3.3.5 自动安装脚本

为了方便数据科学与大数据技术的 hadoop-3.3.5 安装与配置

目前适用于新安装的纯净虚拟机,未配置冲突检测..

所以安装的话请使用全新创建的机器以避免错误...

如何使用

  1. ssh localhost 输入你目前用户的密码
  2. exit 退出当前ssh终端(此举是为自动建立.ssh文件夹并记录known_hosts文件)
  3. 然后将下列代码复制进 hadoop_create.sh中 (vim hadoop_create.sh
  4. chmod +x hadoop_create.sh (为该文件添加可执行权限)
  5. 在你保存该文件的文件夹里输入./hadoop_create.sh,启动该脚本。
#!/bin/bash
# Set up Java下载链接、目录和Java安装目录
download_url_java="https://d6.injdk.cn/openjdk/openjdk/21/openjdk-21.0.1_linux-x64_bin.tar.gz"
download_dir="$HOME/Download"
java_install_dir="$HOME/JavaRuntime"

# 设置SSH密钥和目录
ssh_key_dir="$HOME/.ssh"
ssh_key_file="$ssh_key_dir/id_rsa"

# 设置Hadoop下载链接、目录和Hadoop安装目录
hadoop_download_url="https://mirrors.aliyun.com/apache/hadoop/common/hadoop-3.3.5/hadoop-3.3.5.tar.gz?spm=a2c6h.25603864.0.0.39f2a91e2jC9Is"
hadoop_download_dir="$download_dir"
hadoop_install_dir="$HOME/HadoopRuntime"

# 创建Hadoop数据目录结构
hadoop_tmp_dir="$hadoop_install_dir/data/tmp"
hadoop_datanode_dir="$hadoop_install_dir/data/datanode"
hadoop_namenode_dir="$hadoop_install_dir/data/namenode"
mkdir -p "$hadoop_tmp_dir"
mkdir -p "$hadoop_datanode_dir"
mkdir -p "$hadoop_namenode_dir"

# 生成SSH密钥并添加到authorized_keys
echo '========================================='
echo '=                                       ='
echo '=                                       ='
echo '=   Now is Configure the SSH            ='
echo '=                                       ='
echo '=                                       ='
echo '=                       --- YQT         ='
echo '=                                       ='
echo '========================================='

if [ ! -f "$ssh_key_file" ]; then
    mkdir -p "$ssh_key_dir"
    ssh-keygen -t rsa -f "$ssh_key_file" -N ""
    cat "$ssh_key_file.pub" >> "$ssh_key_dir/authorized_keys"
    echo "SSH密钥对已生成并添加到authorized_keys."
else
    echo "SSH密钥对已存在,未执行生成步骤."
fi


# 确保Download目录存在
mkdir -p "$download_dir"

echo '========================================='
echo '=                                       ='
echo '=                                       ='
echo '=   Now is Configure the Java Runtime   ='
echo '=                                       ='
echo '=                                       ='
echo '=                       --- YQT         ='
echo '=                                       ='
echo '========================================='

# 使用wget下载Java文件
wget "$download_url_java" -P "$download_dir" -O "$download_dir/jdk-21_linux-x64_bin.tar.gz"

# 检查Java下载是否成功
if [ $? -eq 0 ]; then
    echo "Java 21下载成功,已保存在$download_dir 目录下."

    # 创建Java安装目录
    mkdir -p "$java_install_dir"

    # 解压Java文件
    tar -xzvf "$download_dir/jdk-21_linux-x64_bin.tar.gz" -C "$java_install_dir"

    # 配置Java环境变量
    echo "export JAVA_HOME=$java_install_dir/jdk-21.0.1" >> "$HOME/.bashrc"
    echo 'export PATH=$JAVA_HOME/bin:$PATH' >> "$HOME/.bashrc"

    # 使配置生效
    source "$HOME/.bashrc"

    echo "Java 21已安装到$java_install_dir 目录,并已配置到~/.bashrc中."
else
    echo "Java 21下载失败."
fi

# 下载和安装Hadoop
# 使用wget下载Hadoop文件
echo '========================================='
echo '=                                       ='
echo '=                                       ='
echo '=   Now is Configure the Hadoop.        ='
echo '=                                       ='
echo '=                                       ='
echo '=                       --- YQT         ='
echo '=                                       ='
echo '========================================='

wget "$hadoop_download_url" -P "$hadoop_download_dir"

# 检查Hadoop下载是否成功
if [ $? -eq 0 ]; then
    echo "Hadoop 3.3.5下载成功,已保存在$download_dir 目录下."

    # 创建Hadoop安装目录
    mkdir -p "$hadoop_install_dir"

    # 解压Hadoop文件
    tar -xzvf "$hadoop_download_dir/hadoop-3.3.5.tar.gz" -C "$hadoop_install_dir" --strip-components=1

    echo "Hadoop 3.3.5已安装到$hadoop_install_dir 目录."

    # 配置core-site.xml
    core_site_file="$hadoop_install_dir/etc/hadoop/core-site.xml"
    cat <<EOL > "$core_site_file"
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>$hadoop_tmp_dir</value>
        <description>A base for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>
EOL

    # 配置hdfs-site.xml
    hdfs_site_file="$hadoop_install_dir/etc/hadoop/hdfs-site.xml"
    cat <<EOL > "$hdfs_site_file"
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:$hadoop_namenode_dir</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:$hadoop_datanode_dir</value>
    </property>
</configuration>
EOL

    echo '========================================='
    echo '=                                       ='
    echo '=                                       ='
    echo '=   Now is Configure namenode and       ='
    echo '=   datanode....                        ='
    echo '=                                       ='
    echo '=                       --- YQT         ='
    echo '=                                       ='
    echo '========================================='
    # 配置hadoop-env.sh
    hadoop_env_file="$hadoop_install_dir/etc/hadoop/hadoop-env.sh"
    echo "export JAVA_HOME=$java_install_dir/jdk-21.0.1" >> "$hadoop_env_file"

    echo "Hadoop配置已完成."
    # 格式化HDFS名称节点
    $hadoop_install_dir/bin/hdfs namenode -format

echo "Hadoop配置已完成,HDFS名称节点已格式化."
else
    echo "Hadoop 3.3.5下载失败."
fi

后续如何寻找安装地址

本脚本安装的

Hadoop 路径为当前用户家目录的 HadoopRuntime

Java 的安装路径为当前用户家目录的 JavaRuntime 下,版本为 Java21,由微软编译版本。路径配置在~/.bashrc中。如有更换版本需求可在~/.bashrc中的 $JAVA_HOME 中更改路径。

补充知识

后续类似 start-dfs.sh等脚本均可以用以下路径代为运行。

对比命令来自 Hadoop3.3.5安装教程_单机/伪分布式配置_厦大数据库实验室博客 (xmu.edu.cn)

# 厦门大学数据库实验室教程里这样输入命令
cd /usr/local/hadoop
./bin/hdfs namenode -format

此脚本安装的 Hadoop 可以这样

# 此脚本这样输入
~/HadoopRuntime/bin/hdfs namenode -format 

这个命令是格式化名称节点,这个流程此脚本已经代为处理,此处只是举例。

再比如:

# 厦门大学数据库实验室教程里这样输入命令
cd /usr/local/hadoop
./sbin/start-dfs.sh  #start-dfs.sh是个完整的可执行文件,中间没有空格

此脚本安装的 Hadoop 可这样启动

# 此脚本这样输入
~/HadoopRuntime/sbin/start-dfs.sh

【补充知识】是为了让不理解文件路径的朋友更友好的使用。

posted @   Y&Qter  阅读(80)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示