如何在……上安装Hadoop Ubuntu下载和安装步骤

⚡ 智能摘要

在 Ubuntu 需要经过两步:首先使用无密码 SSH 在专用系统帐户下解压发行版,然后编辑四个 XML 文件,最后格式化 HDFS 并启动单节点集群。

  • 🔘 前提课程: 跑步 Ubuntu 机器和支持的 Java 开发工具包必须先到位。
  • ☑️ 专用账户: 创建 hadoop_ 组和 hduser_ 帐户,这样守护进程就不会以您的登录用户身份运行。
  • 免密码 SSH: Hadoop 通过 SSH 启动守护进程,因此 ssh localhost 必须无需密码提示即可成功连接。
  • 🧪 四个配置文件: hadoop-env.sh、core-site.xml、mapred-site.xml 和 hdfs-site.xml 包含了本教程中更改的所有设置。
  • 🛠️ 第一次开始: 格式化 NameNode 一次,然后运行 ​​start-dfs.sh 和 start-yarn.sh,并使用 jps 确认五个守护进程。
  • 🧭 版本偏差: 屏幕截图使用的是 Hadoop 2.2.0,因此请对照 Hadoop 3.x 检查版本、端口和属性名称。

如何在……上安装Hadoop Ubuntu

在本教程中,我们将逐步指导您如何在 Linux 系统上安装 Apache Hadoop(Ubuntu这是一个两步过程:首先下载并安装该版本,然后进行配置。

有两个前提条件:

此配置的 Hadoop 3.x 版本说明

本教程中的屏幕截图是在 Hadoop 2.2.0 版本上截取的。虽然当前版本中的步骤顺序没有改变,但部分名称和默认值有所更改。在直接复制任何命令之前,请务必查看下表。

设置或步骤 本教程(Hadoop 2.x) 当前 Hadoop 3.x
发布存档 hadoop-2.2.0.tar.gz hadoop-3.5.0.tar.gz首个稳定的 3.5 版本于 2026 年 4 月 2 日发布。
默认文件系统属性 fs.default.name 散文中, fs.defaultFS 在 XML 中 fs.defaultFS 只要; fs.default.name 已弃用
MapReduce属性 mapreduce.jobtracker.address mapreduce.framework.name 设置 yarn工作Trac一旦 YARN 调度了工作,ker 就不再存在了。
mapred-站点.xml 复制自 mapred-site.xml.template 船舶在 etc/hadoop 已经如此,所以复制步骤是不必要的。
NameNode Web UI 端口 50070 9870
Java Java 6或 Java 7 Java 8或 Java 11

本指南中的其他所有内容在 Hadoop 3 上的行为方式都相同:专用帐户、SSH 密钥、四个配置文件以及启动和停止脚本。

第 1 部分)下载并安装 Hadoop

步骤 1)添加 Hadoop 系统用户

使用以下命令添加 Hadoop 系统用户。

sudo addgroup hadoop_

终端运行 sudo addgroup hadoop_

sudo adduser --ingroup hadoop_ hduser_

adduser 提示正在收集 hduser_ 的详细信息

输入您的密码、姓名和其他详细信息。

注意: 此设置和安装过程中可能出现以下错误。

“hduser 不在 sudoers 文件中。此事件将被报告。”

错误信息:hduser 不在 sudoers 文件中

以root用户身份登录即可解决此错误。

切换到终端中的 root 用户

执行命令

sudo adduser hduser_ sudo

将 hduser_ 添加到 sudo 组

Re-login as hduser_

以 hduser_ 身份重新登录

步骤2)配置SSH

为了管理集群中的节点,Hadoop 需要 SSH 访问权限。

首先切换用户,输入以下命令

su - hduser_

使用 su - hduser_ 切换用户

此命令将创建一个新密钥。

ssh-keygen -t rsa -P ""

ssh-keygen 为 hduser_ 生成 RSA 密钥对

使用此密钥启用对本地计算机的 SSH 访问。

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

将 id_rsa.pub 添加到 authorized_keys 文件中

现在以“hduser_”用户身份连接到本地主机,测试 SSH 设置。

ssh localhost

hduser_ 的 SSH 本地主机会话成功建立

注意: 如果您在执行“ssh localhost”命令时看到以下错误,则说明此系统上可能没有 SSH 服务。

SSH 连接本地主机失败,出现连接被拒绝的错误。

为了解决这个问题

使用以下方法清除 SSH:

sudo apt-get purge openssh-server

安装前最好先进行清除操作。

apt-get purge 正在移除一个已存在的 openssh-server 软件包

使用以下命令安装 SSH:

sudo apt-get install openssh-server

使用 apt-get 安装 openssh-server 软件包

步骤3)下载Hadoop

下一步是从……下载Hadoop。 Apache Hadoop 发布页面.

Apache Hadoop 发布页面列出了所有可用版本

选择稳定

稳定版 Hadoop 的目录列表

选择 tar.gz 文件(而不是以 src 结尾的文件)。

选择 Hadoop tar.gz 二进制文件而不是 src 归档文件。

下载完成后,导航到包含 tar 文件的目录。

终端已打开,并切换到存放已下载 tar 文件的目录。

回车,

sudo tar xzf hadoop-2.2.0.tar.gz

Extrac使用 tar xzf 解压 Hadoop tarball

现在,将 hadoop-2.2.0 重命名为 hadoop。

sudo mv hadoop-2.2.0 hadoop

给前任改名trac将 hadoop-2.2.0 文件夹复制到 hadoop

最后,将文件夹交给新账户。

sudo chown -R hduser_:hadoop_ hadoop

将 hadoop 文件夹的所有权更改为 hduser_ 和 hadoop_

替换为您实际下载的版本 hadoop-2.2.0 以上三个命令。

第 2 部分)配置 Hadoop

步骤 1)修改 ~/.bashrc 文件

将以下几行添加到文件 ~/.bashrc 的末尾。

#Set HADOOP_HOME
export HADOOP_HOME=<Installation Directory of Hadoop>
#Set JAVA_HOME
export JAVA_HOME=<Installation Directory of Java>
# Add bin/ directory of Hadoop to PATH
export PATH=$PATH:$HADOOP_HOME/bin

在 bashrc 文件中添加 HADOOP_HOME、JAVA_HOME 和 PATH 导出项

现在,使用以下命令加载此环境配置。

. ~/.bashrc

正在加载 bashrc 文件,以便新的环境变量生效。

步骤 2)与 HDFS 相关的配置

在文件 $HADOOP_HOME/etc/hadoop/hadoop-env.sh 中设置 JAVA_HOME,如下所示。

hadoop-env.sh 中的默认 JAVA_HOME 行

hadoop-env.sh 在编辑器中打开,显示了 JAVA_HOME 导出信息。

hadoop-env.sh 文件中的 JAVA_HOME 已替换为实际的 JAVA_HOME。 Java 安装路径

$HADOOP_HOME/etc/hadoop/core-site.xml 文件中有两个参数需要设置:

1. 'hadoop.tmp.dir' – 用于指定 Hadoop 将用于存储其数据文件的目录。

2. 'fs.defaultFS' – 此属性指定默认文件系统。同一属性的旧名称 'fs.default.name' 已弃用。

要设置这些参数,请打开 core-site.xml

sudo gedit $HADOOP_HOME/etc/hadoop/core-site.xml

使用以下方式打开 core-site.xml gedit

将以下几行复制到标签。

<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop/tmp</value>
<description>Parent directory for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS </name>
<value>hdfs://localhost:54310</value>
<description>The name of the default file system. </description>
</property>

core-site.xml 文件包含 hadoop.tmp.dir 和 fs.defaultFS 属性

导航到目录 $HADOOP_HOME/etc/hadoop。

在 Hadoop etc/hadoop 配置目录下的终端中

现在,创建 core-site.xml 中提到的目录。

sudo mkdir -p <Path of Directory used in above setting>

mkdir -p 创建 hadoop.tmp.dir 路径

授予目录权限。

sudo chown -R hduser_:Hadoop_ <Path of Directory created in above step>

chown 命令授予 hduser_ 对临时目录的所有权

sudo chmod 750 <Path of Directory created in above step>

对临时目录应用 chmod 750

步骤 3)MapReduce 配置

在开始这些配置之前,让我们先设置 HADOOP_HOME 路径。

sudo gedit /etc/profile.d/hadoop.sh

然后输入

export HADOOP_HOME=/home/guru99/Downloads/Hadoop

hadoop.sh profile 脚本导出 HADOOP_HOME

下一步进入

sudo chmod +x /etc/profile.d/hadoop.sh

使用 chmod +x 命令使 hadoop.sh profile 脚本可执行

退出终端并重新启动。

输入 echo $HADOOP_HOME 以验证路径。

echo $HADOOP_HOME 打印已配置的安装路径

现在复制文件

sudo cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml

将 mapred-site.xml.template 复制到 mapred-site.xml

打开 mapred-site.xml 文件

sudo gedit $HADOOP_HOME/etc/hadoop/mapred-site.xml

使用以下方式打开 mapred-site.xml gedit

在以下设置之间添加以下内容:和标签。

<property>
<name>mapreduce.jobtracker.address</name>
<value>localhost:54311</value>
<description>MapReduce job tracker runs at this host and port.
</description>
</property>

mapred-site.xml 文件包含 MapReduce 作业 tracker 属性

打开 $HADOOP_HOME/etc/hadoop/hdfs-site.xml 文件,如下所示:

sudo gedit $HADOOP_HOME/etc/hadoop/hdfs-site.xml

使用以下命令打开 hdfs-site.xml gedit

在以下位置添加设置和标签。

<property>
<name>dfs.replication</name>
<value>1</value>
<description>Default block replication.</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hduser_/hdfs</value>
</property>

hdfs-site.xml 文件包含 dfs.replication 和 dfs.datanode.data.dir 属性。

创建上述设置中指定的目录。

sudo mkdir -p <Path of Directory used in above setting>
sudo mkdir -p /home/hduser_/hdfs

mkdir -p 创建 DataNode 数据目录

然后授予所有权和权限。

sudo chown -R hduser_:hadoop_ <Path of Directory created in above step>
sudo chown -R hduser_:hadoop_ /home/hduser_/hdfs

chown 命令授予 hduser_ 对 DataNode 数据目录的所有权

sudo chmod 750 <Path of Directory created in above step>
sudo chmod 750 /home/hduser_/hdfs

对 DataNode 数据目录应用 chmod 750

步骤 4)格式化 HDFS

在首次启动 Hadoop 之前,请使用以下命令格式化 HDFS。

$HADOOP_HOME/bin/hdfs namenode -format

hdfs namenode -format 输出格式化新文件系统

步骤 5)启动 Hadoop 单节点集群

使用以下命令启动Hadoop单节点集群。

$HADOOP_HOME/sbin/start-dfs.sh

上述命令的输出结果如下所示。

start-dfs.sh 脚本输出,启动 NameNode 和 DataNode

然后启动 YARN 守护进程。

$HADOOP_HOME/sbin/start-yarn.sh

start-yarn.sh 输出启动 ResourceManager 和 NodeManager

使用“jps”工具,验证所有与Hadoop相关的进程是否都在运行。

jps 输出列出了正在运行的五个 Hadoop 守护进程

如果 Hadoop 已成功启动,jps 输出应列出 NameNode、NodeManager、ResourceManager、SecondaryNameNode 和 DataNode。

步骤 6)停止ping Hadoop的

按相反顺序关闭集群。

$HADOOP_HOME/sbin/stop-dfs.sh

stop-dfs.sh 输出:正在关闭 HDFS 守护进程

$HADOOP_HOME/sbin/stop-yarn.sh

stop-yarn.sh 输出:正在关闭 YARN 守护进程

如何验证Hadoop是否正在运行并修复常见错误

jps 输出确认进程已启动,但无法确认集群是否可用。还需要进行四项额外的检查来解决这个问题。

  • 打开 NameNode Web 界面 http://localhost:9870 (Hadoop 2.x 上的 50070 端口)并确认摘要报告显示有一个活动节点。
  • 打开 ResourceManager 界面 http://localhost:8088 确认 YARN 已接受 NodeManager。
  • 运行 hdfs dfsadmin -report 容量、实时数据节点和任何副本不足的数据块。
  • 写点什么: hdfs dfs -mkdir /test 其次是 hdfs dfs -ls / 证明命名空间接受更改。

大多数初次失败都可归为以下五类之一。

症状 原因 固定
未设置 JAVA_HOME,也找不到 JAVA_HOME。 该变量已在 .bashrc 文件中导出,但未在 hadoop-env.sh 文件中导出。 同时在 hadoop-env.sh 中设置 JDK 的绝对路径
SSH 本地主机连接请求被拒绝(公钥、密码)。 authorized_keys 缺失或权限过大 重新添加 id_rsa.pub 文件,然后对 ~/.ssh/authorized_keys 文件运行 chmod 600 命令。
端口 22 的连接被拒绝 openssh-server 未安装或未运行 安装 openssh-server 并启动 ssh 服务
重新格式化后,jps 中缺少 DataNode。 Cluster 格式化后的 NameNode 与旧 DataNode 目录之间的 ID 不匹配 清空 dfs.datanode.data.dir 文件夹,然后再次格式化
start-dfs.sh:命令未找到 当前 shell 中从未加载过 HADOOP_HOME 和 PATH。 运行 `.~/.bashrc` 或打开一个新的终端。

常见问题

任何积极支持的 Ubuntu LTS 版本(包括 22.04 和 24.04)均可正常工作。Hadoop 3.x 已针对这些版本构建和测试。 Java 8和 Java 11,所以请安装其中一个 JDK;较新的 JDK 版本尚未完全支持,较旧的 JDK 版本也未完全支持。 Java 7 个版本已不再适用。

start-dfs.sh 和 start-yarn.sh 脚本会通过 SSH 启动所有守护进程,即使主机只有本地主机也是如此。如果没有无密码密钥,脚本会在密码提示符处卡住,并且不会启动任何守护进程。

hadoop.tmp.dir 是 Hadoop 用来存放其他临时目录的基本暂存路径。dfs.datanode.data.dir 是 DataNode 存放实际块文件的位置。第二个路径应该指向持久存储,切勿指向 /tmp,否则重启后块文件会丢失。

首次启动前只需格式化一次。重新运行格式化操作会清除命名空间,并导致现有的 DataNode 目录保留旧的集群 ID,这就是为什么 DataNode 随后无法注册并从 jps 输出中消失的原因。

是的,虽然 Windows 需要与版本匹配的 winutils.exe 和 hadoop.dll 本地二进制文件。大多数人通过运行相同的命令来避免这个问题。 Ubuntu 在 WSL 2 中执行步骤,其行为与普通 Linux 主机相同。

对于学习而言,预构建镜像确实可以省去创建用户、SSH密钥和编辑XML文件的麻烦。不过,手动安装一次仍然值得,因为它可以让你了解在实际集群出现故障时,哪个文件控制着哪些设置。

基于 NameNode 和 YARN 指标的机器学习模型可以预测容量限制、发现资源分配不均的作业并及早标记故障磁盘。一些平台还能自动推荐容器大小,从而取代以往需要的大量手动配置调整工作。

Copilot 可以快速生成 core-site.xml 和 hdfs-site.xml 属性块,并记住准确的拼写。请务必对照版本文档验证每个建议,因为它经常会建议一些已弃用的属性,例如 mapreduce.job。tracker.address 或 fs.default.name。

总结一下这篇文章: