集群化环境前置准备(三台机器都进行)

部署

步骤1:配置多台虚拟机

步骤2:准备主机名映射

步骤3:配置ssh免密登录

集群化环境配置

步骤4:安装jdk环境(这里使用的是 JDK8)(只在node1上)

# 1. 创建正确的安装目录
sudo mkdir -p /usr/java

# 2. 进入安装目录
cd /usr/java

# 3. 下载JDK 8(使用国内镜像源,更可靠)
sudo wget https://mirrors.aliyun.com/adoptium/8/jdk/x64/linux/OpenJDK8U-jdk_x64_linux_hotspot_8u382b05.tar.gz

# 4. 解压文件
sudo tar -xzf OpenJDK8U-jdk_x64_linux_hotspot_8u382b05.tar.gz

# 5. 设置环境变量
echo 'export JAVA_HOME=/usr/java/jdk8u382-b05' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> ~/.bashrc
source ~/.bashrc

# 6. 验证安装
java -version
javac -version

这样就是正确安装

步骤5:安装Hadoop(只在node1上)

# 创建Hadoop安装目录
mkdir -p /usr/local/hadoop
cd /usr/local/hadoop

# 下载Hadoop 3.3.6(使用Apache镜像)
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz

# 或者使用国内镜像(如果Apache镜像下载慢)
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
# 解压文件
tar -xzf hadoop-3.3.6.tar.gz

# 重命名目录(可选,但方便后续操作)
mv hadoop-3.3.6 hadoop-3.3.6-installed


# 编辑~/.bashrc文件
echo 'export HADOOP_HOME=/usr/local/hadoop/hadoop-3.3.6-installed' >> ~/.bashrc
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> ~/.bashrc
echo 'export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop' >> ~/.bashrc

# 使环境变量生效
source ~/.bashrc

# 验证Hadoop是否正确安装
hadoop version

确认环境变量已正确加载
echo $HADOOP_HOME

表示正确加载

配置hadoop-env.sh文件,设置JAVA_HOME:
echo 'export JAVA_HOME=/usr/java/jdk8u382-b05' >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh

步骤6:复制node1配置到node2,node3

# 复制JDK到node2和node3
scp -r /usr/java root@node2:/usr/
scp -r /usr/java root@node3:/usr/

# 复制Hadoop到node2和node3
scp -r /usr/local/hadoop root@node2:/usr/local/
scp -r /usr/local/hadoop root@node3:/usr/local/

# 复制环境变量配置
scp ~/.bashrc root@node2:~
scp ~/.bashrc root@node3:~

步骤4:在其他节点上激活环境变量
# 激活环境变量
source ~/.bashrc

# 验证JDK和Hadoop安装
java -version
hadoop version

步骤7:配置Hadoop集群

1. 确保配置文件路径正确


所有配置文件位于Hadoop安装目录的etc/hadoop子目录中:
cd /opt/hadoop/hadoop-3.3.6-installed/etc/hadoop

2. 配置hadoop-env.sh中的JAVA_HOME


vim /usr/local/hadoop/hadoop-3.3.6-installed/etc/hadoop/hadoop-env.sh
找到JAVA_HOME配置行,修改为实际的JDK路径:
# 找到并修改这一行

如果没有这一行或者这一行以及注释,就重新添加这一行
export JAVA_HOME=/usr/java/jdk8u382-b05

结尾添加
# 定义HDFS相关服务的运行用户
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root

# 如果之后启动YARN也遇到类似错误,也需要添加YARN相关的用户定义
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root


3. 配置core-site.xml


# 编辑core-site.xml文件
vim /usr/local/hadoop/hadoop-3.3.6-installed/etc/hadoop/core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node1:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>
</configuration>


4. 配置hdfs-site.xml

编辑文件
vim /usr/local/hadoop/hadoop-3.3.6-installed/etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/hdfs/data</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node1:50090</value>
    </property>
</configuration>


5. 配置mapred-site.xml


# 先检查是否存在mapred-site.xml,如果不存在则复制模板
if [ ! -f /usr/local/hadoop/hadoop-3.3.6-installed/etc/hadoop/mapred-site.xml ]; then
    cp /usr/local/hadoop/hadoop-3.3.6-installed/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/hadoop-3.3.6-installed/etc/hadoop/mapred-site.xml
fi

如果上面不能一行执行就使用下面这个

if [ ! -f /usr/local/hadoop/hadoop-3.3.6-installed/etc/hadoop/mapred-site.xml ]; then cp /usr/local/hadoop/hadoop-3.3.6-installed/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/hadoop-3.3.6-installed/etc/hadoop/mapred-site.xml; fi

# 编辑mapred-site.xml
vim /usr/local/hadoop/hadoop-3.3.6-installed/etc/hadoop/mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>node1:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>node1:19888</value>
    </property>
</configuration>


6. 配置yarn-site.xml

编辑文件
vim /usr/local/hadoop/hadoop-3.3.6-installed/etc/hadoop/yarn-site.xml

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>node1</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>node1:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>node1:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>node1:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>node1:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>node1:8088</value>
    </property>
</configuration>


7. 配置workers文件(Hadoop 3.x版本)


vim /usr/local/hadoop/hadoop-3.3.6-installed/etc/hadoop/workers
删除默认的localhost,添加以下内容:
node1
node2
node3

ps:这里添加三个主机名是为了更好的使用内存,如果是为了工作,项目使用可以只添加从节点的主机名


8. 创建必要的目录


# 在所有节点上创建必要的目录
mkdir -p /usr/local/hadoop/tmp
mkdir -p /usr/local/hadoop/hdfs/name
mkdir -p /usr/local/hadoop/hdfs/data


9. 复制配置到其他节点


# 将配置文件复制到node2和node3
scp -r /usr/local/hadoop/hadoop-3.3.6-installed/etc/hadoop/ root@node2:/usr/local/hadoop/hadoop-3.3.6-installed/etc/
scp -r /usr/local/hadoop/hadoop-3.3.6-installed/etc/hadoop/ root@node3:/usr/local/hadoop/hadoop-3.3.6-installed/etc/


10. 在从节点上创建数据目录


# 在node2上创建数据目录
ssh node2 "mkdir -p /usr/local/hadoop/tmp /usr/local/hadoop/hdfs/data"

# 在node3上创建数据目录
ssh node3 "mkdir -p /usr/local/hadoop/tmp /usr/local/hadoop/hdfs/data"


11. 配置完成后的验证

   1. 先验证配置文件是否正确:
    cat /usr/local/hadoop/hadoop-3.3.6-installed/etc/hadoop/core-site.xml
    2.然后格式化HDFS(仅在node1上执行一次):之后如果要求输入 输入Y
    hdfs namenode -format
    3,启动Hadoop集群:
    start-dfs.sh
    start-yarn.sh
    4,检查集群状态:
    jps

这样就显示配置完成

更多推荐