Hadoop作为分布式计算的核心框架,在物理机集群上部署可充分发挥硬件性能,本文将基于Ubuntu系统,详细讲解从零构建高可用Hadoop集群的全流程,涵盖环境配置、分布式部署、安全优化及故障排查,适用于大数据工程师和运维人员。
前期准备
硬件与网络要求
- 节点规划(示例):
- 主节点(Master):1台(运行NameNode + ResourceManager)
- 从节点(Slave):≥2台(运行DataNode + NodeManager)
- 网络配置:
# 所有节点配置静态IP(示例) sudo nano /etc/netplan/01-netcfg.yaml # 添加内容: addresses: [192.168.1.10/24] # Master节点IP # 执行生效: sudo netplan apply
- 主机名映射(所有节点执行):
sudo nano /etc/hosts # 添加: 192.168.1.10 hadoop-master 192.168.1.11 hadoop-slave1 192.168.1.12 hadoop-slave2
系统环境配置
- 创建专用用户(所有节点):
sudo adduser hadoopuser # 用户名自定义 sudo usermod -aG sudo hadoopuser
- SSH免密登录(Master节点执行):
ssh-keygen -t rsa # 连续回车生成密钥 ssh-copy-id hadoopuser@hadoop-master ssh-copy-id hadoopuser@hadoop-slave1 # 依次配置所有Slave
依赖安装
sudo apt update && sudo apt install -y openjdk-11-jdk openssh-server pdsh # 验证Java: java -version # 需≥Java 8
Hadoop集群安装与配置
下载并解压(所有节点)
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz tar -xzvf hadoop-3.3.6.tar.gz -C /opt/ sudo mv /opt/hadoop-3.3.6 /opt/hadoop sudo chown -R hadoopuser:hadoopuser /opt/hadoop
配置环境变量(所有节点)
编辑 ~/.bashrc
:
export HADOOP_HOME=/opt/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
生效配置:source ~/.bashrc
核心配置文件(Master节点操作)
$HADOOP_HOME/etc/hadoop/core-site.xml
:<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop-master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/hadoop/tmp</value> </property> </configuration>
$HADOOP_HOME/etc/hadoop/hdfs-site.xml
:<configuration> <property> <name>dfs.replication</name> <value>2</value> <!-- 副本数≤Slave节点数 --> </property> <property> <name>dfs.namenode.name.dir</name> <value>/opt/hadoop/data/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/opt/hadoop/data/datanode</value> </property> </configuration>
$HADOOP_HOME/etc/hadoop/mapred-site.xml
:<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
$HADOOP_HOME/etc/hadoop/yarn-site.xml
:<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop-master</value> </property> </configuration>
- 从节点配置(
$HADOOP_HOME/etc/hadoop/workers
):hadoop-slave1 hadoop-slave2
同步配置到所有节点
scp -r /opt/hadoop/etc/hadoop/* hadoopuser@hadoop-slave1:/opt/hadoop/etc/hadoop/ scp -r /opt/hadoop/etc/hadoop/* hadoopuser@hadoop-slave2:/opt/hadoop/etc/hadoop/
启动集群与验证
格式化HDFS(仅首次,Master执行)
hdfs namenode -format # 出现 "successfully formatted" 即成功
启动服务
# Master节点: start-dfs.sh && start-yarn.sh # 验证进程: jps # Master应有 NameNode/ResourceManager, Slave应有 DataNode/NodeManager
集群状态检查
- Web UI:
- HDFS:
http://hadoop-master:9870
- YARN:
http://hadoop-master:8088
- HDFS:
- 命令行验证:
hdfs dfsadmin -report # 查看节点状态 yarn node -list # 检查YARN节点
运行测试任务
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar pi 2 4 # 输出 "Estimated value of Pi is" 表示成功
安全加固与维护
防火墙规则
sudo ufw allow 9000/tcp # HDFS sudo ufw allow 8088/tcp # YARN sudo ufw allow 9870/tcp # HDFS Web sudo ufw reload
定期维护命令
# 平衡数据分布 hdfs balancer -threshold 10 # 安全模式操作 hdfs dfsadmin -safemode enter/leave
关键日志路径
- NameNode:
$HADOOP_HOME/logs/hadoop-hadoopuser-namenode-*.log
- DataNode:
$HADOOP_HOME/logs/hadoop-hadoopuser-datanode-*.log
故障排查
- 节点无法启动:
- 检查
workers
文件主机名拼写 - 确认 SSH 免密登录有效:
ssh hadoop-slave1
- 检查
- Web UI 无法访问:
- 验证防火墙状态:
sudo ufw status
- 检查端口监听:
netstat -tuln | grep 9870
- 验证防火墙状态:
- 磁盘空间不足:
- 清理临时文件:
hadoop fs -expunge
- 调整数据目录:修改
hdfs-site.xml
中dfs.datanode.data.dir
- 清理临时文件:
通过本文步骤,您已成功在Ubuntu物理机上部署生产级Hadoop集群,建议定期备份NameNode元数据($HADOOP_HOME/data/namenode
),并监控各节点资源使用情况,随着业务增长,可通过动态添加Slave节点实现横向扩展。
引用说明:
- Hadoop官方配置指南:Apache Hadoop Documentation
- Ubuntu网络配置:Netplan Configuration Examples
- 安全加固参考:Hadoop Security Hardening Checklist
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/45937.html