温馨提示×

Ubuntu下Hadoop网络配置指南

小樊
38
2025-10-23 06:16:55
栏目: 智能运维

Ubuntu下Hadoop网络配置指南

1. 准备工作

在开始网络配置前,需完成以下基础准备:

  • 硬件要求:每台Ubuntu节点至少分配2GB内存、500GB磁盘空间(可根据集群规模调整);
  • 软件安装:提前安装Java(openjdk-11-jdk)和Hadoop(建议使用稳定版本,如3.3.6);
  • 网络模式:虚拟机建议使用桥接模式(与宿主机同局域网)或NAT模式(共享宿主机IP),确保节点间可通信。

2. 配置Ubuntu静态IP地址

Hadoop集群需要稳定的IP地址,避免动态IP变动导致节点失联。以Ubuntu 20.04及以上版本为例,通过netplan配置静态IP:

  1. 备份原有网络配置文件:
    sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak
    
  2. 编辑配置文件(使用nanovim):
    sudo nano /etc/netplan/01-netcfg.yaml
    
  3. 修改为以下内容(替换<your_ip><your_gateway><your_dns>为实际值,ens33为网络接口名,可通过ip a命令查看):
    network:
      version: 2
      ethernets:
        ens33:
          addresses: ["<your_ip>/24"]
          gateway4: "<your_gateway>"
          nameservers:
            addresses: ["<your_dns>", "8.8.8.8", "8.8.4.4"]
    
  4. 应用配置:
    sudo netplan apply
    
  5. 验证IP设置:
    ip a | grep "inet "
    
    确认输出的IP地址与配置一致。

3. 配置主机名与hosts文件映射

为了让节点通过主机名互相识别(而非IP),需统一配置主机名和/etc/hosts文件:

  1. 设置主机名(以namenode为例):
    sudo hostnamectl set-hostname namenode
    
    重启节点使主机名生效,或临时生效:
    sudo hostname namenode
    
  2. 修改hosts文件(所有节点均需配置):
    sudo nano /etc/hosts
    
    添加以下内容(替换为实际IP和主机名):
    192.168.1.100 namenode
    192.168.1.101 datanode1
    192.168.1.102 datanode2
    
    保存后,通过ping <hostname>验证主机名解析是否正常。

4. 配置SSH无密码登录

Hadoop集群节点间需要频繁通信(如NameNode与DataNode、ResourceManager与NodeManager),配置SSH无密码登录可避免重复输入密码:

  1. 生成SSH密钥对(所有节点):
    ssh-keygen -t rsa
    
    直接按回车键,使用默认路径(~/.ssh/id_rsa)和空密码。
  2. 复制公钥到其他节点(以namenode为例):
    ssh-copy-id namenode
    ssh-copy-id datanode1
    ssh-copy-id datanode2
    
    输入当前用户的密码,完成后即可实现无密码登录:
    ssh namenode
    ssh datanode1
    

5. 配置Hadoop网络相关参数

编辑Hadoop配置文件(位于$HADOOP_HOME/etc/hadoop/目录),确保网络相关参数正确:

  1. core-site.xml:指定HDFS的默认文件系统地址(<namenode_hostname>替换为NameNode的主机名):
    <configuration>
      <property>
        <name>fs.defaultFS</name>
        <value>hdfs://namenode:9000</value>
      </property>
    </configuration>
    
  2. hdfs-site.xml:配置HDFS副本数(生产环境建议3个)和数据目录:
    <configuration>
      <property>
        <name>dfs.replication</name>
        <value>3</value>
      </property>
      <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop/data/namenode</value>
      </property>
      <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop/data/datanode</value>
      </property>
    </configuration>
    
  3. yarn-site.xml:指定ResourceManager的主机名和Shuffle服务:
    <configuration>
      <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>resourcemanager</value>
      </property>
      <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
      </property>
    </configuration>
    
  4. mapred-site.xml(若未创建,可复制模板):指定MapReduce框架为YARN:
    <configuration>
      <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
      </property>
    </configuration>
    

6. 配置防火墙允许Hadoop端口

Hadoop需要开放多个端口用于节点间通信,使用ufw(Ubuntu防火墙工具)配置:

sudo ufw allow 9000/tcp    # HDFS NameNode端口
sudo ufw allow 50070/tcp   # HDFS Web UI端口
sudo ufw allow 50075/tcp   # DataNode Web UI端口
sudo ufw allow 8020/tcp    # HDFS客户端通信端口
sudo ufw allow 8032/tcp    # YARN ResourceManager端口
sudo ufw allow 8042/tcp    # NodeManager Web UI端口
sudo ufw enable            # 启用防火墙

7. 格式化HDFS并启动集群

  1. 格式化HDFS(仅在NameNode上执行,首次配置或元数据损坏时需要):
    hdfs namenode -format
    
    注意:格式化会清除NameNode中的所有数据,请谨慎操作。
  2. 启动Hadoop集群
    start-dfs.sh   # 启动HDFS服务(NameNode、DataNode)
    start-yarn.sh  # 启动YARN服务(ResourceManager、NodeManager)
    
  3. 验证集群状态
    • 查看HDFS节点列表:
      hdfs dfsadmin -report
      
    • 查看YARN节点列表:
      yarn node -list
      
    • 访问Web UI:在浏览器中输入http://<namenode_ip>:9870(HDFS Web UI)或http://<resourcemanager_ip>:8088(YARN Web UI)。

8. 常见问题排查

  • 节点无法连通:使用ping <hostname>检查网络连通性,确保/etc/hosts文件配置正确;
  • SSH登录失败:检查~/.ssh/authorized_keys文件权限(应为600),并确认公钥已正确复制;
  • HDFS启动失败:查看NameNode日志($HADOOP_HOME/logs/hadoop-<username>-namenode-<hostname>.log),常见原因包括端口被占用、数据目录权限不足;
  • YARN启动失败:查看ResourceManager日志($HADOOP_HOME/logs/yarn-<username>-resourcemanager-<hostname>.log),确认yarn.resourcemanager.hostname配置正确。

0