萑澈
萑澈
发布于 2025-10-21 / 13 阅读
0
0

如何在Rocky Linux 8单节点集群上安装Apache Hadoop

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_keys

3. 验证连接

完成上述配置后,验证 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.gz

2. 设置环境变量

~/.bashrc 文件中设置环境变量。根据实际需求,修改文件中的 JAVA_HOMEHADOOP_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 ~/.bashrc

3. 配置 Hadoop

未完待续。。。。。


评论