保姆级教程:在CentOS 7上从零搭建Hadoop 3.3.3完全分布式集群(含SSH免密登录与防火墙配置)
保姆级教程:在CentOS 7上从零搭建Hadoop 3.3.3完全分布式集群(含SSH免密登录与防火墙配置)
第一次接触Hadoop集群搭建时,面对众多配置文件和网络设置,很容易在某个环节卡住。本文将用最直白的语言,带你一步步完成从系统准备到集群验证的全过程。不同于简单罗列命令的教程,我们会深入每个关键步骤背后的原理,比如为什么需要关闭防火墙、SSH免密登录如何工作等,确保你真正理解每个操作的意义。
1. 环境准备与系统配置
1.1 硬件与软件规划
对于学习环境,建议使用三台配置相同的虚拟机(至少2核CPU/4GB内存/50GB存储)。主节点(master)承担管理职责,两个从节点(worker1、worker2)负责实际计算和存储。以下是版本选择建议:
| 组件 | 推荐版本 | 备注 |
|---|---|---|
| 操作系统 | CentOS 7.9 | 长期支持版本,兼容性最佳 |
| JDK | 1.8.0_382 | Hadoop官方认证的LTS版本 |
| Hadoop | 3.3.3 | 当前稳定版,修复了早期3.x漏洞 |
注意:所有节点需保持时间同步,避免后续出现认证问题。可执行
yum install -y ntp && ntpdate pool.ntp.org同步时间。
1.2 基础环境配置
首先在所有节点执行以下操作:
# 关闭SELinux(重启后生效)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 安装必要工具
yum install -y vim net-tools wget openssh-clients
关键原理:SELinux是Linux的安全模块,会限制Hadoop进程间的通信。生产环境应精细配置策略,但学习环境直接关闭更易排查问题。
2. 网络与SSH配置
2.1 主机名与hosts映射
在master节点编辑/etc/hosts,添加如下内容(IP需替换为实际内网地址):
192.168.1.101 master
192.168.1.102 worker1
192.168.1.103 worker2
使用scp将文件同步到所有worker节点:
scp /etc/hosts root@worker1:/etc/
scp /etc/hosts root@worker2:/etc/
2.2 SSH免密登录详解
-
生成密钥对(所有节点执行):
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa -
合并公钥: 将各节点的
~/.ssh/id_rsa.pub内容追加到master节点的~/.ssh/authorized_keys中,然后分发该文件:scp ~/.ssh/authorized_keys root@worker1:~/.ssh/ scp ~/.ssh/authorized_keys root@worker2:~/.ssh/
工作原理:RSA非对称加密确保通信安全。当NodeManager尝试连接ResourceManager时,会自动使用私钥进行认证,避免每次手动输入密码。
3. Hadoop核心配置
3.1 配置文件详解
解压Hadoop安装包后,需要修改etc/hadoop/下的关键文件:
-
core-site.xml(集群全局设置):
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp</value> </property> </configuration> -
hdfs-site.xml(HDFS专用配置):
<property> <name>dfs.replication</name> <value>2</value> <!-- 与worker节点数匹配 --> </property>
3.2 环境变量设置
在/etc/profile末尾追加(所有节点需同步):
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
执行source /etc/profile立即生效后,运行hadoop version验证输出应类似:
Hadoop 3.3.3
Source code repository https://github.com/apache/hadoop.git
4. 集群启动与验证
4.1 初始化HDFS
仅在master节点执行:
hdfs namenode -format # 首次初始化
start-dfs.sh # 启动HDFS
start-yarn.sh # 启动YARN
使用jps命令检查进程是否正常:
- master应有:NameNode、ResourceManager、SecondaryNameNode
- worker应有:DataNode、NodeManager
4.2 实战测试:WordCount案例
-
创建测试文件并上传:
echo -e "hadoop\nhdfs\nyarn\nmapreduce" > input.txt hdfs dfs -mkdir /input hdfs dfs -put input.txt /input -
运行MapReduce作业:
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar wordcount /input /output -
查看结果:
hdfs dfs -cat /output/part-r-00000预期输出:
hadoop 1 hdfs 1 mapreduce 1 yarn 1
遇到问题时,可先检查日志文件:
- NameNode日志:
$HADOOP_HOME/logs/hadoop-root-namenode-master.log - YARN日志:
$HADOOP_HOME/logs/yarn-root-resourcemanager-master.log
更多推荐

所有评论(0)