HDFS在CentOS上的部署流程是怎样的
小樊
44
2025-11-22 05:17:31
在CentOS上部署HDFS的标准流程
一 环境准备与基础配置
- 安装基础软件与Java
- 安装 OpenJDK 8(Hadoop 3.x 常用版本):sudo yum install -y java-1.8.0-openjdk-devel
- 验证:java -version
- 配置主机名与免密登录(多节点必备)
- 配置 /etc/hosts 映射各节点 IP 与主机名
- 生成密钥并分发:ssh-keygen -t rsa -P “”;ssh-copy-id user@目标主机
- 安装与解压 Hadoop
- 下载并解压至统一目录(示例:/usr/local/hadoop-3.3.1),创建软链或设置 HADOOP_HOME
- 配置环境变量
- 建议写入 /etc/profile.d/hadoop.sh:
- export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
- export HADOOP_HOME=/usr/local/hadoop
- export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 使生效:source /etc/profile.d/hadoop.sh
- 防火墙与端口(按实际策略选择开放或临时关闭)
- 开放常用端口:firewall-cmd --permanent --add-port=8020/tcp(RPC)、50070/tcp(NN Web)、50090/tcp(SNN Web);firewall-cmd --reload
- 或测试环境可临时:systemctl stop firewalld && systemctl disable firewalld
- 创建HDFS数据目录
- mkdir -p $HADOOP_HOME/data/namenode
- mkdir -p $HADOOP_HOME/data/datanode
- chown -R 运行用户:$运行用户 $HADOOP_HOME/data
二 Hadoop与HDFS核心配置
- 配置文件路径:$HADOOP_HOME/etc/hadoop
- core-site.xml(示例)
-
fs.defaultFShdfs://namenode:9000
- hdfs-site.xml(示例)
-
dfs.replication3
dfs.namenode.name.dir/usr/local/hadoop/data/namenode
dfs.datanode.data.dir/usr/local/hadoop/data/datanode
- 可选:mapred-site.xml(如需在 YARN 上运行 MapReduce)
-
mapreduce.framework.nameyarn
- 说明
- 单节点伪分布式:fs.defaultFS 可用 hdfs://localhost:9000,副本数 dfs.replication 设为 1
- 生产多节点:fs.defaultFS 使用 NameNode 主机名(如 hdfs://namenode:8020/9000),副本数建议 3
三 启动与验证
- 首次启动前格式化 NameNode(仅一次)
- 启动 HDFS
- 进程与状态检查
- jps 应能看到:NameNode、DataNode(及 SecondaryNameNode,如配置)
- hdfs dfsadmin -report 查看 DataNode 与容量
- Web 界面
- NameNode:http://<namenode_ip>:50070
- SecondaryNameNode:http://<snn_ip>:50090
- 基本操作验证
- hdfs dfs -ls /
- hdfs dfs -mkdir /test
- hdfs dfs -put localfile /test/
- hdfs dfs -rm -r /test
四 常见问题与排查要点
- SSH 免密未生效导致启动脚本卡住或失败
- 检查各节点 authorized_keys、sshd 服务状态、root/运行用户的 .ssh 权限(600/700)
- 端口未放行导致无法访问 Web 或 RPC
- 开放 8020/9000/50070/50090 或临时关闭防火墙测试
- 目录权限或路径错误
- 确认 dfs.namenode.name.dir / dfs.datanode.data.dir 目录存在且属主正确
- 多次格式化导致 ClusterID 不一致
- 清理 name/datanode 数据目录后重新格式化,或手动对齐 ClusterID
- Java/Hadoop 环境变量未生效
- 确认 /etc/profile.d/hadoop.sh 已 source,且各节点一致
- 浏览器访问异常
- 使用服务器 IP 访问,确认监听地址非 127.0.0.1,且网络可达
五 扩展 高可用部署要点(HA)
- 前置条件
- 部署并运行 ZooKeeper 集群(建议至少 3 节点)
- 至少 3 台 JournalNode(用于共享编辑日志)
- 核心配置(hdfs-site.xml 关键项)
- 命名服务与 HA 节点:
- dfs.nameservices=mycluster
- dfs.ha.namenodes.mycluster=nn1,nn2
- dfs.namenode.rpc-address.mycluster.nn1=nn1:8020
- dfs.namenode.rpc-address.mycluster.nn2=nn2:8020
- dfs.namenode.http-address.mycluster.nn1=nn1:50070
- dfs.namenode.http-address.mycluster.nn2=nn2:50070
- 故障转移与隔离:
- dfs.client.failover.proxy.provider.mycluster=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
- dfs.ha.fencing.methods=sshfence
- dfs.ha.fencing.ssh.private-key-files=/path/to/id_rsa
- 共享编辑日志:
- dfs.namenode.shared.edits.dir=qjournal://jn1:8485;jn2:8485;jn3:8485/mycluster
- dfs.journalnode.edits.dir=/path/to/journalnode/data
- 启动顺序
- 先启动所有 JournalNode
- 格式化并启动 Active NameNode,再启动 Standby NameNode
- 通过 ZK 初始化/引导故障转移(如 hdfs zkfc -formatZK),启动 ZKFC
- 验证
- hdfs haadmin -getServiceState nn1 / nn2 查看主备状态
- 访问两个 NameNode 的 Web 界面确认角色与同步状态