温馨提示×

Debian如何实现HDFS集群配置

小樊
44
2025-12-05 09:32:12
栏目: 智能运维

在 Debian 上搭建 HDFS 集群的完整步骤


一 环境准备与规划

  • 节点规划
    • NameNode 1 台:管理元数据
    • DataNode N 台:存储数据块
    • 可选:ResourceManager 1 台NodeManager N 台(如需 YARN)
  • 软件要求
    • Java 8 或 11(Hadoop 3.x 推荐 8/11)
    • OpenSSH 服务器
    • Hadoop 3.x 稳定版(所有节点安装相同版本与路径)
  • 网络与主机名
    • 建议使用静态 IP,并在所有节点配置 /etc/hosts 解析主机名
    • 确保节点间免密 SSH互通(便于启动与维护)

二 安装与基础配置

  • 系统更新与 Java
    • 执行:sudo apt update && sudo apt upgrade -y
    • 安装 Java(二选一):sudo apt install openjdk-11-jdk -ysudo apt install openjdk-8-jdk -y
    • 验证:java -version
  • 创建专用用户与目录
    • sudo adduser hadoop && sudo usermod -aG sudo hadoop
    • 建议数据目录:sudo mkdir -p /opt/hadoop/hdfs/{name,data}
  • 安装 Hadoop
    • 下载并解压(示例):wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
    • 解压:sudo tar -xzvf hadoop-3.3.6.tar.gz -C /usr/local/
    • 软链:sudo ln -sfn /usr/local/hadoop-3.3.6 /usr/local/hadoop
  • 环境变量(推荐统一到 /etc/profile.d/hadoop.sh)
    • 内容:
      export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
      export HADOOP_HOME=/usr/local/hadoop
      export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
      
    • 生效:source /etc/profilesource /etc/profile.d/hadoop.sh
  • SSH 免密
    • 在每台机器生成密钥:ssh-keygen -t rsa -b 4096
    • master 上分发公钥:ssh-copy-id hadoop@node1ssh-copy-id hadoop@node2
    • 验证:ssh hadoop@node1 无需密码

三 HDFS 核心配置

  • 目录与文件
    • 配置目录:$HADOOP_HOME/etc/hadoop/
    • 关键文件:core-site.xml、hdfs-site.xml、hadoop-env.sh
  • 配置示例
    • hadoop-env.sh
      export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
      export HADOOP_HOME=/usr/local/hadoop
      
    • core-site.xml
      <configuration>
        <property>
          <name>fs.defaultFS</name>
          <value>hdfs://master:9000</value>
        </property>
      </configuration>
      
    • hdfs-site.xml
      <configuration>
        <property>
          <name>dfs.replication</name>
          <value>3</value>
        </property>
        <property>
          <name>dfs.namenode.name.dir</name>
          <value>file:///opt/hadoop/hdfs/name</value>
        </property>
        <property>
          <name>dfs.datanode.data.dir</name>
          <value>file:///opt/hadoop/hdfs/data</value>
        </property>
      </configuration>
      
  • 主机名解析
    • 编辑 /etc/hosts(示例)
      192.168.1.100 master
      192.168.1.101 node1
      192.168.1.102 node2
      
  • 目录权限
    • sudo chown -R hadoop:hadoop /opt/hadoop/hdfs

四 启动与验证

  • 格式化 NameNode(仅首次)
    • 切换 hadoop 用户:su - hadoop
    • 执行:hdfs namenode -format
  • 启动 HDFS
    • start-dfs.sh
  • 验证
    • 进程检查:jps(应看到 NameNode、DataNode 等)
    • Web 界面:http://master:9870(HDFS NameNode Web UI)
    • 基本操作:
      hdfs dfs -mkdir -p /user/hadoop
      hdfs dfs -put $HADOOP_HOME/README.txt /user/hadoop/
      hdfs dfs -ls /user/hadoop
      
  • 常见问题排查
    • 无法免密 SSH:检查 ~/.ssh/authorized_keys 权限为 600
    • 端口不通:确认 9000/9870 未被占用且防火墙放行
    • 目录权限:确保 /opt/hadoop/hdfs 属主为 hadoop:hadoop
    • DataNode 未注册:检查 /etc/hosts、SSH、NameNode 与 DataNode 的 dfs.datanode.data.dir 一致性与可写性

五 扩展与高可用(可选)

  • YARN 基础配置(如需)
    • yarn-site.xml
      <configuration>
        <property>
          <name>yarn.resourcemanager.hostname</name>
          <value>master</value>
        </property>
        <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>
      </configuration>
      
    • 启动:start-yarn.sh
  • HDFS 高可用 HA(QJM + ZooKeeper)
    • 部署 ZooKeeper 集群(3 或 5 节点)
    • 配置 core-site.xmlhdfs-site.xml:定义 nameservicesdfs.ha.namenodesJournalNodesFailoverZKFC
    • 初始化与启动 ZKFC、格式化 ZooKeeper、启动 JournalNodeNameNode,验证 Active/Standby 切换

0