温馨提示×

Linux中HDFS集群搭建步骤是什么

小樊
62
2025-09-19 03:30:44
栏目: 智能运维

1. 环境准备

  • 操作系统:选择CentOS、Ubuntu等Linux发行版(建议使用CentOS 7/8或Ubuntu 20.04及以上版本)。
  • 硬件要求:确保各节点(NameNode、DataNode)具备足够资源:CPU(2核及以上)、内存(NameNode建议8GB+,DataNode建议4GB+)、存储(DataNode磁盘空间根据数据量调整,建议预留10%以上空闲空间)。
  • 网络配置:所有节点处于同一局域网,配置静态IP地址;修改/etc/hosts文件,将节点IP与主机名映射(如192.168.1.100 namenode192.168.1.101 datanode1),确保节点间可通过主机名互相访问。

2. 安装Java环境
HDFS基于Java开发,需安装JDK 8或11(推荐OpenJDK,兼容性更好)。

  • 安装命令(以CentOS为例):
    sudo yum update
    sudo yum install -y java-1.8.0-openjdk-devel
    
  • 验证安装
    java -version
    
    输出应包含Java版本信息(如openjdk version "1.8.0_392")。
  • 配置环境变量(可选但推荐):编辑~/.bashrc/etc/profile,添加JAVA_HOME路径:
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
    export PATH=$PATH:$JAVA_HOME/bin
    source ~/.bashrc  # 使配置生效
    

3. 下载并解压Hadoop

  • 下载Hadoop:从Apache官网获取最新稳定版本(如3.3.6),使用wget命令下载:
    wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
    
  • 解压安装:将压缩包解压至指定目录(如/opt/hadoop):
    sudo tar -zxvf hadoop-3.3.6.tar.gz -C /opt/hadoop
    sudo chown -R hadoop:hadoop /opt/hadoop  # 修改所有者(hadoop为用户)
    
  • 设置HADOOP_HOME:编辑~/.bashrc,添加Hadoop环境变量:
    export HADOOP_HOME=/opt/hadoop/hadoop-3.3.6
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    source ~/.bashrc  # 使配置生效
    

4. 配置Hadoop核心文件
Hadoop的主要配置文件位于$HADOOP_HOME/etc/hadoop/目录下,需修改以下核心文件:

  • core-site.xml(集群全局配置):
    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://namenode:9000</value>  <!-- NameNode的RPC地址 -->
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/hadoop/hadoop-3.3.6/tmp</value>  <!-- Hadoop临时目录 -->
        </property>
    </configuration>
    
  • hdfs-site.xml(HDFS配置):
    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>3</value>  <!-- 数据副本数(根据集群节点数调整,至少3个) -->
        </property>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>/opt/hadoop/hadoop-3.3.6/data/namenode</value>  <!-- NameNode元数据存储路径 -->
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>/opt/hadoop/hadoop-3.3.6/data/datanode</value>  <!-- DataNode数据存储路径 -->
        </property>
    </configuration>
    
  • slaves文件(指定DataNode节点):
    编辑$HADOOP_HOME/etc/hadoop/slaves,添加所有DataNode的主机名(每行一个):
    datanode1
    datanode2
    datanode3
    

5. 配置SSH免密登录
集群节点间需通过SSH无密码通信(如NameNode向DataNode分发任务),步骤如下:

  • 生成密钥对(在NameNode上执行):
    ssh-keygen -t rsa  # 按回车键接受默认路径和空密码
    
  • 复制公钥到所有节点
    ssh-copy-id hadoop@namenode  # 本机无需复制
    ssh-copy-id hadoop@datanode1
    ssh-copy-id hadoop@datanode2
    ssh-copy-id hadoop@datanode3
    
  • 验证免密登录
    ssh hadoop@datanode1  # 应无需输入密码即可登录
    

6. 格式化HDFS
仅在NameNode上执行一次,用于初始化HDFS元数据(会清空所有数据,请谨慎操作):

hdfs namenode -format

格式化完成后,会在dfs.namenode.name.dir指定的目录下生成fsimage(元数据镜像)和edits(编辑日志)文件。

7. 启动HDFS集群

  • 启动HDFS服务(在NameNode上执行):
    start-dfs.sh
    
    该命令会自动启动NameNode、SecondaryNameNode(若配置了dfs.namenode.secondary.http.address)和所有DataNode(根据slaves文件)。
  • 验证进程是否启动
    jps  # 查看Java进程
    
    应看到NameNodeDataNodeSecondaryNameNode等进程(若未启动,检查日志文件$HADOOP_HOME/logs/下的错误信息)。

8. 验证集群状态

  • 查看集群摘要
    hdfs dfsadmin -report
    
    输出应显示NameNode信息、DataNode列表、存储容量、副本数等。
  • 访问Web界面
    在浏览器中输入http://namenode:9870(默认端口9870),查看HDFS集群状态、文件系统树、DataNode分布等。
  • 简单文件操作
    hdfs dfs -mkdir -p /user/hadoop  # 创建用户目录
    hdfs dfs -put /opt/hadoop/hadoop-3.3.6/LICENSE.txt /user/hadoop/  # 上传文件到HDFS
    hdfs dfs -ls /user/hadoop  # 查看文件列表
    

9. 可选:配置防火墙
若集群节点启用了防火墙,需开放Hadoop所需端口(避免通信阻塞):

sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp  # NameNode RPC端口
sudo firewall-cmd --permanent --zone=public --add-port=50070/tcp  # NameNode Web端口(旧版本)
sudo firewall-cmd --permanent --zone=public --add-port=9870/tcp  # NameNode Web端口(新版本)
sudo firewall-cmd --reload  # 重新加载防火墙规则

0