温馨提示×

CentOS Hadoop 集群如何搭建

小樊
57
2025-10-07 08:17:05
栏目: 智能运维

CentOS环境下搭建Hadoop分布式集群全流程(以3节点为例)

一、前置准备

1. 虚拟机/物理机基础配置
  • 节点规划:至少准备3台机器(1台Master节点:运行NameNode、ResourceManager;2台Slave节点:运行DataNode、NodeManager)。
  • 静态IP设置:为每台机器配置静态IP(如192.168.88.101192.168.88.102192.168.88.103),避免DHCP导致IP变动。
  • 主机名设置:修改每台机器的主机名(如Master节点为hadoop01,Slave节点为hadoop02hadoop03),命令:hostnamectl set-hostname hadoop01
  • hosts文件配置:在每台机器的/etc/hosts中添加IP与主机名映射,确保节点间可通过主机名互相访问:
    192.168.88.101 hadoop01
    192.168.88.102 hadoop02
    192.168.88.103 hadoop03
    
  • 网络连通性测试:使用ping命令测试节点间网络是否畅通(如ping hadoop02)。
2. 软件环境要求
  • 操作系统:推荐使用CentOS 7(64位),避免32位系统对Hadoop堆内存的限制。
  • Java环境:Hadoop依赖Java 8或更高版本(推荐JDK 1.8.0_361),需卸载系统自带OpenJDK并安装Oracle JDK。
    • 卸载OpenJDK:rpm -qa | grep jdk | xargs rpm -e --nodeps
    • 解压JDK包至/export/servers目录,配置环境变量(/etc/profile中添加JAVA_HOMEPATH),并分发至所有节点:scp -r /export/servers/jdk hadoop02:/export/servers/

二、Hadoop安装与配置

1. 下载与解压Hadoop
  • 从Apache官网下载稳定版Hadoop(如3.4.1),解压至/export/servers目录并重命名:
    cd /export/software
    tar -zxvf hadoop-3.4.1.tar.gz -C /export/servers/
    mv /export/servers/hadoop-3.4.1 /export/servers/hadoop
    
  • 配置Hadoop环境变量(/etc/profile中添加):
    export HADOOP_HOME=/export/servers/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    
    执行source /etc/profile使配置生效。
2. 核心配置文件修改

进入$HADOOP_HOME/etc/hadoop目录,修改以下关键配置文件:

  • hadoop-env.sh:设置Java路径,取消JAVA_HOME注释并修改为:

    export JAVA_HOME=/export/servers/jdk
    
  • core-site.xml:配置HDFS默认文件系统和临时目录:

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://hadoop01:9000</value> <!-- NameNode地址 -->
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/export/servers/hadoop/tmp</value> <!-- 临时目录 -->
        </property>
    </configuration>
    
  • hdfs-site.xml:配置HDFS副本数、NameNode/DataNode目录:

    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>3</value> <!-- 副本数(集群节点≥3时设为3) -->
        </property>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:/export/servers/hadoop/tmp/dfs/name</value> <!-- NameNode元数据目录 -->
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:/export/servers/hadoop/tmp/dfs/data</value> <!-- DataNode数据目录 -->
        </property>
    </configuration>
    
  • mapred-site.xml(需先复制模板文件mapred-site.xml.template):配置MapReduce运行框架为YARN:

    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    
  • yarn-site.xml:配置YARN资源管理器及Shuffle服务:

    <configuration>
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop01</value> <!-- ResourceManager地址 -->
        </property>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value> <!-- Shuffle服务 -->
        </property>
    </configuration>
    
  • slaves文件:指定Slave节点列表(每行一个主机名):

    hadoop02
    hadoop03
    

    分发slaves文件至所有节点:scp slaves hadoop02:/export/servers/hadoop/etc/hadoop/

3. SSH免密登录配置
  • 在Master节点(hadoop01)生成SSH密钥:ssh-keygen -t rsa -P ""(直接回车,默认保存至~/.ssh/id_rsa)。
  • 将公钥复制到所有节点(包括自身):
    ssh-copy-id hadoop01
    ssh-copy-id hadoop02
    ssh-copy-id hadoop03
    
  • 验证免密登录:ssh hadoop02ssh hadoop03(无需输入密码)。

三、启动集群

1. 格式化NameNode

仅在首次启动时执行,用于初始化HDFS元数据:

hdfs namenode -format

(注意:格式化会清除原有数据,生产环境需谨慎。)

2. 启动HDFS

在Master节点执行以下命令,启动HDFS相关进程(NameNode、DataNode):

start-dfs.sh

查看进程是否启动:jps(Master节点应看到NameNodeSecondaryNameNode;Slave节点应看到DataNode)。

3. 启动YARN

在Master节点执行以下命令,启动YARN相关进程(ResourceManager、NodeManager):

start-yarn.sh

查看进程是否启动:jps(Master节点应看到ResourceManager;Slave节点应看到NodeManager)。

四、集群验证

1. Web界面检查
  • HDFS Web界面:http://hadoop01:9870(查看NameNode状态、DataNode列表)。
  • YARN Web界面:http://hadoop01:8088(查看ResourceManager状态、集群资源使用情况)。
2. 命令行检查
  • 查看HDFS文件系统信息:hdfs dfsadmin -report(查看DataNode数量、存储容量)。
  • 查看YARN节点列表:yarn node -list(查看NodeManager状态)。
3. 运行示例程序

使用Hadoop自带的WordCount示例验证集群功能:

# 创建输入目录并上传文件
hdfs dfs -mkdir -p /input
hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /input

# 运行WordCount程序
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.4.1.jar wordcount /input /output

# 查看输出结果
hdfs dfs -cat /output/part-r-00000

若输出单词统计结果,则说明集群搭建成功。

注意事项

  • 权限问题:确保Hadoop安装目录及数据目录的权限正确(如/export/servers/hadoop属主为hadoop用户)。
  • 防火墙关闭:若未开启防火墙,可跳过;若开启,需放行Hadoop相关端口(如9000、50070、8088)。
  • 数据目录清理:首次格式化前,需删除hadoop.tmp.dir指定的临时目录(如/export/servers/hadoop/tmp),避免元数据冲突。

0