超详细 Hadoop 集群搭建指南:从环境准备到成功启动

超详细 Hadoop 集群搭建指南:从环境准备到成功启动

作为大数据生态体系的核心框架,Hadoop 的分布式集群部署是入门大数据技术的关键一步。本文将以Hadoop 3.3.4 版本为例,带大家从零开始搭建一个 3 节点(1 主 2 从)的 Hadoop 集群,全程附带关键配置代码和避坑要点,确保新手也能顺利完成搭建。

一、环境准备:打好集群基础

在正式搭建前,需先完成硬件规划、操作系统配置和软件依赖安装,这是集群稳定运行的前提。

1.1 集群节点规划

本次搭建采用 “1 主 2 从” 架构,节点角色分配如下(可根据实际服务器数量调整):

节点 IP

主机名

角色

硬件建议(最低配置)

192.168.1.10

hadoop01

NameNode、ResourceManager

2 核 4G 内存、50G 硬盘

192.168.1.11

hadoop02

DataNode、NodeManager

2 核 2G 内存、50G 硬盘

192.168.1.12

hadoop03

DataNode、NodeManager

2 核 2G 内存、50G 硬盘

注意:所有节点需处于同一局域网,且关闭防火墙(避免端口拦截)。

1.2 操作系统配置(所有节点执行)

本文使用CentOS 7系统,以下操作需以root用户或sudo权限执行:

(1)关闭防火墙与 SELinux

Hadoop 集群各节点间需通过多个端口通信,关闭防火墙可避免配置复杂的端口规则:

1

2

3

4

5

6

7

8

9

10

11

# 关闭防火墙(临时+永久)

systemctl stop firewalld

systemctl disable firewalld

# 关闭SELinux(临时+永久)

setenforce 0

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

(2)配置主机名与 IP 映射

设置主机名(每个节点执行对应命令):

1

2

3

4

5

6

7

8

9

10

11

# hadoop01节点

hostnamectl set-hostname hadoop01

# hadoop02节点

hostnamectl set-hostname hadoop02

# hadoop03节点

hostnamectl set-hostname hadoop03

配置 IP 映射(所有节点执行,将 IP 替换为你的实际节点 IP):

1

2

3

4

5

echo "192.168.1.10 hadoop01" >> /etc/hosts

echo "192.168.1.11 hadoop02" >> /etc/hosts

echo "192.168.1.12 hadoop03" >> /etc/hosts

(3)安装 Java 环境

Hadoop 依赖 Java(需 JDK 8 及以上版本),推荐使用 OpenJDK:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

# 安装OpenJDK 8

yum install -y java-1.8.0-openjdk-devel

# 验证安装(出现版本信息则成功)

java -version

javac -version

# 配置JAVA_HOME环境变量(所有节点执行)

echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk" >> /etc/profile

echo "export PATH=$PATH:$JAVA_HOME/bin" >> /etc/profile

source /etc/profile # 生效配置

1.3 配置 SSH 免密登录(主节点→从节点)

Hadoop 主节点(hadoop01)需通过 SSH 免密登录到所有从节点,避免启动集群时输入密码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

# 在hadoop01节点生成SSH密钥(一路回车,不设置密码)

ssh-keygen -t rsa

# 将公钥分发到所有节点(包括自身)

ssh-copy-id hadoop01

ssh-copy-id hadoop02

ssh-copy-id hadoop03

# 验证免密登录(无密码提示则成功)

ssh hadoop02

二、Hadoop 安装与核心配置

2.1 下载并解压 Hadoop(主节点执行)

从 Apache 官网下载 Hadoop 安装包,推荐使用稳定版 3.3.4:

1

2

3

4

5

6

7

8

9

10

11

# 下载Hadoop(也可手动下载后上传)

wget https://archive.apache.org/dist/hadoop/core/hadoop-3.3.4/hadoop-3.3.4.tar.gz

# 解压到/usr/local目录

tar -zxvf hadoop-3.3.4.tar.gz -C /usr/local/

# 重命名为hadoop(方便后续操作)

mv /usr/local/hadoop-3.3.4 /usr/local/hadoop

2.2 配置 Hadoop 环境变量(所有节点执行)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

# 编辑profile文件

vim /etc/profile

# 添加以下内容(末尾添加)

export HADOOP_HOME=/usr/local/hadoop

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

# 生效配置

source /etc/profile

# 验证(出现版本信息则成功)

hadoop version

2.3 修改 Hadoop 核心配置文件(主节点执行)

Hadoop 配置文件位于$HADOOP_HOME/etc/hadoop/目录,需修改以下 5 个关键文件:

(1)hadoop-env.sh(指定 Java 路径)

1

2

3

4

5

vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh

# 添加Java环境变量(替换为你的JAVA_HOME路径)

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk

(2)core-site.xml(核心配置:指定 NameNode 地址)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

vim $HADOOP_HOME/etc/hadoop/core-site.xml

# 在标签内添加:

fs.defaultFS

hdfs://hadoop01:9000

hadoop.tmp.dir

/usr/local/hadoop/tmp

(3)hdfs-site.xml(HDFS 配置:副本数、NameNode/DataNode 存储路径)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml

# 在标签内添加:

dfs.replication

2

dfs.namenode.name.dir

/usr/local/hadoop/dfs/name

dfs.datanode.data.dir

/usr/local/hadoop/dfs/data

dfs.permissions.enabled

false

(4)mapred-site.xml(MapReduce 配置:指定 YARN 为资源管理器)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

vim $HADOOP_HOME/etc/hadoop/mapred-site.xml

# 在标签内添加:

mapreduce.framework.name

yarn

mapreduce.application.classpath

$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*

(5)yarn-site.xml(YARN 配置:指定 ResourceManager 地址、节点管理器环境)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

vim $HADOOP_HOME/etc/hadoop/yarn-site.xml

# 在标签内添加:

yarn.resourcemanager.hostname

hadoop01

yarn.nodemanager.aux-services

mapreduce_shuffle

yarn.nodemanager.vmem-check-enabled

false

2.4 指定从节点(主节点执行)

编辑workers文件(Hadoop 3.x 用workers,2.x 用slaves),列出所有从节点主机名:

1

2

3

4

5

6

7

vim $HADOOP_HOME/etc/hadoop/workers

# 删除原有内容,添加以下两行(从节点主机名):

hadoop02

hadoop03

2.5 同步配置到所有从节点(主节点执行)

将主节点配置好的 Hadoop 目录同步到所有从节点,避免重复配置:

1

2

3

4

5

6

7

8

9

10

11

12

13

# 同步到hadoop02

scp -r /usr/local/hadoop hadoop02:/usr/local/

# 同步到hadoop03

scp -r /usr/local/hadoop hadoop03:/usr/local/

# 同步环境变量配置(所有从节点执行source生效)

scp /etc/profile hadoop02:/etc/

scp /etc/profile hadoop03:/etc/

2.6 创建 Hadoop 数据目录(所有节点执行)

根据hdfs-site.xml中配置的路径,创建对应的目录:

1

2

3

4

5

6

7

8

9

mkdir -p /usr/local/hadoop/tmp

mkdir -p /usr/local/hadoop/dfs/name

mkdir -p /usr/local/hadoop/dfs/data

# 设置目录权限(避免权限不足)

chown -R $USER:$USER /usr/local/hadoop/

三、格式化 HDFS 与启动集群

3.1 格式化 NameNode(仅主节点执行)

注意:仅首次搭建时执行一次,重复执行会清空 HDFS 数据!

1

hdfs namenode -format

执行成功后,会显示successfully formatted字样,同时在/usr/local/hadoop/dfs/name目录下生成初始化数据。

3.2 启动 Hadoop 集群(主节点执行)

Hadoop 提供两种启动方式:分步启动(便于排查问题)和一键启动(高效)。

(1)分步启动(推荐新手)

1

2

3

4

5

6

7

8

9

10

11

# 启动HDFS(NameNode、DataNode)

hdfs --daemon start namenode

hdfs --daemon start datanode

# 启动YARN(ResourceManager、NodeManager)

yarn --daemon start resourcemanager

yarn --daemon start nodemanager

(2)一键启动(配置好 workers 后可用)

1

2

3

4

5

6

7

8

9

# 启动所有HDFS和YARN进程

start-dfs.sh

start-yarn.sh

# 或直接启动所有进程(包括HistoryServer)

start-all.sh

3.3 验证集群状态

(1)查看进程(主节点执行)

1

jps

主节点应显示以下进程:

NameNode

ResourceManager

SecondaryNameNode(HDFS 辅助节点)

Jps

从节点(hadoop02、hadoop03)应显示:

DataNode

NodeManager

Jps

(2)Web UI 验证

Hadoop 提供 Web 界面查看集群状态,需确保浏览器能访问节点 IP:

HDFS 状态:访问 http://hadoop01:9870(Hadoop 3.x 端口为 9870,2.x 为 50070),在「Datanodes」页面可看到 2 个从节点在线。

YARN 状态:访问 http://hadoop01:8088,在「Nodes」页面可看到 2 个 NodeManager 节点。

(3)执行 HDFS 命令验证

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

# 创建测试目录

hdfs dfs -mkdir /test

# 上传本地文件到HDFS

echo "hello hadoop" > test.txt

hdfs dfs -put test.txt /test/

# 查看HDFS文件

hdfs dfs -ls /test/

hdfs dfs -cat /test/test.txt

若能正常执行上述命令,说明 HDFS 功能正常。

四、常见问题与避坑指南

启动 DataNode 失败?

原因:重复格式化 NameNode 导致 DataNode 的 clusterID 与 NameNode 不匹配。

解决:删除所有节点的/usr/local/hadoop/dfs/data目录,重新格式化 NameNode(仅一次)。

Web UI 无法访问?

原因:防火墙未关闭、IP 映射配置错误或端口被占用。

解决:重新执行防火墙关闭命令,检查/etc/hosts配置,用netstat -tunlp | grep 9870查看端口是否被占用。

YARN 启动后 NodeManager 不在线?

原因:yarn-site.xml配置错误或内存不足。

解决:检查yarn.resourcemanager.hostname是否为 hadoop01,添加yarn.nodemanager.vmem-check-enabled=false关闭内存检查。

五、总结

本文详细讲解了 3 节点 Hadoop 集群的搭建流程,核心步骤可概括为:环境准备→配置免密→Hadoop 配置→同步节点→格式化启动→验证状态。对于新手而言,重点关注 IP 映射、SSH 免密、配置文件路径和权限这几个环节,即可避免大部分问题。

后续可进一步学习 Hadoop 的分布式计算(MapReduce)、YARN 资源调度等功能,或搭建 HBase、Spark 等生态组件,逐步深入大数据技术领域。

(注:文档部分内容由 AI 生成)

[an error occurred while processing the directive]
Copyright © 2088 迷你世界杯_竞猜世界杯 - xhfzmy.com All Rights Reserved.
友情链接