温馨提示×

Debian下HDFS集群如何搭建

小樊
40
2025-12-21 05:44:01
栏目: 智能运维

在 Debian 上搭建 HDFS 集群

一 环境准备

  • 节点规划(示例):
    • node1:NameNode + ResourceManager(可选)
    • node2、node3:DataNode + NodeManager(可选)
  • 基础要求:
    • 各节点网络互通,主机名可解析(建议配置 /etc/hosts 或使用内网 DNS)
    • 安装 OpenSSH 服务器 并启动:sudo apt-get install -y openssh-server && sudo systemctl enable --now ssh
    • 创建专用用户(如 hadoop)或使用现有用户,并在所有节点保持一致
    • 建议关闭防火墙或放行端口(见下文“网络与端口”)
      以上准备与节点角色划分可参考 Hadoop 在 Debian 上的通用部署实践。

二 安装 Java 与 Hadoop

  • 安装 Java(推荐 OpenJDK 8Temurin 8):
    • OpenJDK 8:sudo apt-get update && sudo apt-get install -y openjdk-8-jdk
    • 或 Eclipse Temurin 8(Debian 12+ 推荐):
      sudo apt-get update && sudo apt-get install -y wget apt-transport-https
      wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo tee /etc/apt/keyrings/adoptium.asc
      echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://mirrors.tuna.tsinghua.edu.cn/Adoptium/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list
      sudo apt-get update
      sudo apt-get install -y temurin-8-jdk
      
  • 下载并解压 Hadoop(示例版本 3.3.6,请按需要选择稳定版本):
    wget -P /root/packages https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
    sudo tar -zxvf /root/packages/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/temurin-8-jdk-amd64   # 若用 OpenJDK 8:/usr/lib/jvm/java-8-openjdk-amd64
      export HADOOP_HOME=/usr/local/hadoop
      export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
      
    • 使生效:source /etc/profile.d/hadoop.sh
      以上安装与环境变量设置方法与路径约定可参考在 Debian 上安装 Hadoop 的实操示例。

三 集群配置

  • 主机名与免密登录
    • 配置 /etc/hosts(示例):
      192.168.50.201  node1
      192.168.50.202  node2
      192.168.50.203  node3
      
    • node1 生成密钥并分发:
      ssh-keygen -t rsa -C "node1@example.com"
      ssh-copy-id node1
      ssh-copy-id node2
      ssh-copy-id node3
      
  • 核心配置文件($HADOOP_HOME/etc/hadoop)
    • hadoop-env.sh(设置运行用户与 JAVA_HOME)
      export JAVA_HOME=/usr/lib/jvm/temurin-8-jdk-amd64
      export HDFS_NAMENODE_USER=hadoop
      export HDFS_DATANODE_USER=hadoop
      export HDFS_SECONDARYNAMENODE_USER=hadoop
      export YARN_RESOURCEMANAGER_USER=hadoop
      export YARN_NODEMANAGER_USER=hadoop
      
    • core-site.xml
      <configuration>
        <property>
          <name>fs.defaultFS</name>
          <value>hdfs://node1:8020</value>
        </property>
        <property>
          <name>hadoop.tmp.dir</name>
          <value>/export/data/hadoop</value>
        </property>
        <property>
          <name>hadoop.http.staticuser.user</name>
          <value>hadoop</value>
        </property>
      </configuration>
      
    • hdfs-site.xml
      <configuration>
        <property>
          <name>dfs.replication</name>
          <value>2</value>
        </property>
        <property>
          <name>dfs.namenode.name.dir</name>
          <value>/export/data/hadoop/hdfs/name</value>
        </property>
        <property>
          <name>dfs.datanode.data.dir</name>
          <value>/export/data/hadoop/hdfs/data</value>
        </property>
      </configuration>
      
    • mapred-site.xml(如启用 MapReduce)
      <configuration>
        <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
        </property>
        <property>
          <name>mapreduce.jobhistory.address</name>
          <value>node1:10020</value>
        </property>
        <property>
          <name>mapreduce.jobhistory.webapp.address</name>
          <value>node1:19888</value>
        </property>
      </configuration>
      
    • yarn-site.xml(如启用 YARN)
      <configuration>
        <property>
          <name>yarn.resourcemanager.hostname</name>
          <value>node1</value>
        </property>
        <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
        </property>
      </configuration>
      
    • 目录准备(所有节点)
      sudo mkdir -p /export/data/hadoop/hdfs/{name,data}
      sudo chown -R hadoop:hadoop /export/data/hadoop
      
    以上配置项与目录结构为在 Debian 上部署 HDFS/MapReduce/YARN 的通用做法。

四 启动与验证

  • 格式化 NameNode(仅首次)
    hdfs namenode -format
    
  • 启动服务
    # 启动 HDFS
    start-dfs.sh
    # 如需 YARN
    start-yarn.sh
    # 如需历史服务
    mapred --daemon start historyserver
    
  • 进程与连通性检查
    jps
    # 期望进程:NameNode、DataNode、SecondaryNameNode(HDFS);ResourceManager、NodeManager(YARN)
    hdfs dfsadmin -report
    
  • Web UI
    • HDFS NameNode:http://node1:9870
    • YARN ResourceManager:http://node1:8088
    • JobHistory:http://node1:19888
      以上启动、验证与 Web 端口为 Hadoop 3.x 常用方式。

五 网络与端口及常见问题

  • 网络与端口
    • 建议关闭防火墙或放行端口(示例)
      sudo ufw disable
      # 或放行
      sudo ufw allow 22,8020,9870,8088,19888/tcp
      
    • 确保 /etc/hosts 在所有节点一致,避免主机名解析异常
  • 常见问题
    • DataNode 未启动或重复:检查 dfs.datanode.data.dir 权限与磁盘空间;清理 VERSION 文件后重启
    • 无法访问 Web UI:确认监听地址为 0.0.0.0 或服务器 IP,且云主机安全组/本机防火墙已放行
    • SSH 免密失败:确认 ~/.ssh/authorized_keys 权限为 600,目录 ~/.ssh700
      上述网络与防火墙处理在生产环境需结合企业安全策略进行精细化放行。

0