如今,当一个业务或任何计算机相关的操作规模增大到需要多台计算机来处理时,我们会立即将多台计算机联网组成一个整体,以更高效地处理工作负荷。这已经变得非常普遍,以至于数据科学等领域的几乎所有操作现在都由这些联网计算机执行。虽然用这种方式执行复杂的计算任务无疑更高效,但它也非常复杂,因为你需要单独配置每台计算机,然后在执行任务时管理整个网络。这就是 Hadoop 这类程序的用武之地。
Hadoop 是由 Apache 发布的一套工具和程序,它让多台计算机的网络部署和管理变得高效便捷。本文将介绍 Hadoop 的功能、使用场景、优缺点,阐述其架构设计,最后通过分步指南展示如何在 Ubuntu 20.04 上安装 Hadoop,完成这份 2024 年 Hadoop 教程。
什么是 Apache Hadoop?
Hadoop 是由 Apache 驱动的一套工具,十多年来一直在改变网络部署和资源利用的方式。开发者可以充分利用 Hadoop 的资源效率,用现有的计算能力处理复杂任务,无需进行昂贵的硬件升级。Hadoop 包含四个模块:HDFS、YARN、MapReduce 和 Hadoop Common,各自服务于不同的需求。
Hadoop 的强大之处在于它能够灵活地整合现有的计算资源,帮助开发者和组织将分散的计算能力汇聚成一股力量,解决大规模计算难题。没有 Hadoop,这些用户和组织只能通过持续购买更强大的计算机来应对不断增长的需求,成本不菲。
Hadoop 使用场景
现在你了解了 Hadoop 是什么。但它的使用场景在现实中如何应用呢?纸面上理解一个工具是一回事,看到它在实际业务中的价值又是另一回事。下面我会举几个例子,然后再进入 Hadoop 教程的正式内容。
Risk Analysis
如前所述,Hadoop 让你可以将多台计算机的能力整合成一个网络系统,高效地处理和分析大规模数据集,速度远快于传统方法。对任何企业来说,都需要分析和评估风险。Hadoop 在这方面特别有用。许多知名医院都用它来分析不同治疗方案的风险,预测手术结果和患者的健康统计数据。你可以在这里了解更多关于 Hadoop 在医疗领域的应用。
检测安全漏洞
随着网络中联网设备和在用设备的增加,潜在的安全漏洞也随之增多。Hadoop 的核心价值之一在于能够分析大量数据,全面评估业务运营状况,并识别系统中的薄弱环节。
Review Mapping
许多企业依靠产品评价反馈来改进产品或制定新的市场策略。人工处理大量评价文件需要花费很长时间,而 Hadoop 可以通过分布式计算快速处理这些数据,为你节省宝贵的时间。
Market Analysis
谈到市场策略,前面提到的评价映射与分析市场、评估全新产品进入潜力所需的资源数量相比,显得微不足道。这正是 Hadoop 大显身手的另一个场景——它让初创小企业也能用几台计算机在短时间内高效地评估市场。
评估日志文件
随着业务规模扩大,企业面临的一个问题是软件工具的数量会大幅增加。更多的软件意味着更多潜在的bug和故障点,需要专人管理日志文件和处理问题。这通常很耗时。但通过几个简单的步骤,企业可以用Hadoop快速审查和分析日志文件,找出bug并解决它们。
Hadoop 还有很多其他用途和应用场景,但为了保持本文的重点,我们就不一一讨论了。
Hadoop 架构概览
你可能听说过 Hadoop 及其用途。即使没有,这篇文章到现在也应该为你解释清楚了。但现在你需要深入了解 Hadoop 的构成,以及各个部分如何相互协作。如前所述,Hadoop 有四个通用层。在这部分 Hadoop 教程中,我们将学习 HDFS(Hadoop 分布式文件系统)、YARN(Yet Another Resource Negotiator)、MapReduce 和 Hadoop Common。由于 Hadoop Common 的特性相对较少,其核心要点包括 Zookeeper。因此,在本节中,我将用通俗易懂的语言介绍 Hadoop 的高级架构、生态系统及其四个核心部分,然后再讲解如何在 Ubuntu 20.04 上安装 Hadoop。
HDFS
HDFS 是 Hadoop 生态系统中的存储系统,所有 Hadoop 子系统和应用都通过它来访问、传输和保存数据。HDFS 架构的核心特点是,与开源的 Hadoop 本身不同,HDFS 是负责运行单个 Hadoop 集群所有底层操作的文件系统。HDFS 是一个高度可靠的文件系统,它将数据分成 128 MB 的块,并为顺序操作进行优化。
HDFS 在 Hadoop 中的核心作用是以数据架构的形式提供全部数据,这些数据可以通过不同的 namenode 和辅助架构分割成多个部分,用于组织你的数据分析操作。你还可以使用 Journal 架构、QJM、HA、fsimage 和 edit log 文件以及整体日志来追踪数据并执行其他任务。
YARN
YARN 是 Hadoop 的另一个执行分支,用于向 Hadoop 生态系统内的特定应用程序分配所需的计算资源。简而言之,它允许你通过资源管理器为客户端分配这些资源,将其分散到不同节点以处理不同的任务和应用程序。YARN 也有一个类似于 HDFS 中的追踪功能,可以帮助你监控所有已分配的资源和操作。YARN 本身分为三个部分:资源管理器、应用程序主进程和节点管理器。
这三个子系统中的每一个都会在集群、应用和节点级别分别创建新实例。通过 YARN,你不仅可以为不同任务分配资源,还可以随时调整这些资源配置来实现复杂的算法工作流。YARN 的能力不止于此,你经常需要将 YARN 与 HDFS 和 Zookeeper 等其他架构层结合使用,以便分配资源并评估整体系统性能。
Hadoop Mapreduce
Hadoop MapReduce 是 Hadoop 生态系统中的另一个核心组件。在 Ubuntu 上安装 Hadoop 后,你可以利用这个功能让多台计算机以分布式方式高效地处理海量数据。Hadoop MapReduce 的工作原理是这样的:你向程序输入一个大型数据集。这个数据集会被打乱、分解,然后分发到网络中的各台计算机上。接着,使用称为 reducer 的特定协议,将数据简化到最核心的成分。这样的每一个操作都称为一个 Job。
假设你有一个三词句子,作为要用 MapReduce 分析的数据映射。假设这个句子是 Bear Hunt Rabbit。Hadoop MapReduce 会将这个句子分解并归约成三个不同的批次,每个批次包含一个词,然后用这些词与其他任务的类似数据输入进行新的组合,最终生成一个同质化的数据批次,去除了不必要的数据,便于分析。
Zookeeper
Zookeeper 是 Hadoop 生态系统的另一个重要组件,在 Hadoop 2.0 版本发布后开始广泛使用。Zookeeper 的核心作用是协调单个 Hadoop 实例中不同操作之间的运行。因此,Zookeeper 通常与 YARN 的 Resource Manager 和 Hadoop 的各种 HDFS 功能配合使用。在这些操作中,Zookeeper 的主要职责是识别和排除潜在的故障点。为此,它使用两种工具:ZKFailoverController 和 Zookeeper Quorum。
在这些流程中,Hadoop架构中由其他组件管理的数据节点被分类为活跃的namenode,由用户监督。随后,每个namenode都会在Zookeeper的上述两个子系统中接受检查。这样做是为了找出问题所在,识别潜在的故障。
在 Ubuntu 20.04 上安装 Hadoop – 分步指南
了解了 Hadoop 架构之后,现在我们来进入核心内容:如何在 Ubuntu 20.04 上安装 Hadoop,这是本教程的最后一部分。在开始逐步安装指南之前,我们先来看看需要满足的条件。需要注意的是,这份指南同样适用于 Ubuntu 18.04。
Prerequisites
在 Ubuntu 上安装 Hadoop 的前置要求很简单。你需要一台配备 Ubuntu 的计算机,具有 root 访问权限,可以本地访问或通过 VPS 服务器远程访问。对于前置程序,确保已安装 Java 11 和 SSH。如果还没有安装,请逐条运行以下命令进行安装:
sudo apt update && sudo apt upgrade -y
sudo apt install openssh-server openssh-client -y
sudo apt install openjdk-11-jdk -y
至于许可证,你不需要任何许可证,因为 Hadoop 是免费的开源软件。这就是你需要的全部。让我们继续第一步。
步骤 1:为 Hadoop 创建非 Root 用户
使用以下命令为你的 Hadoop 创建一个非 root 用户。这是我们在下载和安装 Hadoop 之前需要完成的预配置步骤之一:
sudo adduser hdoop
su - hdoop
步骤 2:配置 SSH 密钥
现在我们需要在 Ubuntu 上安装 Hadoop。使用你刚创建的 Hadoop 用户,建立 SSH 连接。运行以下命令生成 SSH 密钥对并保存:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
密钥生成后,使用以下命令将其标记为 authorized_keys 并将它们保存到你的 SSH 目录中:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
现在运行以下命令,确保你的 SSH 连接拥有所有必需的权限:
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
确认更改后,您就可以随时使用创建的用户轻松连接到本地主机:
ssh localhost
步骤 3:在 Ubuntu 上下载并安装 Hadoop
您可以访问 Apache Hadoop 网站 查看版本列表及其最近的更新日志。选择您喜欢的版本,您将获得一个链接,可以使用以下命令在 Ubuntu 上下载并安装 Hadoop。这里我选择版本 3.3.6。如有必要,将 '3.3.6' 替换为最新稳定版本:
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
下载完成后,使用此命令完成提取和安装过程:
tar xzf hadoop-3.3.6.tar.gz
sudo mv hadoop-3.3.6 /usr/local/hadoop
sudo chown -R hdoop:hdoop /usr/local/hadoop
步骤 4:配置 Hadoop 环境
Set JAVA_HOME in /usr/local/hadoop/etc/hadoop/hadoop-env.sh:
echo 'export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")' | sudo tee -a /usr/local/hadoop/etc/hadoop/hadoop-env.sh
步骤 5:编辑配置文件
使用您的集群设置更新 Hadoop 的 XML 配置文件。
nano /usr/local/hadoop/etc/hadoop/core-site.xml
步骤 6:格式化 HDFS
初始化 Hadoop 文件系统命名空间。
/usr/local/hadoop/bin/hdfs namenode -format
步骤 7:启动 Hadoop 服务
启动 HDFS 和 YARN 服务。
/usr/local/hadoop/sbin/start-dfs.sh
/usr/local/hadoop/sbin/start-yarn.sh
步骤 8:验证安装
检查运行中的 Java 进程,确认 Hadoop 正在运行。
jps
步骤 9:访问网页界面
打开网络浏览器访问 Hadoop 的 NameNode 和 ResourceManager 界面。
NameNode: http://localhost:9870
ResourceManager: http://localhost:8088
步骤 10:运行 MapReduce 示例
执行示例 MapReduce 任务以验证设置。
/usr/local/hadoop/bin/hdfs dfs -mkdir /input
/usr/local/hadoop/bin/hdfs dfs -put localfile.txt /input
/usr/local/hadoop/bin/hadoop jar
/usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar grep /input /output 'dfs[a-z.]+'
/usr/local/hadoop/bin/hdfs dfs -cat /output/*
步骤 11:设置环境变量
Add Hadoop’s bin and sbin 目录添加到系统 PATH。
echo 'export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin' >> ~/.bashrc
source ~/.bashrc
完成!您已成功在 Ubuntu 20.04 上配置并安装了 Apache Hadoop。
Conclusion
总结来说,在 Ubuntu 20.04 上安装 Hadoop 是一个需要细心和耐心的过程。按照本指南提供的步骤操作,Ubuntu 用户可以充分利用 Hadoop 的强大功能,充分发挥数据分析的潜力。
如果您只是想学习和体验 Hadoop,我建议使用有限分布的单节点部署。VPS 非常适合这个目的。Cloudzy 提供多种 Linux VPS 服务 包括可靠的 Ubuntu VPS 无需复杂配置即可成为完美的 Hadoop 学习环境。价格从每月 $4.95 起,您可以获得自己的 Ubuntu VPS,覆盖 12 个以上地区并提供全天候支持!
显而易见的选择
大多数 Linux 服务器都在使用 Ubuntu,你还在等什么?发现为什么所有人都喜欢 Ubuntu,获取优化的 Ubuntu VPS
获取你的 Ubuntu VPSFAQ
HDFS 和 MapReduce 有什么区别?
虽然 HDFS 和 MapReduce 都属于 Hadoop 生态系统,但它们各自发挥不同的作用。HDFS 是分布式文件系统,用于数据存储和访问。MapReduce 则擅长分解和高效处理大规模数据。
Hadoop 算数据库吗?
Hadoop 不是数据库,尽管这个误解很普遍。Hadoop 是一个分布式文件系统,可以使用互联的计算机网络存储和处理海量数据。它不应该作为传统数据库的直接替代品。
Hadoop 有哪四个主要组件?
Hadoop 由四个核心组件组成:HDFS(Hadoop 分布式文件系统)、YARN(又一个资源协调者)、MapReduce 和 Hadoop Common。此外,有些资源将 ZooKeeper 视为组件,尽管官方并未将其列为核心组件。
Hadoop 通常用在哪些地方?
Hadoop 广泛应用于需要管理、存储、处理和分析大规模数据的各个领域。它为中等规模企业、医疗机构到初创公司等各类组织提供数据驱动的解决方案。