温馨提示×

Hadoop如何在Linux上进行集群搭建

小樊
40
2025-12-24 11:02:12
栏目: 智能运维

Linux上搭建Hadoop集群实操指南

一 环境准备与规划

  • 节点与角色建议:至少准备3台Linux主机(如CentOS 7/8Ubuntu 20.04+),规划为1个NameNode + 1个ResourceManager + 多个DataNode/NodeManager;测试环境可复用一台作为SecondaryNameNode或部署JobHistoryServer。示例规划:
    • 主机名与IP:master 192.168.56.100slave1 192.168.56.101slave2 192.168.56.102slave3 192.168.56.103
    • 角色分配:master 运行 NameNode/ResourceManager;slave1 运行 DataNode/NodeManager/SecondaryNameNode;slave2/slave3 运行 DataNode/NodeManager;可选在 slave3 运行 JobHistoryServer
  • 基础配置
    • 设置主机名与**/etc/hosts**互信解析(所有节点一致)
    • 建议配置静态IPNTP时间同步
    • 实验环境可关闭防火墙/SELinux,生产环境按需放通端口或采用零信任网关
    • 创建统一Hadoop用户与目录(如 /opt/hadoop/{apps,data})以便权限与运维统一

二 安装与基础配置

  • 安装Java
    • 建议安装JDK 8(Hadoop 3.x对JDK 11/17支持需验证具体版本),在所有节点执行:
      • CentOS/RHEL:sudo yum install -y java-1.8.0-openjdk-devel
      • Ubuntu/Debian:sudo apt-get update && sudo apt-get install -y openjdk-8-jdk
    • 配置环境变量(示例写入 /etc/profile~/.bashrc):
      • export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
      • export HADOOP_HOME=/opt/hadoop/apps/hadoop-3.2.x
      • export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  • 安装Hadoop
    • 下载并解压(所有节点一致):
      • wget https://downloads.apache.org/hadoop/core/hadoop-3.2.12/hadoop-3.2.12.tar.gz
      • tar -xzf hadoop-3.2.12.tar.gz -C /opt/hadoop/apps
    • $HADOOP_HOME/etc/hadoop/hadoop-env.sh 中显式设置:export JAVA_HOME=…
  • SSH免密登录
    • 在 master 生成密钥:ssh-keygen -t rsa
    • 将公钥分发至所有节点(含本机):ssh-copy-id user@master;ssh-copy-id user@slave1;ssh-copy-id user@slave2;ssh-copy-id user@slave3
    • 验证:ssh master、ssh slave1 等无需口令即可登录

三 核心配置

  • 配置目录:$HADOOP_HOME/etc/hadoop/
  • 关键文件与示例(按你的主机名与目录调整):
    • core-site.xml
      • - fs.defaultFS**hdfs://master:9000** - hadoop.tmp.dir**/opt/hadoop/data/tmp** -
    • hdfs-site.xml
      • - dfs.replication**3** - dfs.namenode.name.dir**file:///opt/hadoop/data/hdfs/name** - dfs.datanode.data.dir**file:///opt/hadoop/data/hdfs/data** - dfs.permissions.enabled**false** -
    • mapred-site.xml(如文件不存在先 cp mapred-site.xml.template mapred-site.xml)
      • - mapreduce.framework.name**yarn** - mapreduce.jobhistory.address**master:10020** - mapreduce.jobhistory.webapp.address**master:19888** -
    • yarn-site.xml
      • - yarn.resourcemanager.hostname**master** - yarn.nodemanager.aux-services**mapreduce_shuffle** - yarn.nodemanager.aux-services.mapreduce.shuffle.class**org.apache.hadoop.mapred.ShuffleHandler** -
    • workers(或旧版 slaves)
      • 写入所有 DataNode/NodeManager 主机名,每行一个:
        • slave1
        • slave2
        • slave3
  • 目录准备(所有节点)
    • mkdir -p /opt/hadoop/data/{tmp,hdfs/{name,data}}
    • chown -R hadoop:hadoop /opt/hadoop/data(如使用非root用户)

四 启动与验证

  • 格式化NameNode(仅首次)
    • hdfs namenode -format
  • 启动集群
    • 方式一(推荐脚本):start-dfs.sh;start-yarn.sh
    • 方式二(逐进程):hadoop-daemon.sh start namenode;yarn-daemon.sh start resourcemanager;在每台工作节点启动 datanodenodemanager
  • 常用验证
    • 进程检查:jps(应看到 NameNode/ResourceManager/DataNode/NodeManager 等)
    • HDFS健康:hdfs dfsadmin -report
    • Web UI:
      • HDFS NameNode:http://master:50070
      • YARN ResourceManager:http://master:8088
      • JobHistory:http://master:19888
  • 运行测试
    • 创建目录:hdfs dfs -mkdir -p /user/hadoop
    • 上传文件:hdfs dfs -put $HADOOP_HOME/README.txt /
    • 查看文件:hdfs dfs -cat /README.txt | head

五 常见问题与扩展

  • 常见问题
    • 节点不通或DataNode起不来:检查 /etc/hosts、防火墙/SELinux、网络连通性(如 50010 数据端口)、目录权限
    • 端口被占用:lsof -i:50070/8088/50010;必要时更换端口或释放占用进程
    • 权限问题:HDFS权限开关(dfs.permissions.enabled)、本地目录属主(hadoop:hadoop)
    • JDK不一致:各节点 java -versionJAVA_HOME 保持一致
  • 扩展
    • 高可用(HA):引入 ZooKeeperQJM/JournalNode,部署 Active/Standby NameNodeZKFailoverController(ZKFC);ResourceManager 也可做 HA
    • 监控与运维:使用 AmbariCloudera Manager 进行安装、配置与监控(Ambari Web:http://namenode_ip:8080

0