温馨提示×

Ubuntu Hadoop 网络配置怎样设置

小樊
47
2025-10-25 06:54:03
栏目: 智能运维

Ubuntu Hadoop网络配置详细步骤

1. 设置静态IP地址

Hadoop集群需要稳定的网络环境,建议所有节点(NameNode、DataNode、ResourceManager、NodeManager等)配置静态IP。

  • 查看网络接口:使用ip a命令确认网络接口名称(如ens33,不同系统可能不同)。
  • 编辑Netplan配置文件(Ubuntu 18.04及以上版本):
    备份原配置文件:sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak
    编辑配置文件:sudo nano /etc/netplan/01-netcfg.yaml
    添加/修改以下内容(替换为实际IP、网关、DNS):
    network:
      version: 2
      ethernets:
        ens33:
          addresses: ["192.168.1.100/24"]  # 静态IP及子网掩码
          gateway4: "192.168.1.1"          # 网关地址
          nameservers:
            addresses: ["8.8.8.8", "8.8.4.4"]  # DNS服务器
    
    应用配置:sudo netplan apply
  • 验证IP:使用ip a命令检查IP是否生效。

2. 配置主机名与hosts文件

确保节点间可通过主机名互相识别,避免依赖DNS解析。

  • 修改主机名(可选):
    在每台节点上设置唯一主机名(如NameNode设为master,DataNode设为slave1):
    sudo hostnamectl set-hostname <主机名>
    重启后生效,或立即生效:sudo hostname <主机名>
  • 编辑hosts文件
    在所有节点上修改/etc/hosts,添加IP与主机名映射:
    192.168.1.100 master
    192.168.1.101 slave1
    192.168.1.102 slave2
    
    保存后,使用ping <主机名>验证解析是否正确。

3. 配置SSH无密码登录

Hadoop集群节点间需要频繁通信(如NameNode与DataNode、ResourceManager与NodeManager),SSH免密码登录可简化操作。

  • 生成SSH密钥对
    在所有节点上执行:ssh-keygen -t rsa(直接按回车键,使用默认路径和空密码)。
  • 分发公钥
    将本机公钥复制到所有其他节点(包括自身):
    ssh-copy-id user@masteruser为用户名,master为目标主机名/IP)
    重复此步骤,将公钥复制到slave1slave2等节点。
  • 验证无密码登录
    使用ssh user@master测试,无需输入密码即可登录。

4. 配置Hadoop核心网络参数

修改Hadoop配置文件,定义集群通信协议、端口及数据存储路径。

  • core-site.xml(定义HDFS默认文件系统):
    <configuration>
      <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>  <!-- NameNode的IP/主机名及端口 -->
      </property>
    </configuration>
    
  • hdfs-site.xml(定义HDFS副本数及数据目录):
    <configuration>
      <property>
        <name>dfs.replication</name>
        <value>3</value>  <!-- 数据副本数(集群节点数≥3时建议设为3) -->
      </property>
      <property>
        <name>dfs.namenode.name.dir</name>
        <value>/opt/hadoop/namenode</value>  <!-- NameNode元数据存储路径 -->
      </property>
      <property>
        <name>dfs.datanode.data.dir</name>
        <value>/opt/hadoop/datanode</value>  <!-- DataNode数据存储路径 -->
      </property>
    </configuration>
    
  • yarn-site.xml(定义YARN资源管理器):
    <configuration>
      <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>  <!-- ResourceManager的IP/主机名 -->
      </property>
      <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>  <!-- MapReduce Shuffle服务 -->
      </property>
    </configuration>
    
  • mapred-site.xml(定义MapReduce框架):
    <configuration>
      <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>  <!-- 使用YARN作为资源管理器 -->
      </property>
    </configuration>
    
    将配置文件放入$HADOOP_HOME/etc/hadoop/目录下。

5. 配置防火墙

允许Hadoop服务所需端口通过防火墙,避免网络阻断。

  • Ubuntu(ufw)
    允许常用端口(可根据实际需求调整):
    sudo ufw allow 9000/tcp    # HDFS NameNode端口
    sudo ufw allow 50070/tcp   # HDFS Web UI端口
    sudo ufw allow 8088/tcp    # YARN ResourceManager Web UI端口
    sudo ufw allow 50010/tcp   # DataNode数据传输端口
    sudo ufw allow 50020/tcp   # DataNode IPC端口
    sudo ufw enable            # 启用防火墙
    
  • CentOS(firewalld)
    sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp
    sudo firewall-cmd --permanent --zone=public --add-port=50070/tcp
    sudo firewall-cmd --permanent --zone=public --add-port=8088/tcp
    sudo firewall-cmd --permanent --zone=public --add-port=50010/tcp
    sudo firewall-cmd --permanent --zone=public --add-port=50020/tcp
    sudo firewall-cmd --reload
    
    若防火墙未安装,可使用sudo apt install ufw(Ubuntu)或sudo yum install firewalld(CentOS)安装。

6. 格式化HDFS并启动集群

首次配置Hadoop时,需要格式化NameNode元数据,并启动集群服务。

  • 格式化HDFS
    在NameNode节点上执行(仅第一次配置时需要):
    hdfs namenode -format
    此命令会清除NameNode原有数据,请谨慎操作。
  • 启动集群
    在NameNode节点上启动HDFS:start-dfs.sh
    启动YARN:start-yarn.sh
  • 验证集群状态
    查看HDFS节点列表:hdfs dfsadmin -report
    查看YARN节点列表:yarn node -list
    访问Web UI:
    • HDFS Web UI:http://<NameNode_IP>:50070
    • YARN Web UI:http://<ResourceManager_IP>:8088

0