Linux环境下HDFS网络配置的关键技巧
/etc/hosts文件,添加集群所有节点的主机名与IP对应关系(如192.168.1.101 nn1、192.168.1.102 dn1),避免依赖DNS解析,提升通信稳定性。/etc/sysconfig/network-scripts/ifcfg-ens33),设置BOOTPROTO=static,并配置IPADDR(节点IP)、NETMASK(子网掩码)、GATEWAY(网关)、DNS1(DNS服务器),重启网络服务(systemctl restart network)使配置生效。/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.ip_local_port_range="1024 65535",扩大客户端可用端口范围;net.core.somaxconn=65535,提升服务器连接队列长度);优化TIME_WAIT状态处理(如net.ipv4.tcp_tw_reuse=1、net.ipv4.tcp_fin_timeout=30),减少端口占用。/etc/security/limits.conf,增加用户级文件描述符限制(如hadoop - nofile 65535),避免HDFS进程因文件描述符耗尽而崩溃。core-site.xml:设置fs.defaultFS为HDFS的URI(如hdfs://mycluster,高可用集群需指定命名服务);调整ipc.client.connect.timeout(如60000毫秒),避免客户端连接NameNode超时。hdfs-site.xml:配置dfs.replication(副本数,根据数据重要性设置为3或更多);增加NameNode处理线程数(dfs.namenode.handler.count=100),提升元数据操作并发能力;增加DataNode数据传输线程数(dfs.datanode.handler.count=100、dfs.datanode.max.transfer.threads=4096),加快数据块传输速度。dfs.locality.wait参数(如设置为3秒),增加任务等待数据本地化的时间,减少网络数据传输,提升计算效率。core-site.xml中的ha.zookeeper.quorum(如zk1:2181,zk2:2181,zk3:2181),用于管理NameNode的高可用状态;hdfs-site.xml中设置dfs.client.failover.proxy.provider.mycluster(如org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider),实现客户端自动故障转移。dfs.journalnode.edits.dir(如/var/lib/hadoop/journalnode),用于存储编辑日志;dfs.namenode.shared.edits.dir(如qjournal://node1:8485;node2:8485;node3:8485/mycluster),确保多个NameNode共享编辑日志,保证数据一致性。dfs.ha.automatic-failover.enabled=true,配合dfs.ha.fencing.methods(如sshfence)和dfs.ha.fencing.ssh.private-key-files(私钥路径),实现NameNode故障时的自动切换,避免脑裂问题。iftop、nload等工具实时监控集群网络带宽使用情况,识别带宽瓶颈节点(如某DataNode带宽占用过高),及时调整数据分布或扩容网络。8020、DataNode的50010、JournalNode的8485);配置本地DNS缓存(如dnsmasq),加快域名解析速度,避免因DNS查询延迟影响HDFS通信。