1. 环境准备
/etc/hosts文件,将节点IP与主机名映射(如192.168.1.100 namenode、192.168.1.101 datanode1),确保节点间可通过主机名互相访问。2. 安装Java环境
HDFS基于Java开发,需安装JDK 8或11(推荐OpenJDK,兼容性更好)。
sudo yum update
sudo yum install -y java-1.8.0-openjdk-devel
java -version
输出应包含Java版本信息(如openjdk version "1.8.0_392")。~/.bashrc或/etc/profile,添加JAVA_HOME路径:export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$PATH:$JAVA_HOME/bin
source ~/.bashrc # 使配置生效
3. 下载并解压Hadoop
wget命令下载:wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
/opt/hadoop):sudo tar -zxvf hadoop-3.3.6.tar.gz -C /opt/hadoop
sudo chown -R hadoop:hadoop /opt/hadoop # 修改所有者(hadoop为用户)
~/.bashrc,添加Hadoop环境变量:export HADOOP_HOME=/opt/hadoop/hadoop-3.3.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source ~/.bashrc # 使配置生效
4. 配置Hadoop核心文件
Hadoop的主要配置文件位于$HADOOP_HOME/etc/hadoop/目录下,需修改以下核心文件:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value> <!-- NameNode的RPC地址 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/hadoop-3.3.6/tmp</value> <!-- Hadoop临时目录 -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value> <!-- 数据副本数(根据集群节点数调整,至少3个) -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/hadoop-3.3.6/data/namenode</value> <!-- NameNode元数据存储路径 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/hadoop-3.3.6/data/datanode</value> <!-- DataNode数据存储路径 -->
</property>
</configuration>
$HADOOP_HOME/etc/hadoop/slaves,添加所有DataNode的主机名(每行一个):datanode1
datanode2
datanode3
5. 配置SSH免密登录
集群节点间需通过SSH无密码通信(如NameNode向DataNode分发任务),步骤如下:
ssh-keygen -t rsa # 按回车键接受默认路径和空密码
ssh-copy-id hadoop@namenode # 本机无需复制
ssh-copy-id hadoop@datanode1
ssh-copy-id hadoop@datanode2
ssh-copy-id hadoop@datanode3
ssh hadoop@datanode1 # 应无需输入密码即可登录
6. 格式化HDFS
仅在NameNode上执行一次,用于初始化HDFS元数据(会清空所有数据,请谨慎操作):
hdfs namenode -format
格式化完成后,会在dfs.namenode.name.dir指定的目录下生成fsimage(元数据镜像)和edits(编辑日志)文件。
7. 启动HDFS集群
start-dfs.sh
该命令会自动启动NameNode、SecondaryNameNode(若配置了dfs.namenode.secondary.http.address)和所有DataNode(根据slaves文件)。jps # 查看Java进程
应看到NameNode、DataNode、SecondaryNameNode等进程(若未启动,检查日志文件$HADOOP_HOME/logs/下的错误信息)。8. 验证集群状态
hdfs dfsadmin -report
输出应显示NameNode信息、DataNode列表、存储容量、副本数等。http://namenode:9870(默认端口9870),查看HDFS集群状态、文件系统树、DataNode分布等。hdfs dfs -mkdir -p /user/hadoop # 创建用户目录
hdfs dfs -put /opt/hadoop/hadoop-3.3.6/LICENSE.txt /user/hadoop/ # 上传文件到HDFS
hdfs dfs -ls /user/hadoop # 查看文件列表
9. 可选:配置防火墙
若集群节点启用了防火墙,需开放Hadoop所需端口(避免通信阻塞):
sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp # NameNode RPC端口
sudo firewall-cmd --permanent --zone=public --add-port=50070/tcp # NameNode Web端口(旧版本)
sudo firewall-cmd --permanent --zone=public --add-port=9870/tcp # NameNode Web端口(新版本)
sudo firewall-cmd --reload # 重新加载防火墙规则