温馨提示×

Ubuntu Hadoop 网络配置怎么做

小樊
40
2025-10-21 04:15:35
栏目: 智能运维

Ubuntu环境下Hadoop网络配置详细步骤

1. 配置Ubuntu静态IP地址

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

  • 查看网络接口名称:运行ip a命令,确认网络接口(如ens33,不同系统可能为eth0)。
  • 编辑Netplan配置文件:Ubuntu 18.04及以上版本使用Netplan管理网络,文件路径通常为/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 | grep ens33

2. 配置主机名与IP映射(/etc/hosts文件)

Hadoop集群节点间通过主机名通信,需将各节点的IP与主机名映射写入所有节点的/etc/hosts文件。

  • 编辑hosts文件
    sudo nano /etc/hosts
    
  • 添加映射内容(示例,替换为实际IP和主机名):
    192.168.1.100 namenode
    192.168.1.101 datanode1
    192.168.1.102 datanode2
    192.168.1.103 resourcemanager
    192.168.1.104 nodemanager
    
  • 保存并退出:确保所有节点的/etc/hosts文件内容一致。

3. 配置SSH无密码登录

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

  • 生成SSH密钥对(在所有节点执行):
    ssh-keygen -t rsa  # 默认保存路径~/.ssh/id_rsa
    
  • 复制公钥到其他节点(以namenode为例,向datanode1、datanode2等复制):
    ssh-copy-id namenode@192.168.1.100  # 将本机公钥复制到namenode
    ssh-copy-id datanode1@192.168.1.101 # 复制到datanode1
    ssh-copy-id datanode2@192.168.1.102 # 复制到datanode2
    
  • 验证无密码登录
    ssh namenode  # 无需输入密码即可登录
    ssh datanode1
    

4. 配置Hadoop核心网络参数

修改Hadoop配置文件,指定集群通信的IP、端口及副本策略。

  • 进入Hadoop配置目录(假设Hadoop安装在/usr/local/hadoop):
    cd /usr/local/hadoop/etc/hadoop
    
  • 编辑core-site.xml(指定HDFS默认文件系统和NameNode地址):
    <configuration>
      <property>
        <name>fs.defaultFS</name>
        <value>hdfs://namenode:9000</value> <!-- 替换为namenode的实际主机名 -->
      </property>
    </configuration>
    
  • 编辑hdfs-site.xml(配置HDFS副本数、NameNode/DataNode数据目录):
    <configuration>
      <property>
        <name>dfs.replication</name>
        <value>3</value> <!-- 副本数,根据集群规模调整 -->
      </property>
      <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop/data/namenode</value> <!-- NameNode元数据存储路径 -->
      </property>
      <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop/data/datanode</value> <!-- DataNode数据存储路径 -->
      </property>
    </configuration>
    
  • 编辑yarn-site.xml(配置ResourceManager地址和Shuffle服务):
    <configuration>
      <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>resourcemanager</value> <!-- 替换为resourcemanager的实际主机名 -->
      </property>
      <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value> <!-- MapReduce Shuffle服务 -->
      </property>
    </configuration>
    
  • 编辑mapred-site.xml(指定MapReduce框架为YARN):
    <configuration>
      <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
      </property>
    </configuration>
    

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

Hadoop需要开放多个端口用于节点间通信,需配置防火墙(如ufw)允许这些端口。

  • 查看防火墙状态
    sudo ufw status
    
  • 允许常用端口(若未开启防火墙,可跳过此步):
    sudo ufw allow 9000/tcp    # NameNode RPC端口
    sudo ufw allow 50070/tcp   # HDFS Web UI端口
    sudo ufw allow 50075/tcp   # DataNode Web UI端口
    sudo ufw allow 8088/tcp    # YARN ResourceManager Web UI端口
    sudo ufw allow 8030/tcp    # YARN ResourceManager调度端口
    sudo ufw allow 8040/tcp    # NodeManager Web UI端口
    sudo ufw allow 8042/tcp    # NodeManager Web UI端口
    sudo ufw enable            # 开启防火墙(可选)
    

6. 格式化HDFS并启动集群

首次配置Hadoop需格式化NameNode(会清除原有数据,仅第一次执行),然后启动集群服务。

  • 格式化NameNode(在namenode节点执行):
    hdfs namenode -format
    
  • 启动HDFS
    start-dfs.sh
    
  • 启动YARN
    start-yarn.sh
    
  • 验证集群状态
    • 查看NameNode和DataNode状态:hdfs dfsadmin -report
    • 查看ResourceManager和NodeManager状态:yarn node -list
    • 访问Web UI:浏览器输入http://namenode:9000(HDFS)、http://resourcemanager:8088(YARN)。

常见问题排查

  • 节点无法连通:检查/etc/hosts映射是否正确,防火墙是否阻止端口,网络接口IP是否配置正确。
  • SSH登录失败:确认公钥已正确复制到目标节点,~/.ssh目录权限为700,~/.ssh/authorized_keys权限为600。
  • HDFS格式化失败:删除NameNode和DataNode的数据目录(如/usr/local/hadoop/data/namenode),重新格式化。

0