Apache Hadoop 是一个基于 Java 编写的免费开源软件框架,通过 MapReduce 技术用于实现大数据的分布式存储与处理。它通过将海量数据集分割为大型数据块,并将其分布在集群中的多台计算机上,从而处理超大规模的数据集。
Hadoop模块的设计理念并非依赖标准操作系统集群,而是通过在应用层检测和管理故障,从而在软件层面为用户提供高可用性服务。
基础Hadoop框架由以下模块构成:
Hadoop Common:包含支持其他 Hadoop 模块的通用库和实用工具集。
Hadoop 分布式文件系统(HDFS):基于 Java 的分布式文件系统,可在标准硬件上存储数据,为应用程序提供超高吞吐量。
Hadoop YARN:管理计算集群上的资源,并调度用户应用程序。
Hadoop MapReduce:基于 MapReduce 编程模型的大规模数据处理框架。
本文将介绍如何在 Rocky Linux 8 上安装 Apache Hadoop,该教程同样适用于 CentOS 8、OpenEuler 等其他基于 RHEL 8 的发行版。
准备工作
1. 安装 OpenJDK 8
对于绝大多数 Hadoop 部署(包括 2.x 晚期和 3.x 版本),OpenJDK 8 是目前经过最广泛验证、兼容性最佳且最稳定的选择。相较而言,Oracle JDK 因其许可模式已不再是社区标准,而 OpenJDK 11 及更高版本则普遍面临 Hadoop 自身及其生态系统(如 Spark、Hive)的兼容性问题。因此本教程将使用 OpenJDK 8 进行演示:
$ sudo dnf install java-1.8.0-openjdk wget -y检查 Java 版本:
$ java -version输出内容如下:
openjdk version "1.8.0_462"
OpenJDK Runtime Environment (build 1.8.0_462-b08)
OpenJDK 64-Bit Server VM (build 25.462-b08, mixed mode)2. 创建 Hadoop 用户
出于安全考虑,推荐使用普通用户(非 root 用户)来运行 Apache Hadoop。因此,我们首先创建一个名为 hadoop 的专用用户,并为其设置密码。以 root 用户权限执行以下命令:
$ sudo useradd -m -d /home/hadoop -s /bin/bash hadoop
$ passwd hadoop # 为 Hadoop 用户设置密码3. 配置 SSH 免密登录
Hadoop 集群的守护进程(Daemons)之间需要通过 SSH 进行通信。为了实现自动化和无缝操作,我们需要配置“无密码 SSH”登录功能。
首先,切换到新创建的 hadoop 用户:
su - hadoop接下来,作为 hadoop 用户执行以下步骤:
# 1. 生成 SSH 密钥对(公钥和私钥)
# 在提示时,直接一直按回车键接受默认路径和空密码 (passphrase)
$ ssh-keygen
# 2. 将公钥追加到本机的“授权密钥”列表中
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 3. 设置正确的权限,确保 authorized_keys 文件的安全
# (只有所有者可读写)
$ chmod 600 ~/.ssh/authorized_keys3. 验证连接
完成上述配置后,验证 hadoop 用户免密登录是否生效:
$ ssh 127.0.0.1如果第一次通过 SSH 连接到该主机,系统会提示确认主机的真实性。输入 yes,将该主机的公钥指纹添加到已知主机列表(~/.ssh/known_hosts)中。
此时会看到类似以下的输出:
[hadoop@HXCN-Rokey8-Hpv ~]$ ssh 127.0.0.1
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:jdKvVL4YEH0GFVKc0lPtsWSrAGckeviAsTtQWPbulaM.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Tue Oct 21 20:05:30 2025当您看到最后的登录信息并返回命令提示符,且全程未被要求输入密码时,即表示 SSH 免密登录已成功配置。
安装 Hadoop
Hadoop 集群类型
Hadoop 通常根据其部署和运行方式,分为三种模式(或类型):
1. 本地(独立)模式 (Local/Standalone Mode)
这是 Hadoop 的默认运行模式,也是最简单的模式。
特点:它在单个 Java 虚拟机 (JVM) 进程中运行所有组件。它不使用 Hadoop 的分布式文件系统 (HDFS),而是使用本机的本地文件系统进行读写。
用途:这种模式主要用于开发和调试 MapReduce 程序的业务逻辑,因为它启动速度快,不需要复杂的配置,便于开发者快速验证代码。
2. 伪分布式模式 (Pseudo-Distributed Mode)
这是一种在单台机器上模拟真实集群环境的模式。
特点:Hadoop 的所有守护进程(如 NameNode, DataNode, ResourceManager, NodeManager)都在同一台机器上运行,但它们是作为独立的 Java 进程启动的。这种模式会真正使用 HDFS。
用途:用于测试和验证 Hadoop 的完整功能,包括 HDFS 的使用、MapReduce 任务的执行流程以及配置文件的正确性。配置的“无密码 SSH”就是为这种模式(以及完全分布式模式)做准备。
3. 完全分布式模式 (Fully-Distributed Mode)
这是 Hadoop 在生产环境中的标准部署模式。
特点:Hadoop 运行在一个由多台物理机器组成的真实集群上。集群中包含专用的主节点(Master Nodes,运行 NameNode 和 ResourceManager)和多个从节点(Slave Nodes,运行 DataNode 和 NodeManager)。数据被真正地“分布式”存储在不同的从节点上,计算任务也会被分发到这些节点上并行处理。
用途:用于处理大规模数据集的实际生产环境,它提供了高可用性、容错能力和强大的横向扩展能力。
本教程将以伪分布式模式(Pseudo-Distributed Mode)配置 Hadoop。
1. 下载 Hadoop
访问 Apache Hadoop 的官方网站以下载最新版本的 Apache Hadoop(务必根据文档中的说明选择适合生产环境的版本);或者,您也可以在终端中使用以下命令来下载 Hadoop v3.4.2:
$ wget https://dlcdn.apache.org/hadoop/common/hadoop-3.4.2/hadoop-3.4.2.tar.gz
$ tar -xzvf hadoop-3.4.2.tar.gz
$ mv hadoop-3.4.2 hadoop国内用户也可以使用阿里云开源镜像站进行下载,速度更快:
$ wget https://mirrors.aliyun.com/apache/hadoop/common/hadoop-3.4.2/hadoop-3.4.2.tar.gz2. 设置环境变量
在 ~/.bashrc 文件中设置环境变量。根据实际需求,修改文件中的 JAVA_HOME 和 HADOOP_HOME 变量值:
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.462.b08-2.el8.x86_64/
export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin使用下面命令将环境变量应用到当前的终端会话中:
$ source ~/.bashrc3. 配置 Hadoop
未完待续。。。。。