温馨提示×

Ubuntu Hadoop集群搭建指南

小樊
31
2025-12-04 23:30:58
栏目: 智能运维

Ubuntu Hadoop 集群搭建指南

一 环境准备与规划

  • 节点规划:至少准备1 个 Master2 个 Worker(示例主机名:master、slave1、slave2),所有节点在同一局域网,能互相 ping 通。
  • 软件版本:Ubuntu 16.04+、Java OpenJDK 8、Hadoop 3.3.x(如 3.3.4)。
  • 用户与权限:建议创建专用用户 hadoop 并加入 sudo 组,后续操作尽量使用该用户。
  • 目录约定:Hadoop 安装至 /usr/local/hadoop,数据目录如 /opt/hadoop(可按磁盘规划调整)。
  • 网络与主机名:配置 /etc/hosts 做主机名与内网 IP 映射,便于组件间通信。

二 基础环境配置

  • 安装 Java
    • 执行:sudo apt update && sudo apt install -y openjdk-8-jdk
    • 验证:java -version 应返回 1.8.x
  • 创建 Hadoop 用户与目录
    • 执行:sudo adduser hadoopsudo usermod -aG sudo hadoop
    • 建议目录:sudo mkdir -p /usr/local/hadoop /opt/hadoop && sudo chown -R hadoop:hadoop /usr/local/hadoop /opt/hadoop
  • 配置主机名与 hosts
    • 编辑 /etc/hostname 分别设为 master/slave1/slave2
    • 编辑 /etc/hosts(示例):
      192.168.1.10 master
      192.168.1.11 slave1
      192.168.1.12 slave2
      
  • 安装并启用 SSH
    • 执行:sudo apt install -y openssh-server
    • 验证:ssh localhost 可免密登录本机(用于后续分发公钥)。

三 SSH 免密登录

  • master 生成密钥:ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
  • 将公钥分发到所有节点(含本机):
    • ssh-copy-id hadoop@masterssh-copy-id hadoop@slave1ssh-copy-id hadoop@slave2
  • 验证:ssh slave1ssh slave2 无需密码即可登录;如需 Worker 免密回连 Master,可在对应节点重复上述分发步骤。

四 Hadoop 安装与配置

  • 安装 Hadoop(以 3.3.4 为例)
    • 下载:wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
    • 解压与授权:
      sudo tar -xvf hadoop-3.3.4.tar.gz -C /usr/local
      sudo mv /usr/local/hadoop-3.3.4 /usr/local/hadoop
      sudo chown -R hadoop:hadoop /usr/local/hadoop
      
  • 环境变量(所有节点)
    • ~/.bashrc/etc/profile.d/hadoop.sh 添加:
      export HADOOP_HOME=/usr/local/hadoop
      export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
      
    • 使生效:source ~/.bashrc
  • 核心配置(路径均为 $HADOOP_HOME/etc/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
      <configuration>
        <property>
          <name>dfs.replication</name>
          <value>2</value>
        </property>
        <property>
          <name>dfs.namenode.name.dir</name>
          <value>/opt/hadoop/hdfs/namenode</value>
        </property>
        <property>
          <name>dfs.datanode.data.dir</name>
          <value>/opt/hadoop/hdfs/datanode</value>
        </property>
      </configuration>
      
    • mapred-site.xml
      <configuration>
        <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
        </property>
      </configuration>
      
    • 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>
        <property>
          <name>yarn.nodemanager.resource.memory-mb</name>
          <value>4096</value>
        </property>
      </configuration>
      
    • workers(或 slaves)
      slave1
      slave2
      
  • 创建数据目录并授权
    sudo mkdir -p /opt/hadoop/tmp /opt/hadoop/hdfs/{namenode,datanode}
    sudo chown -R hadoop:hadoop /opt/hadoop
    

五 启动与验证

  • 格式化 NameNode(仅 master 一次)
    • hdfs namenode -format
  • 启动集群
    • start-dfs.sh
    • start-yarn.sh
  • 进程检查
    • master 执行 jps,应看到:NameNode、ResourceManager
    • slave1/slave2 执行 jps,应看到:DataNode、NodeManager
  • Web 界面
    • HDFS:http://master:9870(Hadoop 3.x 默认端口)
    • YARN:http://master:8088
  • 常见问题速查
    • 无法访问 Web:检查防火墙/安全组放行 9870/8088,以及 workers 是否配置正确;
    • DataNode 未启动:确认 dfs.datanode.data.dir 目录存在且 hadoop 用户可写;
    • SSH 免密失败:确认 ~/.ssh/authorized_keys 权限为 600.ssh700

0