温馨提示×

Linux下Hadoop怎样配置网络

小樊
58
2025-10-04 01:20:38
栏目: 智能运维

Linux下Hadoop网络配置步骤

1. 设置Linux基础网络环境

  • 配置静态IP地址:编辑网络接口配置文件(如CentOS的/etc/sysconfig/network-scripts/ifcfg-ens33、Debian的/etc/network/interfaces),设置静态IP、子网掩码、网关和DNS,确保各节点IP在同一网段且唯一。例如:
    TYPE=Ethernet
    BOOTPROTO=static
    IPADDR=192.168.1.100
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.1
    DNS1=8.8.8.8
    ONBOOT=yes
    
    重启网络服务使配置生效:systemctl restart network(CentOS)或systemctl restart networking(Debian)。
  • 配置主机名:使用hostnamectl set-hostname <主机名>(如masterslave1)修改节点主机名,重启后生效。
  • 绑定IP与主机名映射:编辑所有节点的/etc/hosts文件,添加IP与主机名的对应关系(避免依赖DNS):
    192.168.1.100 master
    192.168.1.101 slave1
    192.168.1.102 slave2
    

2. 配置SSH免密码登录

Hadoop集群节点间需要无密码通信(如NameNode与DataNode、ResourceManager与NodeManager),步骤如下:

  • 生成SSH密钥对:在主节点(如master)执行ssh-keygen -t rsa(直接回车,默认保存到~/.ssh/id_rsa)。
  • 分发公钥到所有节点:使用ssh-copy-id master(主节点自身)和ssh-copy-id slave1ssh-copy-id slave2(从节点),将公钥添加到目标节点的~/.ssh/authorized_keys文件中。
  • 验证免密登录:执行ssh masterssh slave1,无需输入密码即可登录,确认配置成功。

3. 修改Hadoop核心配置文件

Hadoop的网络通信依赖以下核心配置文件的正确设置(位于$HADOOP_HOME/etc/hadoop目录):

  • core-site.xml:配置Hadoop默认文件系统和临时目录(所有节点通用):
    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://master:9000</value> <!-- NameNode的IP/主机名及端口 -->
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/hadoop/tmp</value> <!-- 临时目录,需提前创建并授权 -->
        </property>
    </configuration>
    
  • 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>
    
  • yarn-site.xml:配置YARN资源管理器及Shuffle服务(所有节点通用):
    <configuration>
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>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>
    
  • mapred-site.xml(若未自动生成,需从mapred-site.xml.template复制):配置MapReduce运行框架为YARN(所有节点通用):
    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    
  • slaves文件(可选,但推荐):列出所有DataNode和NodeManager节点的主机名(位于$HADOOP_HOME/etc/hadoop),方便集群管理:
    slave1
    slave2
    

4. 关闭防火墙与SELinux

  • 关闭防火墙:临时停止防火墙(测试环境):systemctl stop firewalld(CentOS)或systemctl stop ufw(Ubuntu);永久禁用:systemctl disable firewalld
  • 关闭SELinux:临时设置:setenforce 0;永久设置:编辑/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,重启生效。

5. 格式化NameNode并启动集群

  • 格式化NameNode:首次启动前需格式化NameNode(清除旧元数据),在主节点执行:
    hdfs namenode -format
    
  • 启动Hadoop集群:依次启动HDFS和YARN服务:
    start-dfs.sh  # 启动HDFS(NameNode、DataNode)
    start-yarn.sh # 启动YARN(ResourceManager、NodeManager)
    
  • 验证集群状态
    • 使用jps命令查看各节点进程(主节点应有NameNode、ResourceManager;从节点应有DataNode、NodeManager)。
    • 访问Hadoop Web界面:HDFS(http://master:50070)、YARN(http://master:8088),确认集群运行正常。

注意事项

  • 所有节点的时间需同步(可使用ntpdate命令同步NTP服务器时间),避免因时间差导致通信问题。
  • 生产环境中,建议开启Hadoop的日志功能(通过log4j.properties配置),便于排查网络或服务问题。
  • 若节点间无法通信,需检查/etc/hosts映射是否正确、防火墙是否放行Hadoop端口(如HDFS的9000、YARN的8032等)。

0