温馨提示×

Hadoop网络设置Linux上怎么弄

小樊
54
2025-10-18 16:08:53
栏目: 智能运维

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

1. 设置Linux基础网络环境

  • 配置静态IP地址:编辑网络接口配置文件(如/etc/sysconfig/network-scripts/ifcfg-eth0),设置静态IP、子网掩码、网关和DNS,避免动态IP变动导致节点通信失败。示例内容:
    TYPE=Ethernet
    BOOTPROTO=static
    IPADDR=192.168.1.100  # 替换为你的节点IP
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.1
    DNS1=8.8.8.8
    DNS2=8.8.4.4
    ONBOOT=yes  # 开机自动启用网络
    
    保存后重启网络服务:sudo systemctl restart network(或sudo service network restart,取决于Linux发行版)。
  • 设置主机名与DNS解析
    • 修改主机名(如主节点设为master):sudo hostnamectl set-hostname master
    • 编辑/etc/hosts文件,添加所有节点的IP与主机名映射(所有节点需保持一致):
      192.168.1.100 master
      192.168.1.101 slave1
      192.168.1.102 slave2
      

2. 配置SSH免密码登录

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

  • 生成SSH密钥对:在主节点执行ssh-keygen -t rsa,按回车键接受默认路径(~/.ssh/id_rsa)和空密码(-P '')。
  • 分发公钥到所有节点:将公钥复制到每个节点的~/.ssh/authorized_keys文件中(如ssh-copy-id user@slave1ssh-copy-id user@slave2user为节点用户名)。
  • 设置权限:确保.ssh目录及文件的访问权限正确(避免SSH拒绝访问):
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    

3. 配置Hadoop核心网络参数

修改Hadoop安装目录下的配置文件(如$HADOOP_HOME/etc/hadoop/),确保节点间能正确识别和通信:

  • core-site.xml:定义Hadoop核心功能,如默认文件系统和临时目录:
    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://master:9000</value>  <!-- 主节点主机名与HDFS端口 -->
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/hadoop/tmp</value>  <!-- 临时目录,需提前创建并授权 -->
        </property>
    </configuration>
    
  • hdfs-site.xml:配置HDFS副本数(生产环境建议3个)和数据目录:
    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>3</value>  <!-- 数据副本数 -->
        </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资源管理器(ResourceManager)和节点管理器(NodeManager):
    <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节点(每行一个主机名,如slave1slave2),用于Hadoop自动管理集群节点。

4. 调整系统网络性能(可选但推荐)

编辑/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

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

Hadoop依赖多个端口进行通信(如HDFS的8020、YARN的8032),需开放这些端口:

# 开放HDFS NameNode端口
sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp
# 开放YARN ResourceManager端口
sudo firewall-cmd --permanent --zone=public --add-port=8032/tcp
# 开放HDFS DataNode端口
sudo firewall-cmd --permanent --zone=public --add-port=50010/tcp
# 重新加载防火墙规则
sudo firewall-cmd --reload

6. 验证网络配置

  • 测试节点连通性:在主节点执行ping slave1ping slave2,确保能正常访问所有从节点。
  • 测试SSH免密登录:执行ssh slave1,无需输入密码即可登录从节点。
  • 启动Hadoop集群:在主节点执行hdfs namenode -format(首次启动需格式化NameNode),然后启动HDFS和YARN:
    start-dfs.sh
    start-yarn.sh
    
  • 检查进程状态:执行jps命令,主节点应看到NameNodeResourceManager等进程,从节点应看到DataNodeNodeManager等进程。
  • 访问Web界面:通过浏览器访问HDFS Web界面(http://master:50070)和YARN Web界面(http://master:8088),确认集群状态正常。

通过以上步骤,可完成Linux环境下Hadoop的网络配置,确保集群节点间通信顺畅。配置过程中需注意所有节点的/etc/hosts文件一致性,以及Hadoop目录的权限设置(如hadoop.tmp.dir需由Hadoop用户拥有)。

0