温馨提示×

HDFS集群在CentOS怎么搭建

小樊
54
2025-09-20 10:38:32
栏目: 智能运维

一、HDFS集群搭建前的准备工作

1. 系统要求

  • 操作系统:推荐使用CentOS 7或更高版本(提供稳定支持);
  • 硬件要求:每台节点需配置静态IP、多核CPU(推荐≥2核)、≥2GB内存(生产环境建议≥4GB)、≥20GB可用存储(数据目录需单独分区);
  • 网络配置:所有节点处于同一局域网,可通过ping命令互相访问;修改/etc/hosts文件配置主机名与IP映射(如192.168.1.10 namenode192.168.1.11 datanode1)。

2. 软件依赖

  • Java环境:Hadoop依赖Java 8,通过yum install -y java-1.8.0-openjdk-devel安装;配置JAVA_HOME环境变量(export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk),并添加至/etc/profile使生效。

3. SSH免密登录

  • 在NameNode节点生成SSH密钥:ssh-keygen -t rsa(直接回车默认路径);
  • 将公钥复制到所有DataNode节点:ssh-copy-id datanode1ssh-copy-id datanode2(替换为实际节点主机名);
  • 验证免密登录:ssh datanode1(无需输入密码)。

二、Hadoop安装与配置

1. 下载并解压Hadoop

  • 从Apache官网下载稳定版本(如Hadoop 3.3.1):wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
  • 解压至指定目录(如/usr/local):tar -xzvf hadoop-3.3.1.tar.gz -C /usr/local/
  • 创建软链接简化路径:ln -s /usr/local/hadoop-3.3.1 /usr/local/hadoop
  • 配置HADOOP_HOME环境变量:编辑/etc/profile.d/hadoop.sh,添加export HADOOP_HOME=/usr/local/hadoopexport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin,执行source /etc/profile.d/hadoop.sh使生效。

2. 核心配置文件修改

  • core-site.xml(定义HDFS默认文件系统与临时目录):
    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://namenode:9000</value> <!-- NameNode的RPC地址 -->
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/usr/local/hadoop/tmp</value> <!-- 临时文件目录 -->
        </property>
    </configuration>
    
  • hdfs-site.xml(配置HDFS副本数与数据目录):
    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>2</value> <!-- 数据副本数(生产环境建议≥3) -->
        </property>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>/usr/local/hadoop/data/namenode</value> <!-- NameNode元数据存储路径 -->
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>/usr/local/hadoop/data/datanode</value> <!-- DataNode数据存储路径 -->
        </property>
    </configuration>
    
  • mapred-site.xml(配置MapReduce运行框架):
    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value> <!-- 使用YARN作为资源管理器 -->
        </property>
    </configuration>
    
  • yarn-site.xml(配置YARN相关参数):
    <configuration>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value> <!-- Shuffle服务 -->
        </property>
        <property>
            <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
            <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
    </configuration>
    
  • hadoop-env.sh(指定Java路径): 编辑$HADOOP_HOME/etc/hadoop/hadoop-env.sh,找到# export JAVA_HOME=行,修改为export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk

三、HDFS集群启动

1. 格式化NameNode

  • 在NameNode节点执行:hdfs namenode -format(首次启动需格式化,清除旧元数据)。

2. 启动HDFS服务

  • 在NameNode节点执行:start-dfs.sh(自动启动NameNode、DataNode及SecondaryNameNode);
  • 验证进程:在所有节点执行jps,NameNode节点应显示NameNodeSecondaryNameNode,DataNode节点应显示DataNode

3. 验证集群状态

  • 访问NameNode Web界面:http://namenode:9870(Hadoop 3.x版本默认端口),查看集群状态、节点列表及存储信息;
  • 查看HDFS磁盘使用情况:hdfs dfs -df -h

四、注意事项

  • 配置一致性:所有节点的core-site.xmlhdfs-site.xml等配置文件需保持一致;
  • 目录权限:确保hadoop.tmp.dirdfs.namenode.name.dirdfs.datanode.data.dir等目录存在且有读写权限(chown -R hadoop:hadoop /usr/local/hadoophadoop为用户组);
  • 防火墙设置:开放必要端口(如NameNode的9000、DataNode的50010、Web界面的9870),或临时关闭防火墙(systemctl stop firewalld);
  • SELinux配置:若未关闭SELinux,需设置为宽松模式(setenforce 0)或修改/etc/selinux/config文件。

0