在 CentOS 上配置 HDFS 网络的关键步骤
一 基础网络与主机解析
- 配置静态 IP(以网卡 ens33 为例):编辑文件 /etc/sysconfig/network-scripts/ifcfg-ens33,设置 BOOTPROTO=static、IPADDR、NETMASK、GATEWAY、DNS1,并将 ONBOOT=yes;保存后执行 systemctl restart network 使配置生效。
- 设置主机名:使用 hostnamectl set-hostname <主机名> 为各节点设置唯一主机名(如 namenode、datanode1)。
- 主机名解析:在所有节点的 /etc/hosts 中添加各节点 IP 主机名 映射,确保节点间可用主机名互通。
- 连通性验证:使用 ping <主机名/IP> 测试网络与 DNS 解析是否正常。
二 防火墙与内核网络参数
- 防火墙放行 HDFS 端口(示例):
- firewall-cmd --permanent --zone=public --add-port=8020/tcp(NameNode RPC)
- firewall-cmd --permanent --zone=public --add-port=50070/tcp(NameNode HTTP)
- firewall-cmd --permanent --zone=public --add-port=50010/tcp(DataNode 数据传输)
- firewall-cmd --permanent --zone=public --add-port=50020/tcp(DataNode IPC)
- 执行 firewall-cmd --reload 使规则生效。
- 内核与系统限制(可选优化):
- 文件句柄:/etc/security/limits.conf 增加“* soft nofile 65536、* hard nofile 65536”。
- TCP 参数:/etc/sysctl.conf 可设置如 net.ipv4.tcp_tw_reuse=1、net.ipv4.tcp_fin_timeout=30、net.core.somaxconn=32768 等,执行 sysctl -p 生效。
- 说明:生产环境不建议直接关闭防火墙/SELinux,应精细化放通端口与策略。
三 Hadoop 网络相关配置
- 配置 core-site.xml(示例):
- 设置默认文件系统:fs.defaultFS=hdfs://namenode:8020(或 hdfs://namenode:9000,与你的 Hadoop 版本和端口规划一致)。
- 配置 hdfs-site.xml(示例):
- 副本数:dfs.replication=3(测试环境可设为 1)。
- 目录:dfs.namenode.name.dir、dfs.datanode.data.dir 指定本地存储路径。
- Web 地址:dfs.namenode.http-address=namenode:50070。
- 环境变量与分发:在 /etc/profile.d/hadoop.sh 中设置 HADOOP_HOME 与 PATH,执行 source /etc/profile.d/hadoop.sh;将 $HADOOP_HOME/etc/hadoop 配置目录同步到所有节点(如 scp -r)。
四 启动与验证
- 首次部署需格式化 NameNode:hdfs namenode -format。
- 启动 HDFS:在 NameNode 执行 start-dfs.sh;或各节点按需执行 start-datanode.sh。
- 进程与连通性检查:
- 进程:jps 应能看到 NameNode/DataNode 等进程。
- Web:http://namenode:50070 查看 HDFS Web UI。
- 集群报告:hdfs dfsadmin -report 查看节点与容量。
- 基本操作:hdfs dfs -ls / 验证客户端连通与权限。
五 高可用与端口规划
- HA 关键配置(示例):
- dfs.nameservices=mycluster;dfs.ha.namenodes.mycluster=nn1,nn2;
- dfs.namenode.rpc-address.mycluster.nn1=node1:8020;dfs.namenode.rpc-address.mycluster.nn2=node2:8020;
- dfs.namenode.http-address.mycluster.nn1=node1:50070;dfs.namenode.http-address.mycluster.nn2=node2:50070;
- dfs.namenode.shared.edits.dir=qjournal://node1:8485;node2:8485;node3:8485/mycluster;
- dfs.journalnode.edits.dir 指定 JournalNode 编辑目录;
- dfs.client.failover.proxy.provider.mycluster=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider。
- 部署要点:准备 ZooKeeper 集群并启动;按顺序启动 JournalNode,在 nn1 上执行 hdfs namenode -format,按 HA 流程引导备用 NameNode(如使用 -bootstrapStandby),最后启动集群并测试故障转移。
- 常用端口速览:
- 8020 NameNode RPC;50070 NameNode HTTP;50010 DataNode 数据传输;50020 DataNode IPC;8485 JournalNode。