linux

Hadoop在Linux下的网络配置

小樊
38
2025-10-29 07:51:24
栏目: 智能运维

一、基础网络环境配置

  1. 设置静态IP地址
    为避免动态IP变动导致集群通信故障,需为所有节点配置静态IP。根据Linux发行版差异,编辑对应网络配置文件(如CentOS/RHEL的/etc/sysconfig/network-scripts/ifcfg-ens33、Debian/Ubuntu的/etc/network/interfaces),设置以下参数:

    TYPE=Ethernet
    BOOTPROTO=static  # 静态IP
    IPADDR=192.168.1.100  # 节点IP
    NETMASK=255.255.255.0  # 子网掩码
    GATEWAY=192.168.1.1  # 网关
    DNS1=8.8.8.8  # DNS服务器
    ONBOOT=yes  # 开机自启
    

    保存后重启网络服务(systemctl restart networkservice network restart)。

  2. 配置主机名与hosts映射

    • 为每个节点设置唯一主机名(如NameNode设为hadoop-master,DataNode设为hadoop-slave1):
      hostnamectl set-hostname hadoop-master  # 在对应节点执行
      
    • 编辑所有节点的/etc/hosts文件,添加IP与主机名映射(确保所有节点映射一致):
      192.168.1.100 hadoop-master
      192.168.1.101 hadoop-slave1
      192.168.1.102 hadoop-slave2
      
  3. 配置SSH免密码登录
    实现NameNode与DataNode、ResourceManager与NodeManager之间的无密码通信:

    • 在NameNode上生成SSH密钥对:
      ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa  # 直接回车,无需设置密码
      
    • 将公钥复制到所有DataNode和NodeManager节点:
      ssh-copy-id hadoop-slave1  # 执行后输入目标节点密码
      ssh-copy-id hadoop-slave2
      
    • 验证免密码登录(从NameNode执行ssh hadoop-slave1,无需密码即可登录)。

二、Hadoop核心配置文件调整

  1. core-site.xml
    配置Hadoop默认文件系统和临时目录,指定NameNode的RPC地址:

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://hadoop-master:9000</value>  <!-- NameNode的RPC地址 -->
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/hadoop/tmp</value>  <!-- 临时目录,需提前创建并授权 -->
        </property>
    </configuration>
    
  2. hdfs-site.xml
    配置HDFS副本数、NameNode和DataNode的数据存储目录:

    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>3</value>  <!-- 副本数,生产环境建议3,测试环境可设为1 -->
        </property>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>/opt/hadoop/dfs/name</value>  <!-- NameNode元数据存储路径 -->
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>/opt/hadoop/dfs/data</value>  <!-- DataNode数据存储路径 -->
        </property>
    </configuration>
    
  3. yarn-site.xml
    配置ResourceManager地址和NodeManager的Shuffle服务:

    <configuration>
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop-master</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>
    
  4. mapred-site.xml
    指定MapReduce任务运行框架为YARN:

    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    
  5. slaves文件
    列出所有DataNode和NodeManager节点(每行一个主机名),用于Hadoop自动管理集群节点:

    hadoop-slave1
    hadoop-slave2
    

三、网络相关优化与安全配置

  1. 防火墙设置
    开放Hadoop必需端口(如HDFS的9000、50010,YARN的8032、8042),允许集群内部通信:

    sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp  # HDFS RPC
    sudo firewall-cmd --permanent --zone=public --add-port=50010/tcp  # DataNode数据传输
    sudo firewall-cmd --permanent --zone=public --add-port=8032/tcp  # YARN ResourceManager
    sudo firewall-cmd --permanent --zone=public --add-port=8042/tcp  # NodeManager
    sudo firewall-cmd --reload
    

    若无需防火墙,可直接停止并禁用(不推荐生产环境):

    systemctl stop firewalld && systemctl disable firewalld
    
  2. SELinux配置
    若系统启用SELinux,需临时或永久关闭以避免权限问题:

    setenforce 0  # 临时关闭
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config  # 永久关闭
    
  3. 网络性能调优
    编辑/etc/sysctl.conf,调整TCP缓冲区大小以提升大数据传输效率:

    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216
    net.ipv4.tcp_rmem = 4096 87380 16777216
    net.ipv4.tcp_wmem = 4096 65536 16777216
    net.ipv4.tcp_congestion_control = cubic
    

    应用配置:

    sudo sysctl -p
    

四、验证网络配置

  1. 节点连通性检查
    使用ping命令测试NameNode与各DataNode之间的网络连通性(如ping hadoop-slave1)。

  2. SSH免密码登录验证
    从NameNode执行ssh hadoop-slave1,确认无需输入密码即可登录。

  3. Hadoop服务状态检查

    • 格式化NameNode(首次启动需执行):
      hdfs namenode -format
      
    • 启动HDFS和YARN:
      start-dfs.sh && start-yarn.sh
      
    • 使用jps命令查看各节点进程(NameNode节点应显示NameNode、SecondaryNameNode;DataNode节点应显示DataNode;ResourceManager节点应显示ResourceManager;NodeManager节点应显示NodeManager)。
    • 访问Hadoop Web界面(HDFS: http://hadoop-master:50070,YARN: http://hadoop-master:8088),确认集群状态正常。

0
看了该问题的人还看了