温馨提示×

CentOS HDFS配置实例教程

小樊
43
2025-11-16 05:10:00
栏目: 智能运维

CentOS 7/8 单机快速搭建 HDFS 实例教程

本教程在 CentOS 7/8 上以 Hadoop 3.3.x 为例,完成 HDFS 的单机部署与验证,包含端口、目录、权限与防火墙等关键细节,可直接照做并用于学习与测试环境。


一 环境准备

  • 准备一台 CentOS 7/8 主机,确保可外网访问与系统更新。
  • 安装 Java 8(Hadoop 3.3.x 推荐 Java 8):
    • 执行:sudo yum install java-1.8.0-openjdk-devel -y
    • 验证:java -version
  • 创建专用用户(推荐):sudo useradd hadoop && sudo passwd hadoop,后续操作尽量使用 hadoop 用户执行(文件权限更清晰)。

二 安装与配置 Hadoop

  • 下载并解压 Hadoop(示例版本 3.3.4):
    • 执行:wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
    • 解压:sudo tar -xzvf hadoop-3.3.4.tar.gz -C /usr/local/
    • 重命名:sudo mv /usr/local/hadoop-3.3.4 /usr/local/hadoop
  • 配置环境变量(所有节点一致):
    • 新建文件:sudo vim /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
    • 验证:hadoop version
  • 创建数据与临时目录(示例路径,可按需调整):
    • 执行:
      sudo mkdir -p /usr/local/hadoop/data/namenode
      sudo mkdir -p /usr/local/hadoop/data/datanode
      sudo mkdir -p /usr/local/hadoop/tmp
      sudo chown -R hadoop:hadoop /usr/local/hadoop
      
  • 配置核心文件(路径均为 $HADOOP_HOME/etc/hadoop/):
    • core-site.xml
      <configuration>
        <property>
          <name>fs.defaultFS</name>
          <value>hdfs://localhost:9000</value>
        </property>
        <property>
          <name>hadoop.tmp.dir</name>
          <value>/usr/local/hadoop/tmp</value>
        </property>
      </configuration>
      
    • hdfs-site.xml
      <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>
        <property>
          <name>dfs.permissions.enabled</name>
          <value>false</value>
        </property>
      </configuration>
      
    • 说明:
      • 单机学习将副本数设为 1;生产环境建议 3
      • 关闭权限校验便于测试,生产请开启并配置 Kerberos。

三 启动与验证

  • 首次启动前格式化 NameNode(仅一次):
    • 执行:hdfs namenode -format
  • 启动 HDFS:
    • 执行:start-dfs.sh
  • 进程检查:
    • 执行:jps
    • 期望看到:NameNodeDataNodeSecondaryNameNode
  • Web 界面:
    • 访问:http://<服务器IP>:50070(NameNode HTTP 地址)
  • 基本操作验证:
    hdfs dfs -mkdir /user/test
    hdfs dfs -put /etc/hosts /user/test
    hdfs dfs -ls /user/test
    hdfs dfsadmin -report
    
  • 停止服务:
    • 执行:stop-dfs.sh

四 防火墙与端口放行

  • 放行常用端口(示例以 firewalld 为例):
    sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp
    sudo firewall-cmd --permanent --zone=public --add-port=50010/tcp
    sudo firewall-cmd --permanent --zone=public --add-port=50020/tcp
    sudo firewall-cmd --permanent --zone=public --add-port=50070/tcp
    sudo firewall-cmd --permanent --zone=public --add-port=50075/tcp
    sudo firewall-cmd --permanent --zone=public --add-port=50090/tcp
    sudo firewall-cmd --reload
    
  • 说明:
    • 9000 为 HDFS RPC 端口;50070 为 NameNode Web UI;其余为 DataNode/辅助服务端口。
    • 生产环境不建议直接关闭防火墙,应精细化放行端口与来源网段。

五 常见问题与优化建议

  • SSH 免密登录(多节点或脚本化管理时强烈建议):
    ssh-keygen -t rsa
    ssh-copy-id hadoop@<namenode_host>
    
  • 时间与主机名解析:
    • 建议安装并启用 NTP 同步时间;在 /etc/hosts 或 DNS 中正确解析各节点主机名,避免通信异常。
  • 目录与权限:
    • 确保 dfs.namenode.name.dirdfs.datanode.data.dir 所在磁盘有足够空间与正确属主(如 hadoop:hadoop)。
  • 副本与容量规划:
    • 单机测试用 dfs.replication=1;多节点生产建议 3,并结合磁盘容量与容错需求调整。
  • 安全建议:
    • 生产环境开启 dfs.permissions.enabled,并考虑 Kerberos、网络分区与访问控制策略。

0