温馨提示×

Ubuntu上Hadoop的网络配置指南

小樊
70
2025-09-27 19:41:54
栏目: 智能运维

Ubuntu上Hadoop网络配置指南

1. 网络接口配置

确保Ubuntu节点的网络接口(如eth0ens33)配置静态IP地址(集群节点需固定IP,避免DHCP变动导致通信故障)。

  • Ubuntu 18.04及以上版本:使用ip命令临时配置(重启失效),或编辑/etc/netplan/*.yaml文件永久生效(示例):
    network:
      version: 2
      ethernets:
        ens33:
          dhcp4: no
          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
  • 验证网络连通性:使用ping <其他节点IP>测试节点间网络是否畅通。

2. 主机名与hosts文件配置

统一集群节点的主机名,并在/etc/hosts文件中映射IP与主机名(避免DNS解析延迟或失败)。

  • 设置主机名
    sudo hostnamectl set-hostname <节点主机名>  # 如namenode、datanode1
    
  • 编辑hosts文件
    在所有节点的/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 nodemanager1
    
    保存后,通过ping <主机名>验证解析是否正确。

3. SSH免密码登录配置

Hadoop集群节点间需无密码通信(如NameNode与DataNode、ResourceManager与NodeManager),配置SSH免密码登录:

  • 生成密钥对:在所有节点执行:
    ssh-keygen -t rsa  # 默认保存到~/.ssh/id_rsa
    
  • 分发公钥:将本机公钥复制到其他节点(以namenode为例):
    ssh-copy-id user@datanode1  # 替换为实际用户名和节点主机名
    ssh-copy-id user@datanode2
    ssh-copy-id user@resourcemanager
    
    测试无密码登录:ssh user@datanode1,无需输入密码即可连接。

4. Hadoop核心配置文件修改

进入Hadoop安装目录的etc/hadoop子目录,修改以下关键配置文件:

  • core-site.xml:配置HDFS默认文件系统和Hadoop集群基本设置:
    <configuration>
      <property>
        <name>fs.defaultFS</name>
        <value>hdfs://namenode:9000</value>  <!-- NameNode的IPC端口 -->
      </property>
      <property>
        <name>hadoop.tmp.dir</name>
        <value>/path/to/hadoop-tmp</value>  <!-- 临时目录,需提前创建 -->
      </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>/path/to/namenode/data</value>  <!-- NameNode元数据存储目录 -->
      </property>
      <property>
        <name>dfs.datanode.data.dir</name>
        <value>/path/to/datanode/data</value>  <!-- DataNode数据存储目录 -->
      </property>
    </configuration>
    
  • mapred-site.xml:配置MapReduce框架为YARN:
    <configuration>
      <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
      </property>
    </configuration>
    
  • yarn-site.xml:配置YARN资源管理器和NodeManager辅助服务:
    <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>
      <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
      </property>
    </configuration>
    
    保存所有配置文件。

5. 防火墙配置

允许Hadoop服务所需端口通过防火墙(Ubuntu默认使用ufw,部分系统可能用firewalld):

  • 开放常用端口
    sudo ufw allow 9000/tcp    # HDFS NameNode IPC端口
    sudo ufw allow 50070/tcp   # HDFS Web UI端口
    sudo ufw allow 8020/tcp    # HDFS NameNode元数据端口(部分版本)
    sudo ufw allow 8032/tcp    # YARN ResourceManager端口
    sudo ufw allow 8042/tcp    # YARN NodeManager端口
    sudo ufw allow 10020/tcp   # MapReduce JobHistory Server端口
    sudo ufw allow 19888/tcp   # MapReduce JobHistory Web UI端口
    
  • 重载防火墙
    sudo ufw reload
    
    若使用firewalld(如CentOS),可将ufw替换为firewall-cmd命令。

6. 格式化HDFS(首次启动需执行)

若为首次设置Hadoop集群或NameNode元数据损坏,需格式化HDFS(注意:格式化会清除NameNode中的所有数据,仅首次启动或元数据损坏时执行):

hdfs namenode -format

7. 启动Hadoop集群

依次启动HDFS和YARN服务:

start-dfs.sh    # 启动HDFS(NameNode、DataNode)
start-yarn.sh   # 启动YARN(ResourceManager、NodeManager)

启动后,可通过以下命令查看服务状态:

jps  # 查看Hadoop进程(NameNode、DataNode、ResourceManager、NodeManager等)

8. 验证网络配置

  • 检查HDFS状态
    hdfs dfsadmin -report  # 查看DataNode是否注册、存储容量等信息
    
  • 检查YARN状态
    yarn node -list  # 查看NodeManager是否注册、资源使用情况
    
  • 测试文件操作
    在HDFS中创建目录并上传文件,验证集群功能是否正常:
    hdfs dfs -mkdir -p /user/<用户名>/test
    hdfs dfs -put ~/test.txt /user/<用户名>/test
    hdfs dfs -ls /user/<用户名>/test
    

注意事项

  • 主机名一致性:确保/etc/hosts中的主机名与hostnamectl设置的主机名完全一致,避免解析错误。
  • 端口冲突:检查Hadoop所需端口是否被其他服务占用(如netstat -tulnp | grep <端口>),若有冲突需修改配置文件中的端口号。
  • 日志分析:若启动失败,查看Hadoop日志文件(位于$HADOOP_HOME/logs目录下),如hadoop-<用户名>-namenode-<主机名>.log,定位具体错误原因。

0