Hadoop集群安装与配置指南(CentOS 7)
一、虚拟机准备
-
安装虚拟机软件
-
下载VMware或VirtualBox,完成安装并激活。
-
注意:选择NAT模式,配置子网IP(如
192.168.10.0
)。
-
-
CentOS 7安装
-
下载CentOS 7镜像,安装时选择最小化安装(Minimal Install)。
-
配置语言、时区(建议上海),分配磁盘空间(建议20GB+)。
-
二、网络配置
-
虚拟机网络设置
-
打开 虚拟网络编辑器 → 选择NAT模式 → 修改子网IP为
192.168.10.0
。 -
设置网关为
192.168.10.2
。
-
-
物理机DNS配置
-
打开物理机的网络适配器 → IPv4属性 → 设置DNS为
192.168.10.2
。
-
-
虚拟机静态IP配置
vim /etc/sysconfig/network-scripts/ifcfg-ens33
- 修改以下内容:
BOOTPROTO=static ONBOOT=yes IPADDR=192.168.10.100 # 主节点IP GATEWAY=192.168.10.2 DNS1=192.168.10.2
-
重启网络:
systemctl restart network
- 修改以下内容:
-
主机名与Hosts映射
vim /etc/hostname # 修改为 hadoop100 vim /etc/hosts # 添加所有节点IP映射
- 内容示例:
192.168.10.100 hadoop100 192.168.10.101 hadoop101 ...(其他节点)
-
生效配置:
reboot
或hostnamectl set-hostname hadoop100
- 内容示例:
三、工具连接与克隆
-
Xshell/Xftp配置
-
物理机修改
C:\Windows\System32\drivers\etc\hosts
,添加节点映射。
-
-
克隆虚拟机
-
克隆后需修改每台主机的
hostname
和IPADDR
(如hadoop101→192.168.10.101)。
-
四、环境准备
-
关闭防火墙
systemctl stop firewalld systemctl disable firewalld
-
创建用户并授权
useradd xiaohong passwd xiaohong visudo # 添加 xiaohong ALL=(ALL) NOPASSWD:ALL
-
卸载旧JDK
rpm -qa | grep java | xargs -n1 rpm -e --nodeps
-
安装JDK & Hadoop
- 创建目录:
sudo mkdir /opt/{software,module} sudo chown -R xiaohong /opt/*
- 解压JDK和Hadoop到
/opt/module
:tar -zxvf jdk-8u381-linux-x64.tar.gz -C /opt/module/ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
- 创建目录:
-
环境变量配置
sudo vim /etc/profile.d/my_env.sh
- 添加内容:
export JAVA_HOME=/opt/module/jdk1.8.0_381 export HADOOP_HOME=/opt/module/hadoop-3.1.3 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
-
生效配置:
source /etc/profile
- 添加内容:
五、集群配置
-
配置文件修改
- core-site.xml(NameNode地址):
<property> <name>fs.defaultFS</name> <value>hdfs://hadoop101:8020</value> </property>
- hdfs-site.xml(SecondaryNameNode地址):
<property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop103:9868</value> </property>
- yarn-site.xml(ResourceManager地址):
<property> <name>yarn.resourcemanager.hostname</name> <value>hadoop102</value> </property>
- mapred-site.xml(MapReduce运行模式):
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
- core-site.xml(NameNode地址):
-
分发配置到集群
- 使用
xsync
脚本同步配置:xsync /opt/module/hadoop-3.1.3/etc/hadoop/
- 使用
-
SSH免密登录
- 生成密钥并分发:
ssh-keygen -t rsa ssh-copy-id hadoop101 # 所有节点执行
- 生成密钥并分发:
六、集群启动与测试
-
首次启动
- 格式化HDFS(仅在hadoop101执行一次):
hdfs namenode -format
- 启动HDFS和YARN:
start-dfs.sh # 在hadoop101执行 start-yarn.sh # 在hadoop102执行
- 格式化HDFS(仅在hadoop101执行一次):
-
验证服务
- 检查进程:
jps
-
hadoop101: NameNode, DataNode
-
hadoop102: ResourceManager, NodeManager
-
hadoop103: SecondaryNameNode, DataNode
-
- Web访问:
-
HDFS:
http://hadoop101:9870
-
YARN:
http://hadoop102:8088
-
- 检查进程:
-
测试WordCount
hadoop fs -mkdir /input hadoop fs -put $HADOOP_HOME/README.txt /input hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
七、集群管理脚本
-
集群启停脚本 (
myhadoop.sh
)#!/bin/bash case $1 in "start") ssh hadoop101 "start-dfs.sh" ssh hadoop102 "start-yarn.sh" ;; "stop") ssh hadoop101 "stop-dfs.sh" ssh hadoop102 "stop-yarn.sh" ;; esac
-
进程查看脚本 (
jpsall
)#!/bin/bash for host in hadoop{101..103}; do echo "======== $host ========" ssh $host jps done
八、常见问题
-
权限问题
-
确保目录所有权:
sudo chown -R xiaohong /opt/module
- 在
hadoop-env.sh
中设置用户:export HDFS_NAMENODE_USER=xiaohong export HDFS_DATANODE_USER=xiaohong
-
-
端口冲突
-
Hadoop 3.x 的NameNode Web端口为 9870(非50070)。
-
-
历史服务器无法访问
-
启动服务:
mapred --daemon start historyserver
-
通过遵循上述步骤,您将能够成功部署一个完全分布式的Hadoop 3.1.3集群。建议在操作前备份关键配置文件,并逐步验证每项服务是否正常启动。