温馨提示×

CentOS与HDFS集成怎样实现

小樊
46
2025-12-25 16:11:41
栏目: 智能运维

在 CentOS 上集成 HDFS 的完整落地方案

一 环境准备与基础配置

  • 安装 Java(Hadoop 依赖 Java,建议 Java 8):
    • 执行:sudo yum install -y java-1.8.0-openjdk-devel
    • 验证:java -version
  • 配置 SSH 免密(Hadoop 启动脚本依赖):
    • 生成密钥:ssh-keygen -t rsa
    • 本机免密:ssh-copy-id localhost
    • 集群环境需将公钥分发到各节点:ssh-copy-id <目标节点主机名/IP>
  • 主机名与网络:
    • 配置 /etc/hosts 保证各节点可互相解析
    • 关闭或放行防火墙/SELinux(或按需放行端口)
  • 下载并解压 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/ && 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
  • 目录准备(示例):
    • mkdir -p /usr/local/hadoop/data/{namenode,datanode}

二 配置 HDFS 核心文件

  • 配置 $HADOOP_HOME/etc/hadoop/core-site.xml
    • 设置默认文件系统(示例为 8020 端口,亦可使用 9000):
      <configuration>
        <property>
          <name>fs.defaultFS</name>
          <value>hdfs://namenode:8020</value>
        </property>
      </configuration>
      
  • 配置 $HADOOP_HOME/etc/hadoop/hdfs-site.xml
    • 示例(单节点或测试环境可将副本设为 1):
      <configuration>
        <property>
          <name>dfs.replication</name>
          <value>1</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>
      
  • 可选:配置 YARNMapReduce(如需运行作业)
    • yarn-site.xml:
      <configuration>
        <property>
          <name>yarn.resourcemanager.hostname</name>
          <value>resourcemanager</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>
      
    • mapred-site.xml:
      <configuration>
        <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
        </property>
      </configuration>
      
  • 说明:
    • 生产环境建议将 dfs.replication 设为 3,并确保 dfs.datanode.data.dir 指向多块磁盘以提升吞吐与可靠性。

三 启动与验证

  • 初始化 NameNode(仅首次):
    • hdfs namenode -format
  • 启动服务:
    • 仅 HDFS:start-dfs.sh
    • 含 YARN:start-yarn.sh
  • 进程健康检查:
    • jps(应看到 NameNode、DataNode,如启用 YARN 则还有 ResourceManager、NodeManager
  • 集群与存储状态:
    • hdfs dfsadmin -report
  • Web 管理界面:
    • HDFS NameNode:http://:50070
    • YARN ResourceManager:http://:8088
  • 基本文件操作验证:
    • hdfs dfs -mkdir -p /user/test
    • hdfs dfs -put /path/to/localfile /user/test
    • hdfs dfs -ls /user/test

四 客户端集成与常用操作

  • 作为客户端接入已有集群:
    • 在客户端安装同版本 Hadoop,将 core-site.xmlhdfs-site.xml 配置为与集群一致(尤其是 fs.defaultFS 指向 NameNode
    • 直接使用命令行工具:
      • 列目录:hdfs dfs -ls /
      • 上传:hdfs dfs -put /local/path /hdfs/path
      • 下载:hdfs dfs -get /hdfs/path /local/path
  • 在 Java 应用中访问 HDFS:
    • 添加依赖(示例版本 3.3.1):
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>3.3.1</version>
      </dependency>
      
    • 使用 Hadoop API 进行读写(FileSystem、IOUtils 等)。

五 常见问题与优化建议

  • 端口与防火墙:
    • 常见端口包含 8020/9000(RPC)50070(NameNode Web)8088(YARN Web) 等;确保节点间与客户端到集群的访问策略允许这些端口
  • SSH 与主机解析:
    • 启动脚本依赖 SSH 免密;各节点需通过 /etc/hosts 或 DNS 正确解析主机名
  • 时间与权限:
    • 建议 NTP 同步时间;如启用 Kerberos/HDFS ACL,需完成相应安全配置
  • 数据与目录:
    • 确保 dfs.namenode.name.dir / dfs.datanode.data.dir 所在磁盘健康且有足够空间;生产环境使用多副本(如 3)与多磁盘
  • 高可用(HA)与扩展:
    • 生产集群建议引入 Zookeeper 实现 NameNode HA,并配合 JournalNode 等组件保障元数据一致性与故障切换能力。

0