Linux中安装部署Hadoop集群的保姆级安装配置教程

一、内容准备

1.1、Hadoop集群规划

|------------------|----------|--------------|--------------------------|
| 采用一共3台物理机或虚拟机,都使用(RHEL9/Almalinux9.1)及其更高版本的Linux系统 ||||
| 节点类型 | 主机名 | IP地址 | 角色类型 |
| 主节点 (namenode) | hadoop01 | 192.168.1.9 | NameNode、ResourceManager |
| 从节点1 (datanode1) | hadoop02 | 192.168.1.37 | DataNode、NodeManager |
| 从节点2 (datanode2) | hadoop03 | 192.168.1.39 | DataNode、NodeManager |
[hadoop集群的规划配置]

1.2、修改系统的主机名称

bash 复制代码
#按照规划修改主机名称

#一、修改主节点的主机名称
#1.1-将192.168.1.9主机的名称修改为hadoop01
hostnamectl set-hostname hadoop01

#1.2-修改hosts配置
cp -p /etc/hosts /etc/hosts.bak
vi /etc/hosts
#etc/hosts文件的完整内容如下:
#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1    localhost
::1          localhost
192.168.1.9  namenode hadoop01
192.168.1.37 hadoop02
192.168.1.39 hadoop03

#1.3-让修改的主机名称生效
systemctl restart systemd-hostnamed
exec bash


#二、修改从节点1的主机名称
#2.1-将192.168.1.37主机的名称修改为hadoop02
hostnamectl set-hostname hadoop02

#2.2-修改hosts配置
cp -p /etc/hosts /etc/hosts.bak
vi /etc/hosts
#etc/hosts文件的完整内容如下:
#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1    localhost
::1          localhost
192.168.1.9  namenode hadoop01
192.168.1.37 hadoop02
192.168.1.39 hadoop03

#2.3-让修改的主机名称生效
systemctl restart systemd-hostnamed
exec bash


#三、修改从节点2的主机名称
#3.1-将192.168.1.39主机的名称修改为hadoop03
hostnamectl set-hostname hadoop03

#3.2-修改hosts配置
cp -p /etc/hosts /etc/hosts.bak
vi /etc/hosts
#etc/hosts文件的完整内容如下:
#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1    localhost
::1          localhost
192.168.1.9  namenode hadoop01
192.168.1.37 hadoop02
192.168.1.39 hadoop03

#3.3-让修改的主机名称生效
systemctl restart systemd-hostnamed
exec bash

1.3、配置免密登录

bash 复制代码
#配置免密登录实操流程

#0-先在3台服务器系统中创建hd用户并设置密码(注意:若有除了root的用户外的其他用户就不用创建)
useradd hd
passwd hd

#1-在主节点(192.168.1.9)上切换到指定用户(如:hd)生成SSH密钥
su - hd
ssh-keygen -t ed25519
##2-进入密钥对生成的路径【/root/.ssh】并查看该路径下的所有文件,其中【id_ed25519】是私钥文件;【id_ed25519.pub】是公钥文件
cd ~/.ssh
ll -a


#2-将主节点(192.168.1.9)上的公钥添加到需ssh免密登录的远程服务器上(hadoop02【192.168.1.37】、hadoop03【192.168.1.39】)
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 22 hd@hadoop02
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 22 hd@hadoop03
#注意:本机也需要使用该公钥免密登录(操作如下)
cp -p ~/.ssh/id_ed25519.pub authorized_keys
chmod 600 authorized_keys


#3-测试在当前服务器使用ssh免密登录到远程服务器是否成功(不用输入密码就能直接登录上就表示成功)
ssh hd@hadoop01
hostname
whoami
exit

ssh hd@hadoop02
hostname
whoami
exit

##若远程服务器的端口不是默认的22端口则需要指定端口【ssh -p 免密登录服务器的端口号 用户名称@免密登录服务器的IP】(如:可以使用ck用户免密登录远程服务器192.168.1.41且该服务器的ssh端口是22222)
ssh -p 22222 ck@192.168.1.41

实现Linux的ssh免密登录实操保姆级教程_linux免密登录https://coffeemilk.blog.csdn.net/article/details/152375722

1.4、防火墙配置

为了方便我们对hadoop集群的正常配置通信,我们这里可以先临时关闭防火墙。

bash 复制代码
#禁用防火墙,方便hadoop集群能够正常通信
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

1.5、ssh配置

修改Linux上的ssh的默认端口号------及其客户端使用ssh连接不上Linux问题排查解决_linux ssh连接端口https://blog.csdn.net/xiaochenXIHUA/article/details/152115750

二、安装Hadoop

由于hadoop是需要在java环境中运行,因此我们需要先安装java环境后再安装hadoop.

2.1、安装java环境_openjdk、openjre

由于在 HADOOP-18197 中,Hadoop将 hadoop-thirdparty 中的 Protobuf 升级到版本 3.21.12。此版本可能与某些版本的 JDK8 存在兼容性问题,可能会遇到一些错误;且Hadoop将在 3.4.x 的未来版本中停止对 JDK8 的支持,因此建议将生产环境中的Java Jdk 版本升级到更高版本(> JDK8)。因此我们这里直接安装openjdk21和openjre21。

bash 复制代码
#安装java的Jdk、jre环境有两种方法
 
#方法一:直接在线安装java的JDK包(如:我这里安装java-11-openjdk-devel)
#注意:可以先检查当前Linux是否支持指定版本的jdk环境(如没有jdk17则无法使用yum安装,需手动安装)
yum list | grep jdk
yum install java-17-openjdk-devel -y

 
 
#方法二:直接手动安装配置指定版本java的jdk和jre
#手动安装openjdk21实操流程(其余版本的Jdk安装方法也一样)
#1-检查Linux支持的jdk环境(若没有jdk21则无法使用yum安装,需手动安装)
yum list | grep jdk
 
#2-下载openjdk21的压缩包【注意:这个openjdk的下载链接需要自己到红帽官网获取,我这里提供的会失效】
wget https://access.cdn.redhat.com/content/origin/files/sha256/1a/1ae9385bde47c7928dc9b328eee8771e5f3ab94f425d19940fe7b105ac882bce/java-21-openjdk-21.0.9.0.10-1.portable.jdk.x86_64.tar.xz?_auth_=1761740868_99dc162417e4a3dd4e27ea8b7bc669e9 -c 0 -P /data
 
#3-解压openjdk21并修改名称
cd /data/
tar -xvf 'java-21-openjdk-21.0.9.0.10-1.portable.jdk.x86_64.tar.xz?_auth_=1761740868_99dc162417e4a3dd4e27ea8b7bc669e9'
mv java-21-openjdk-21.0.9.0.10-1.portable.jdk.x86_64 openjdk2109010
 
#4-编辑环境配置文件并添加openjdk21的环境变量
vi /etc/profile
#openjdk21 enviroment
export JAVA_HOME=/data/openjdk2109010
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
 
#5-让修改的环境变量生效
source /etc/profile
 
#6-查看java版本信息
echo $JAVA_HOME
echo $PATH
java -version
 
 
 
#7-安装openjdk21对应的jre
#7.1-下载openjdk21对应的jre二进制压缩包
wget https://access.cdn.redhat.com/content/origin/files/sha256/7e/7e3a9fccc57747b82be044096d7a10ebfd6ef6333e3fe351bcfb4dd8a44abbcc/java-21-openjdk-21.0.9.0.10-1.portable.jre.x86_64.tar.xz?_auth_=1761741095_3bd83086c5c03e98940d93d72265bed6 -c o -P /data
 
#7.2-进入/data目录并解压下载好的jre21包
cd /data
tar -xvf 'java-21-openjdk-21.0.9.0.10-1.portable.jre.x86_64.tar.xz?_auth_=1761741095_3bd83086c5c03e98940d93d72265bed6'
 
#7.3-将解压好的jre17复制一份到openjdk21目录中并修改名字为jre
cp -r java-21-openjdk-21.0.9.0.10-1.portable.jre.x86_64 openjdk2109010/
cd openjdk2109010/
mv java-21-openjdk-21.0.9.0.10-1.portable.jre.x86_64 jre
 
#7.4-查看jre的路径信息
echo $JRE_HOME

这是红帽官网提供的OpenJDK下载网址,在这里可以查找到对应的java jdk包下载(注意:这些OpenJDK包的下载需要用账号登录红帽官网后才能下载):如下图所示:

2.2、安装Hadoop3.4.2

bash 复制代码
#下载安装部署Hadoop3.4.2实操流程

#1-下载最新的稳定版本Hadoop3.4.2
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.4.2/hadoop-3.4.2.tar.gz -c o -P /data

#2-进入/data目录并解压下载好的Hadoop
cd /data
tar -zxvf hadoop-3.4.2.tar.gz

#3-配置全局变量实现在任意位置都可以执行hadoop
vi /etc/profile
#Hadoop enviroment
export HADOOP_HOME=/data/hadoop-3.4.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

#4-让修改的环境变量生效
source /etc/profile

2.3、Hadoop集群配置

2.3.1、配置【hadoop-env.sh

bash 复制代码
#配置Hadoop的配置文件【hadoop-env.sh】的【JAVA_HOME】实操流程

#1-进入Hadoop的配置文件路径【如:/data/hadoop-3.4.2/etc/hadoop】
cd /data/hadoop-3.4.2/etc/hadoop

#2-给【hadoop-env.sh】配置JAVA_HOME
vi hadoop-env.sh
export JAVA_HOME=/data/openjdk2109010

#注意:如果当前系统的ssh端口号不是默认的22端口,则需要添加对应的ssh端口号配置(如:我在Hadoop主机上配置了ssh的端口是22222)
export HADOOP_SSH_OPTS="-p 22222"

2.3.2、配置【core-site.xml】

bash 复制代码
#配置Hadoop的配置文件【core-site.xml】的实操流程

#1-进入Hadoop的配置文件路径【如:/data/hadoop-3.4.2/etc/hadoop】
cd /data/hadoop-3.4.2/etc/hadoop

#2-给【core-site.xml】编辑内容
vi core-site.xml
#core-site.xml文件里面添加的内容
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://namenode:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/data/hadoop-3.4.2/data/hadoop/tmp</value>
    </property>
</configuration>

2.3.3、配置【hdfs-site.xml】

bash 复制代码
#配置Hadoop的配置文件【hdfs-site.xml】的实操流程

#1-进入Hadoop的配置文件路径【如:/data/hadoop-3.4.2/etc/hadoop】
cd /data/hadoop-3.4.2/etc/hadoop

#2-给【hdfs-site.xml】编辑内容
vi hdfs-site.xml
#hdfs-site.xml文件里面添加的内容
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/data/hadoop-3.4.2/data/hadoop/hdfs/namenode</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/data/hadoop-3.4.2/data/hadoop/hdfs/datanode</value>
    </property>
</configuration>

2.3.4、配置【yarn-site.xml】

bash 复制代码
​
#配置Hadoop的配置文件【yarn-site.xml】的实操流程

#1-进入Hadoop的配置文件路径【如:/data/hadoop-3.4.2/etc/hadoop】
cd /data/hadoop-3.4.2/etc/hadoop

#2-给【yarn-site.xml】编辑内容
vi yarn-site.xml
#yarn-site.xml文件里面添加的内容
<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>namenode</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

2.3.5、配置【workers】

bash 复制代码
​
#配置Hadoop的配置文件【workers】的实操流程

#1-进入Hadoop的配置文件路径【如:/data/hadoop-3.4.2/etc/hadoop】
cd /data/hadoop-3.4.2/etc/hadoop

#2-给【workers】配置从节点名称
vi workers
#workers添加的内容
hadoop02
hadoop03

2.4、其他从节点Hadoop配置

将当前主节点配置好的Hadoop文件夹分发到所有从节点:

bash 复制代码
#1-将/data/hadoop-3.4.2文件夹的属主、属组权限都修改为hd用户;且压缩一份配置好的hadoop
chown -R hd:hd /data/hadoop-3.4.2
tar -Jcvf hadoop-3.4.2.tar.xz hadoop-3.4.2

#2-将当前主节点配置好的Hadoop文件夹分发到所有从节点:
cd /data
scp -P 22 hadoop-3.4.2.tar.xz root@hadoop02:/data
scp -P 22 hadoop-3.4.2.tar.xz root@hadoop03:/data

#3-分别进入到各个从节点配置Hadoop全局可用(所有从节点都需要执行)
#3.1-进入/data目录并解压下载好的Hadoop
cd /data
tar -xvf hadoop-3.4.2.tar.xz

#3.2-配置全局变量实现在任意位置都可以执行hadoop
vi /etc/profile
#Hadoop enviroment
export HADOOP_HOME=/data/hadoop-3.4.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

#3.3-让修改的环境变量生效
source /etc/profile
chown -R hd:hd /data/hadoop-3.4.2

2.5、其他从节点系统环境配置

bash 复制代码
#Hadoop其他从节点的环境配置

#1-现在Hadoop主节点将安装好的jdk21、jre21打包,并分别发送到其他从节点
tar -Jcvf openjdk2109010.tar.xz openjdk2109010
scp -P 22 openjdk2109010.tar.xz root@hadoop02:/data
scp -P 22 openjdk2109010.tar.xz root@hadoop03:/data

#2-在从节点解压jdk21、jre21压缩包及其配置系统环境全局可用(每个从节点都需要执行)
cd /data
tar -xvf openjdk2109010.tar.xz
#2.1-配置从节点的jdk21、jre21系统环境全局可用
vi /etc/profile
#openjdk21 enviroment
export JAVA_HOME=/data/openjdk2109010
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
 
#2.2-让修改的环境变量生效
source /etc/profile
 
#2.3-查看java版本信息
echo $JAVA_HOME
echo $PATH
java -version

2.6、启动Hadoop集群

在正式启动Hadoop集群前,需要检查一下所有Hadoop服务器的ssh端口都修改为22222。

bash 复制代码
#检查ssh的端口是否为【22222】(若不是则需要设置)

#1-先备份ssh的配置文件
cd /etc/ssh/
cp -p sshd_config sshd_config.bak

#2-修改ssh的配置文件【/etc/ssh/sshd_config】里面的【Port】值为【22222】且取消注释并保存退出
vi /etc/ssh/sshd_config
Port 22222

#3-(若防火墙是开启中)则需要先将防火墙的22222端口放开
firewall-cmd --list-port
firewall-cmd --zone=public --add-port=22222/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-port

#3-重启sshd服务(若此时重启sshd服务失败,则可以先临时禁用selinux【setenforce 0】)
systemctl restart sshd.service
bash 复制代码
#启动HDFS集群实操流程(注意:在启动Hadoop集群前需要确保其他节点的Hadoop也都安装配置好了)

#0-先切换到hd用户
su - hd

#1-在主节点(hadoop01【192.168.1.9】)上格式HDFS
hdfs namenode -format

#2-启动 HDFS 和 YARN
start-dfs.sh
start-yarn.sh

#3-查看所有网络情况
netstat -antlp | grep java

#3-在浏览器访问(主节点namenode的IP地址查看命令是【ip a】):
HDFS Web UI:http://<namenode IP>:9870
YARN Web UI:http://<namenode IP>:8088

2.7、Hadoop集群管理

|--------|-------------------|-------------------------------------------------------------------------------------|
| 序号 | Hadoop集群管理操作 | 说明 |
| 1 | #### 添加新的数据节点 | 只需将主节点上的 Hadoop 安装包分发到新节点,并在主节点Hadoop配置文件【workers 】中添加新节点的主机名,然后重启 HDFS 即可。 |
| 2 | #### 高可用配置 | 通过设置多个 NameNode 和 JournalNode,可以在一个 NameNode 失败时自动切换到另一个 NameNode。 |
| 3 | #### 监控和管理 | 《1》使用 Hadoop 自带的 Web UI 监控集群状态。 《2》查看日志文件以排查问题,日志文件位于【/data/hadoop-3.3.4/logs 】目录下。 |
[Hadoop集群管理]

三、Hadoop的常见问题和解决方法

3.1、Hadoop的常见问题和解决方法

|--------|--------------------|-----------------------------------------------------------------------------------------------------------|
| 序号 | Hadoop的常见问题 | Hadoop的常见问题解决方法 |
| 1 | #### namenode未成功启动 | 需要确保Hadoop的主节点的主机名称与hosts文件里面都配置为【namenode】 |
| 2 | #### DataNode未成功启动 | 《1》需要确保Hadoop的配置文件【hdfs-site.xml】里配置的【 dfs.datanode.data.dir 】参数指定的目录存在且有权限; 《2》需要确保从节点可以访问到主节点的【9000】端口。 |
| 3 | #### 网络问题 | 需要确保所有节点的网络配置正确,且都可以通过ping相互测试畅通。 |
| 4 | #### 权限问题 | 需要确保 Hadoop 安装目录和数据目录的权限配置正确 (可以使用如【chown -R hd:hd /data/hadoop-3.4.2】命令调整) |
[Hadoop的常见问题和解决方法]

3.2、Hadoop官网资料

Hadoop -- Apache Hadoop 3.4.2https://hadoop.apache.org/docs/stable/Apache Hadoop 3.4.2 -- Hadoop:设置单节点集群。https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html

相关推荐
dessler20 小时前
MYSQL-数据库介绍
linux·运维·mysql
Garc20 小时前
linux Debian 12 安装 Docker(手动)
linux·docker·debian
kaoa00020 小时前
Linux入门攻坚——52、drbd - Distribute Replicated Block Device,分布式复制块设备-1
linux·运维·服务器
Kay_Liang20 小时前
【Hive 踩坑实录】从元数据库初始化到 HiveServer2 启动的全流程问题解决
大数据·linux·hive·hadoop·笔记·mysql·ubuntu
NiKo_W21 小时前
Linux Socket网络编程基础
linux·服务器·网络
啊略略wxx21 小时前
嵌入式Linux面试题目
linux·运维·服务器
半桔21 小时前
【IO多路转接】深入解析 poll:从接口到服务器实现
linux·运维·服务器·php
Dovis(誓平步青云)21 小时前
《静态库与动态库:从编译原理到实战调用,一篇文章讲透》
linux·运维·开发语言
IT学长编程21 小时前
计算机毕业设计 基于Python的电商用户行为分析系统 Django 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
大数据·hadoop·python·django·毕业设计·课程设计·电商用户行为分析系统