温馨提示×

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 namenode -format
  • 启动 HDFS
    • 启动脚本:start-dfs.sh
  • 进程与状态检查
    • 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 界面确认角色与同步状态

0