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

两台物理机如何快速搭建Hadoop集群?

使用 两台物理机部署Hadoop集群,实现分布式存储(HDFS)和资源调度(YARN),构建基础的大数据处理环境。

两台物理机搭建Hadoop集群完全指南

为什么选择物理机部署Hadoop?

在云服务盛行的时代,物理机部署Hadoop集群仍具有不可替代的优势:

  • 性能最大化:直接访问物理硬件资源,避免虚拟化层损耗
  • 成本效益:长期运行场景下硬件投入回报率更高
  • 数据安全:完全掌控数据物理存储位置
  • 网络优化:万兆网卡直连可达到10Gbps+传输速率

实测数据显示:相同配置下物理机比虚拟机集群性能提升约15-30%


环境准备清单

硬件配置(最低要求)

组件 服务器A 服务器B
CPU 4核+ 4核+
内存 16GB+ 16GB+
存储 1TB HDD×2 1TB HDD×2
网络 千兆网卡×2 千兆网卡×2

软件要求

- 操作系统:Ubuntu 20.04 LTS/CentOS 7+ - Java环境:JDK 8 (1.8.0_311) - Hadoop版本:3.3.4 (最新稳定版) - SSH服务:所有节点互通免密登录


集群架构设计

graph LR A[Master节点] -->|管理元数据| B[Worker节点] A -->|资源调度| B subgraph 物理机1 A[NameNode<br>ResourceManager<br>SecondaryNameNode] end subgraph 物理机2 B[DataNode<br>NodeManager<br>DataNode] end

核心服务分配原则

  1. Master节点(服务器A)运行:

    两台物理机如何快速搭建Hadoop集群? 第1张

    • NameNode:管理HDFS元数据
    • ResourceManager:分配计算资源
    • SecondaryNameNode:元数据备份
  2. Worker节点(服务器B)运行:

    • DataNode:存储实际数据块
    • NodeManager:执行计算任务


详细搭建步骤

步骤1:系统基础配置

# 所有节点执行 sudo hostnamectl set-hostname master # 服务器A sudo hostnamectl set-hostname worker # 服务器B # 配置hosts文件(/etc/hosts) 192.168.1.100 master 192.168.1.101 worker # 关闭防火墙 sudo systemctl stop firewalld sudo systemctl disable firewalld # 时间同步 sudo timedatectl set-timezone Asia/Shanghai sudo yum install -y ntp && sudo systemctl start ntpd

步骤2:SSH免密登录配置

# 在master节点执行 ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa ssh-copy-id master # 本机 ssh-copy-id worker # 目标节点 # 验证免密登录 ssh worker 'hostname' # 应返回worker

步骤3:Java环境安装

tar -xzvf jdk-8u311-linux-x64.tar.gz -C /opt echo 'export JAVA_HOME=/opt/jdk1.8.0_311' >> ~/.bashrc echo 'export PATH=$PATH:$JAVA_HOME/bin' >> ~/.bashrc source ~/.bashrc

步骤4:Hadoop集群配置

core-site.xml

<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/hadoop/tmp</value> </property> </configuration>

hdfs-site.xml

两台物理机如何快速搭建Hadoop集群? 第2张

yarn-site.xml

<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>

步骤5:启动集群

# 格式化HDFS(仅在首次执行) hdfs namenode -format # 启动HDFS start-dfs.sh # 启动YARN start-yarn.sh # 验证服务 jps # master节点应显示:NameNode/ResourceManager # worker节点应显示:DataNode/NodeManager


集群验证测试

  1. HDFS文件操作测试

  2. YARN任务执行测试

    yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar pi 10 100

    成功运行将输出:”Estimated value of Pi is 3.14…”

  3. 关键优化参数

    在hadoop-env.sh中添加:

    # 内存配置(根据实际硬件调整) export HDFS_NAMENODE_OPTS="-Xmx4g" export YARN_RESOURCEMANAGER_OPTS="-Xmx2g" export HADOOP_HEAPSIZE_MAX=2048m # 数据磁盘选择 dfs.datanode.data.dir = /data1,/data2 # 多磁盘提升IO


    故障排查指南

    故障现象 解决方案
    DataNode未启动 检查dfs.datanode.data.dir权限
    节点间通信失败 验证防火墙和SELinux状态
    磁盘空间不足 添加dfs.datanode.du.reserved配置
    Task运行超时 调整mapreduce.task.timeout参数


    安全加固建议

    1. 启用Kerberos认证: kadmin -q "addprinc nn/master@HADOOP.COM"
    2. 配置HDFS权限: <property> <name>dfs.permissions.enabled</name> <value>true</value> </property>
    3. 启用审计日志: <property> <name>dfs.namenode.audit.log.async</name> <value>true</value> </property>


    后续扩展方向

    1. 添加ZooKeeper实现HA:消除NameNode单点故障
    2. 集成Spark/Flink:构建统一计算平台
    3. 接入Prometheus监控:实时采集以下指标:
      • HDFS存储利用率
      • YARN容器使用率
      • 节点网络IO
    4. 部署Alluxio:构建内存加速层

    实际案例:某制造企业通过双节点集群处理每日10GB传感器数据,延时从小时级降至分钟级


    引用说明

    1. Apache Hadoop官方文档 3.3.4版
    2. Linux基金会SSH配置指南
    3. 生产环境Hadoop调优实践 – Cloudera技术白皮书
    4. 服务器硬件选型基准测试 – TPC.org标准

    通过遵循本指南,您已成功构建了一个高性价比的物理机Hadoop集群,建议每季度执行hdfs dfsadmin -report检查集群健康状态,并根据业务增长及时规划扩容方案。

    两台物理机如何快速搭建Hadoop集群? 第3张

0