温馨提示×

怎样在CentOS上部署HDFS集群

小樊
46
2025-12-31 12:28:46
栏目: 智能运维

在 CentOS 上部署 HDFS 集群

一 环境准备与规划

  • 节点规划:至少准备 1 台 NameNode≥1 台 DataNode;示例主机名与 IP 对应关系如下(请按实际修改):
    • 192.168.1.10 master
    • 192.168.1.11 slave1
    • 192.168.1.12 slave2
  • 基础环境:
    • 操作系统:CentOS 7/8
    • Java:OpenJDK 8(建议安装 devel 包)
    • 主机名解析:所有节点编辑 /etc/hosts 添加上述映射
    • 免密登录:在 master 生成密钥并将公钥分发到所有节点(含自身),便于脚本统一启停
    • 防火墙/SELinux:开放必要端口或临时关闭(生产环境建议精细放行)
    • 时间同步:建议启用 NTP 保证节点时间一致

二 安装与基础配置

  • 安装 Java(所有节点)
    • 命令:sudo yum install -y java-1.8.0-openjdk-devel
    • 验证:java -version
  • 下载并解压 Hadoop(建议仅在 master 下载后分发,或各节点分别下载)
    • 示例版本:Hadoop 3.3.1
    • 命令:wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
    • 解压:tar -xzvf hadoop-3.3.1.tar.gz -C /usr/local/ && sudo mv /usr/local/hadoop-3.3.1 /usr/local/hadoop
  • 环境变量(所有节点)
    • 建议写入 /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
  • 配置 SSH 免密(master 执行)
    • ssh-keygen -t rsa -b 2048
    • ssh-copy-id masterssh-copy-id slave1ssh-copy-id slave2
  • 目录准备(所有节点)
    • sudo mkdir -p /usr/local/hadoop/data/{namenode,datanode}
    • sudo chown -R $(whoami):$(whoami) /usr/local/hadoop

三 核心配置

  • 配置目录:$HADOOP_HOME/etc/hadoop/
  • hadoop-env.sh
    • 设置:export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
  • core-site.xml
    • 关键项:指定默认文件系统地址(使用主机名)
      <configuration>
        <property>
          <name>fs.defaultFS</name>
          <value>hdfs://master:9000</value>
        </property>
      </configuration>
      
  • hdfs-site.xml
    • 关键项:副本数、NameNode/DataNode 数据目录
      <configuration>
        <property>
          <name>dfs.replication</name>
          <value>2</value>
        </property>
        <property>
          <name>dfs.namenode.name.dir</name>
          <value>/usr/local/hadoop/data/namenode</value>
        </property>
        <property>
          <name>dfs.datanode.data.dir</name>
          <value>/usr/local/hadoop/data/datanode</value>
        </property>
      </configuration>
      
  • 可选:如需使用 YARN 与 MapReduce,可补充
    • yarn-site.xml
      <configuration>
        <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
        </property>
        <property>
          <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
          <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
          <name>yarn.resourcemanager.hostname</name>
          <value>master</value>
        </property>
      </configuration>
      
    • mapred-site.xml
      <configuration>
        <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
        </property>
      </configuration>
      
  • 分发配置
    • $HADOOP_HOME/etc/hadoop/ 整个目录同步到所有 slave 节点(保持一致性)

四 启动与验证

  • 格式化 NameNode(仅在 master 首次启动时执行)
    • 命令:hdfs namenode -format
  • 启动 HDFS
    • master 执行:start-dfs.sh
  • 进程检查
    • master 应见到:NameNode(以及可选的 SecondaryNameNode
    • slave 应见到:DataNode
    • 命令:jps
  • Web 界面
    • HDFS NameNode UI:访问 http://master:9870(Hadoop 3.x 默认端口)
    • 如启用 YARN:ResourceManager UI http://master:8088
  • 基本功能验证
    • hdfs dfsadmin -report(查看集群概况与 DataNode 列表)
    • hdfs dfs -mkdir -p /user/test
    • hdfs dfs -put /etc/hosts /user/test
    • hdfs dfs -ls /user/test

五 关键参数与运维建议

  • 副本与块大小
    • dfs.replication:副本数,默认 3;两节点测试可设为 2
    • dfs.blocksize:块大小,默认 128MB;影响 Map 任务数量与 NameNode 内存
  • 存储路径
    • dfs.namenode.name.dir:NameNode 元数据目录(建议多磁盘/多路径冗余)
    • dfs.datanode.data.dir:DataNode 数据目录(多盘可显著提升 IO)
  • 性能与稳定性
    • dfs.datanode.max.transfer.threads:默认 4096,建议 8192 或更高(并发传输)
    • dfs.namenode.handler.count:默认 10,可按集群规模调优,经验值约为 20 × ln(N)
    • dfs.datanode.balance.bandwidthPerSec:均衡带宽,默认 1MB/s,可按网络调大
    • dfs.datanode.failed.volumes.tolerated:容忍坏盘数,多盘节点可设为 1–2
  • 安全与访问控制
    • dfs.permissions.enabled:建议生产环境开启权限校验
    • dfs.hosts / dfs.hosts.exclude:白/黑名单,便于维护摘除节点
  • 网络与端口
    • 常见端口:9000(RPC)、9870(HDFS Web)、8088(YARN Web)
    • 确保节点间 9000 互通,及防火墙对 Web 端口放行

0