当前位置:首页 > 物理机 > 正文

Ubuntu如何安装Hadoop物理机集群?

在Ubuntu物理机上搭建Hadoop集群,需准备多台机器,配置SSH免密登录、安装Java环境、部署Hadoop软件包,编辑核心配置文件(如core-site.xml, hdfs-site.xml, mapred-site.xml, yarn-site.xml, workers),格式化HDFS并启动集群服务,最终实现分布式计算与存储。

Hadoop作为分布式计算的核心框架,在物理机集群上部署可充分发挥硬件性能,本文将基于Ubuntu系统,详细讲解从零构建高可用Hadoop集群的全流程,涵盖环境配置、分布式部署、安全优化及故障排查,适用于大数据工程师和运维人员。

Ubuntu如何安装Hadoop物理机集群? 第1张

前期准备

硬件与网络要求

  • 节点规划(示例):
    • 主节点(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

Ubuntu如何安装Hadoop物理机集群? 第2张

Ubuntu如何安装Hadoop物理机集群? 第3张

核心配置文件(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 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


故障排查

  1. 节点无法启动
    • 检查 workers 文件主机名拼写
    • 确认 SSH 免密登录有效:ssh hadoop-slave1
  2. Web UI 无法访问
    • 验证防火墙状态:sudo ufw status
    • 检查端口监听:netstat -tuln | grep 9870
  3. 磁盘空间不足
    • 清理临时文件:hadoop fs -expunge
    • 调整数据目录:修改 hdfs-site.xml 中 dfs.datanode.data.dir


通过本文步骤,您已成功在Ubuntu物理机上部署生产级Hadoop集群,建议定期备份NameNode元数据($HADOOP_HOME/data/namenode),并监控各节点资源使用情况,随着业务增长,可通过动态添加Slave节点实现横向扩展。

引用说明

0