欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > Linux CentOS 9搭建Hadoop3集群

Linux CentOS 9搭建Hadoop3集群

2025/4/19 3:55:58 来源:https://blog.csdn.net/lutw9801/article/details/144518429  浏览:    关键词:Linux CentOS 9搭建Hadoop3集群

1. 引言

本教程旨在介绍在Linux上安装Hadoop

2. 前提条件

2.1 安装JDK

安装Hadoop,必须首先安装JDK,并配置环境变量(此处不做详细描述)

Jdk官网(https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html)

2.2 修改主机名称

三台服务器分别对应master、slave1、slave2

# 三台服务器分别执行对应的命令修改主机名
hostnamectl set-hostname master
hostnamectl set-hostname slave1
hostnamectl set-hostname slave2

2.3 配置主机名映射

分别修改3台节点的/etc/hosts文件

vi /etc/hosts
# 在文件末端添加以下内容
10.211.55.11	master
10.211.55.12	slave1
10.211.55.13	slave2

2.4 配置ssh环境

注意:开发环境建议关闭防火墙

# 关闭防火墙
systemctl stop firewalld
# 永久关闭
systemctl disable firewalld
# 查看状态
systemctl status firewalld

注意:生产环境端口配置

Hadoop 3.x 中,各个服务的默认端口如下:

HDFS(Hadoop Distributed File System)端口

服务名称默认端口描述
NameNode Web UI9870NameNode 的 Web 界面(监控 HDFS 状态)
NameNode RPC 服务8020NameNode 的 RPC 通信端口,用于客户端通信
SecondaryNameNode Web UI9868SecondaryNameNode 的 Web 界面
DataNode Web UI9864DataNode 的 Web 界面(监控数据节点)
DataNode 数据传输端口9866DataNode 数据块传输端口
DataNode IPC 通信端口9867DataNode 的内部通信端口

YARN(Yet Another Resource Negotiator)端口

服务名称默认端口描述
ResourceManager Web UI8088ResourceManager 的 Web 界面(监控资源)
ResourceManager RPC 服务8032ResourceManager 的 RPC 通信端口
NodeManager Web UI8042NodeManager 的 Web 界面
JobHistory Server Web UI19888用于查看 MapReduce 作业历史的 Web 界面
NodeManager 通信端口45454NodeManager 内部通信端口

MapReduce 端口

服务名称默认端口描述
JobHistory Server Web UI19888MapReduce JobHistory 服务 Web 界面
MapReduce Shuffle 服务13562MapReduce 任务 Shuffle 数据传输端口

Hadoop 通用端口(其他)

服务名称默认端口描述
Zookeeper 默认端口2181如果 Hadoop 集群使用 Zookeeper
HTTP FS 服务端口14000HDFS HTTP 接口服务

常见服务总结

​ 1. HDFS 端口

​ • NameNode Web UI: 9870

​ • DataNode Web UI: 9864

​ 2. YARN 端口

​ • ResourceManager Web UI: 8088

​ • NodeManager Web UI: 8042

​ 3. MapReduce 端口

​ • JobHistory Server: 19888

​ 4. 其他

​ • Zookeeper 默认端口: 2181

说明

​ • 在生产环境中,这些端口可以根据需要进行修改,但修改后需要在配置文件中更新。

​ • 端口是否正常通信可以通过防火墙设置或者网络工具(如 telnet 和 nc)测试。

这样总结起来,Hadoop 3.x 的核心服务端口大致分为 HDFSYARNMapReduce 三部分,方便你进行配置和网络调试。

防火墙相关命令:

# 开放端口示例:
firewall-cmd --zone=public --add-port=9870/tcp --permanent# 重新加载防火墙配置
firewall-cmd --reload# 查看已经开放的端口
firewall-cmd --list-ports

2.5 配置ssh免密登录

后续安装的集群,都需要远程登录以及远程执行命令,我们可以简单起见,配置三台Linux服务器之间的免密码互相SSH登陆。

# 1、在每一台机器执行,一直回车确认即可
ssh-keygen -t rsa
# 2、在每一台机器节点执行一下指令(包括自己)
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
#进行免密操作时会询问是否继续连接,输入“yes”后,再输入登录密码完成操作。# 3、执行完毕后,使用SSH测试远程登录,如果三台机器能相互登录,且无须输入密码,即代表免密配置成功。
ssh master		#远程登录master节点
exit					#退出登录
ssh slaves1		#远程登录slaves1节点
exit					#退出登录
ssh slaves2		#远程登录slaves2节点
exit					#退出登录

在这里插入图片描述

2.6 配置时间同步

注意说明:Centos9时间同步要使用chrony命令,ntpd命令不能使用

  1. 安装chrony命令

    # Centos9里是预安装的,没有安装的话执行以下命令:
    yum install -y chrony
    
  2. 查看chrony状态

    #启用chronyd服务
    systemctl enable chronyd
    #重启chronyd服务
    systemctl restart chronyd
    #查看chronyd服务状态
    systemctl status chronyd
    
  3. 修改master节点配置文件

    vi /etc/chrony.conf
    
    # 修改3个地方# master IP
    pool 10.211.55.11 iburst
    # 允许内网访问(修改为自己的网段)
    allow 10.211.55.0/24
    # 上游时间服务器有10个
    local stratum 10 
    

  4. 保存之后重启

    systemctl restart chronyd
    
  5. 修改所有slave节点配置文件

    vi /etc/chrony.conf
    # 修改时间源为主节点ip
    pool 10.211.55.11 iburst
    

    在这里插入图片描述

  6. 保存之后重启所有从slave节点

    systemctl restart chronyd
    

3.安装与配置Hadoop

3.1 Hadoop下载与安装

  1. 下载Hadoop安装包。打开浏览器,在浏览器地址栏中输入以下地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/

  2. 使用第三方工具别分上传压缩包到三台服务器,并进行解压

    #解压Hadoop压缩包
    tar -zxvf hadoop-3.1.3.tar.gz -C /usr/local/#更改hadoop目录名称
    mv /usr/local/hadoop-3.1.3 /usr/local/hadoop
    
  3. 配置Hadoop环境变量

    vi /etc/profile
    # 文件末尾追加
    export HADOOP_HOME=/usr/local/hadoop
    export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH# 保存退出刷新环境变量
    source /etc/profile
    

3.2 修改Hadoop配置文件

Hadoop的配置文件要修改的地方很多,请细心!!!!进入到/usr/local/hadoop/etc/hadoop文件夹中,配置文件都在这里

cd /usr/local/hadoop/etc/hadoop
  1. 修改hadoop-env.sh

    vi hadoop-env.sh
    # 在文件开头添加以下内容
    export JAVA_HOME=/usr/local/jdk/jdk1.8.0_421export HDFS_NAMENODE_USER=root
    export HDFS_DATANODE_USER=root
    export HDFS_SECONDARYNAMENODE_USER=root
    export YARN_RESOURCEMANAGER_USER=root
    export YARN_NODEMANAGER_USER=root
    export YARN_PROXYSERVER_USER=root
    
  2. 修改core-site.xml文件

    vi core-site.xml
    # 在<configuration>标签之间添加fs.defaultFS属性,具体配置如下:
    
    <configuration><!--指定文件系统的名称--><property><name>fs.defaultFS</name><value>hdfs://master:9000</value></property><!--配置Hadoop运行产生的临时数据存储目录--><property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop/tmp</value>                 <description>Abase for other temporary directories.</description></property>
    </configuration>
    
  3. 修改hdfs-site.xml文件

    vi hdfs-site.xml
    # 具体配置内容如下所示:
    
    <configuration><!-- 2nn web端访问地址--><property><name>dfs.namenode.secondary.http-address</name><value>slave1:9890</value></property><!-- namenode 数据存放地址--><property><name>dfs.namenode.name.dir</name><value>file:///usr/local/hadoop/tmp/hdfs/name</value></property><!--  datanode 数据存放地址--><property><name>dfs.datanode.data.dir</name><value>file:///usr/local/hadoop/tmp/hdfs/data</value></property><!-- 设置副本数量 --><property><name>dfs.replication</name><value>3</value></property>
    </configuration>
    
  4. 修改mapred-site.xml文件

    vi mapred-site.xml
    # 具体配置内容如下所示:
    
    <configuration><!-- 指定MapReduce程序运行在Yarn上 --><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>master:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>master:19888</value></property><property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value></property><property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value></property><property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value></property>
    </configuration>
    
  5. 修改yarn-site.xml文件

    vi yarn-site.xml
    # 具体配置内容如下所示:
    
    <configuration><!-- 指定MR走shuffle --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 指定ResourceManager的地址--><property><name>yarn.resourcemanager.hostname</name><value>master</value></property><!--指定Yarn调度器--><property><name>yarn.resourcemanager.scheduler.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value></property>
    </configuration>
    
  6. 修改workers文件

    vi workers
    # 具体配置内容如下所示:
    # 在workers文件添加以下内容
    master
    slave1
    slave2
    

3.3 分发hadoop文件夹到slaves1与slaves2节点

#在master节点执行
cd /usr/local
#复制hadoop到slave1与slave2(需要输入slave1、slave2的主机密码)
scp -r hadoop slave1:/usr/local/
scp -r hadoop slave2:/usr/local/
#复制/etc/profile文件到slave1与slave2
scp /etc/profile slave1:/etc/profile
scp /etc/profile slave2:/etc/profile

3.4 格式化NameNode

# 在master节点上运行以下命令,完成格式化
hdfs namenode -format

当出现【succesfully formatted】的时候,代表格式化成功。

在这里插入图片描述

4.启动Hadoop集群

# 在master节点执行即可
start-all.sh

在这里插入图片描述

5.使用jps指令查看进程

  1. master:在master节点运行着 NameNode、DataNode、NodeManager、ResouceManager 4个进程。

    在这里插入图片描述

  2. slave1:在slave1节点运行着 SecondaryNameNode、DataNode、NodeManager3个进程。

    在这里插入图片描述

  3. slave2:在slave2节点运行着 NodeManger、DataNode2个进程。
    在这里插入图片描述

6.访问集群UI页面

6.1 NameNode集群页面

# NameNode 的 Web 界面(监控 HDFS 状态)
http://10.211.55.11:9870

在这里插入图片描述

6.2 Yarn集群页面

# NameNode 的 Web 界面(监控 HDFS 状态)
http://10.211.55.11:8088

image-20241216183341349-4345224

6.3 MapReduce历史任务页面

如过访问不到,手动启动JobHistoryServer

# 启动命令
mapred --daemon start historyserver
# NameNode 的 Web 界面(监控 HDFS 状态)
http://10.211.55.11:8088

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

6.4 确认 MapReduce 作业能否正常运行

示例:运行一个简单的 MapReduce 作业

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi 10 100

• 作用:该命令会运行一个 π 计算 示例程序,检查 MapReduce 是否能正常提交任务。
• 输出:如果任务正常完成,会输出类似如下的结果:

Estimated value of Pi is 3.14800000000000000000

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词