什么是 Hadoop

12 Feb 2025 | 7 分钟阅读
What is Hadoop

Hadoop 是 Apache 的一个开源框架,用于存储、处理和分析数据量非常大的数据。Hadoop 使用 Java 编写,不是 OLAP(在线分析处理)。它用于批处理/离线处理。它被 Facebook、雅虎、谷歌、推特、领英等公司使用。此外,它可以通过简单地添加集群中的节点来扩展。

Hadoop 的模块

What is Hadoop
  1. HDFS:Hadoop 分布式文件系统。 谷歌发布了它的 GFS 论文,基于此开发了 HDFS。它指出文件将被分成块并存储在分布式架构中的节点中。
  2. Yarn:Yet another Resource Negotiator 用于作业调度和管理集群。
  3. Map Reduce:这是一个框架,它帮助 Java 程序使用键值对对数据进行并行计算。Map 任务接收输入数据并将其转换为可以在键值对中计算的数据集。Map 任务的输出由 reduce 任务使用,然后 reducer 的输出给出所需的结果。
  4. Hadoop Common:这些 Java 库用于启动 Hadoop,并被其他 Hadoop 模块使用。

Hadoop 架构

Hadoop 架构是文件系统、MapReduce 引擎和 HDFS(Hadoop 分布式文件系统)的集合。MapReduce 引擎可以是 MapReduce/MR1 或 YARN/MR2。

一个 Hadoop 集群由一个主节点和多个从节点组成。主节点包括 Job Tracker、Task Tracker、NameNode 和 DataNode,而从节点包括 DataNode 和 TaskTracker。

Hadoop Architecture

Hadoop 分布式文件系统

Hadoop 分布式文件系统 (HDFS) 是 Hadoop 的一个分布式文件系统。它包含一个主/从架构。该架构由一个执行主节点角色的 NameNode 和多个执行从节点角色的 DataNode 组成。

NameNode 和 DataNode 都能够运行在商品机上。Java 语言用于开发 HDFS。因此,任何支持 Java 语言的机器都可以轻松运行 NameNode 和 DataNode 软件。

NameNode

  • 它是 HDFS 集群中存在的一个主服务器。
  • 由于它是一个节点,因此它可能成为单点故障的原因。
  • 它通过执行诸如打开、重命名和关闭文件等操作来管理文件系统命名空间。
  • 它简化了系统的架构。

DataNode

  • HDFS 集群包含多个 DataNode。
  • 每个 DataNode 包含多个数据块。
  • 这些数据块用于存储数据。
  • DataNode 的责任是读取和写入来自文件系统客户端的请求。
  • 它根据 NameNode 的指令执行块的创建、删除和复制。

Job Tracker

  • Job Tracker 的作用是从客户端接受 MapReduce 作业,并通过使用 NameNode 处理数据。
  • 作为响应,NameNode 向 Job Tracker 提供元数据。

Task Tracker

  • 它充当 Job Tracker 的从节点。
  • 它从 Job Tracker 接收任务和代码,并将该代码应用于文件。此过程也可以称为 Mapper。

MapReduce 层

当客户端应用程序将 MapReduce 作业提交给 Job Tracker 时,MapReduce 就出现了。作为响应,Job Tracker 将请求发送给适当的 Task Tracker。有时,TaskTracker 失败或超时。在这种情况下,作业的该部分将被重新安排。

Hadoop 如何运作?

  • Hadoop 实现了通过商品硬件集群分发数据集。并行处理是在多台服务器上同时进行的。
  • Hadoop 接收来自软件客户端的数据输入。HDFS 管理分布式文件系统和元数据。之后,MapReduce 转换和处理数据。最后,作业通过 YARN 分布在计算机集群中。

Hadoop 提供哪些优势?

  • 可扩展性:Hadoop 是高效存储和处理海量数据的主要技术之一。它通过使用分布式计算范式来实现这一点,该范式允许快速数据处理和通过添加计算节点快速扩展。
  • 低价格:Hadoop 是一个经济实惠的解决方案,用于大数据管理和存储,因为它是一个开源框架,具有庞大的工具生态系统,可在商品硬件上运行。
  • 适应性:因为 Hadoop 在存储数据之前不需要对其进行预处理,因此组织可以存储他们喜欢的数据量,并在以后使用它。这种数据存储的灵活性是可能的。
  • 弹性:由于 Hadoop 是一种分布式计算范式,它提供了容错和系统弹性,允许在硬件节点发生故障时将工作负载转移到其他节点。为了加强防范硬件或软件故障的风险,存储在一个 Hadoop 集群上的数据会在系统中的其他节点上进行复制。

Hadoop 带来了哪些困难?

  • MapReduce 的复杂性和约束:MapReduce 是一种文件密集型技术,对于复杂任务(例如交互式分析工作)来说可能很难使用。用 Java 编写 MapReduce 例程也是必要的,并且可能存在很大的学习曲线。由于在 MapReduce 生态系统中,许多组件服务于多种用途,因此可能很难选择要使用的工具。
  • 安全性:由于 Hadoop 管理如此庞大的数据库,数据安全性和敏感性可能会成为问题。为了帮助开发人员保护 Hadoop 中的数据,已经开发了一个用于身份验证、加密、审计和配置的工具生态系统。
  • 管理和治理:Hadoop 缺乏一些用于标准化和管理数据以及确保数据质量的强大工具。
  • 人才缺口:Hadoop 中存在已知的技能差距,就像在许多其他编程领域一样。找到拥有所有必要 Java 编程硬件、操作系统和 MapReduce 能力的开发人员可能具有挑战性。此外,由于学习曲线很高,掌握 MapReduce 的最佳实践和环境可能对新手程序员来说具有挑战性。

Hadoop 的历史

Hadoop 于 2002 年由 Doug Cutting 和 Mike Cafarella 创立。它的起源是 Google 发布的 Google 文件系统论文。

History of Hadoop

让我们关注 Hadoop 的历史,步骤如下:-

  • 2002 年,Doug Cutting 和 Mike Cafarella 开始致力于一个项目,Apache Nutch。这是一个开源网络爬虫软件项目。
  • 在研究 Apache Nutch 时,他们正在处理大数据。为了存储这些数据,他们必须花费大量成本,这成为了该项目的后果。这个问题成为 Hadoop 出现的重要原因之一。
  • 2003 年,谷歌推出了一个名为 GFS(谷歌文件系统)的文件系统。它是一个专有的分布式文件系统,旨在提供对数据的有效访问。
  • 2004 年,谷歌发布了关于 Map Reduce 的白皮书。这项技术简化了对大型集群的数据处理。
  • 2005 年,Doug Cutting 和 Mike Cafarella 引入了一个新的文件系统,称为 NDFS(Nutch 分布式文件系统)。该文件系统还包括 Map reduce。
  • 2006 年,Doug Cutting 离开了谷歌,加入了雅虎。基于 Nutch 项目,Dough Cutting 引入了一个名为 Hadoop 的新项目,该项目的文件系统称为 HDFS(Hadoop 分布式文件系统)。Hadoop 的第一个版本 0.1.0 在今年发布。
  • Doug Cutting 以他儿子的玩具大象的名字命名了他的项目 Hadoop。
  • 2007 年,雅虎运行了两个 1000 台机器的集群。
  • 2008 年,Hadoop 成为在 900 节点集群上 209 秒内对 1 太字节数据进行排序的最快系统。
  • 2013 年,Hadoop 2.2 发布。
  • 2017 年,Hadoop 3.0 发布。
年份事件
2003谷歌发布了论文,谷歌文件系统 (GFS)。
2004谷歌发布了关于 Map Reduce 的白皮书。
2006
  • Hadoop 推出。
  • Hadoop 0.1.0 发布。
  • 雅虎部署了 300 台机器,并在今年内达到了 600 台机器。
2007
  • 雅虎运行了 2 个 1000 台机器的集群。
  • Hadoop 包含 HBase。
2008
  • YARN JIRA 开放
  • Hadoop 成为在 900 节点集群上 209 秒内对 1 太字节数据进行排序的最快系统。
  • 雅虎集群每天加载 10 太字节的数据。
  • Cloudera 作为 Hadoop 发行商成立。
2009
  • 雅虎运行了 17 个 24,000 台机器的集群。
  • Hadoop 变得足够强大,可以对一个 PB 进行排序。
  • MapReduce 和 HDFS 成为单独的子项目。
2010
  • Hadoop 增加了对 Kerberos 的支持。
  • Hadoop 运行 4,000 个节点,存储 40 PB 数据。
  • Apache Hive 和 Pig 发布。
2011
  • Apache Zookeeper 发布。
  • 雅虎拥有 42,000 个 Hadoop 节点和数百 PB 的存储空间。
2012Apache Hadoop 1.0 版本发布。
2013Apache Hadoop 2.2 版本发布。
2014Apache Hadoop 2.6 版本发布。
2015Apache Hadoop 2.7 版本发布。
2017Apache Hadoop 3.0 版本发布。
2018Apache Hadoop 3.1 版本发布。

Hadoop 上的 MCQ

1. 确定准确的陈述。

  1. 所有选项都是正确的。
  2. 应用程序可以使用 Reporter 报告进度。
  3. Hadoop MapReduce 框架为作业的 InputFormat 创建的每个 InputSplit 创建一个 map 任务。
  4. 中间的、已排序的输出始终以直接的格式保存(键长度、键、值长度、值)。
 

答案:a

解释: 报告器可用于修改计数器并在应用程序级别设置状态消息。


2. 以下哪个阶段是同时进行的?

  1. Shuffle 和 Map
  2. Reduce 和 Sort
  3. 所有选项都正确
  4. Shuffle 和 Sort
 

答案:d

解释: Shuffle 和 Sort 步骤同时进行,合并 Map 输出,因为它们被获取了。


3. 收集来自 MapReduce 框架的 Mapper 或 Reducer 的数据输出的能力通过 _ _ _ _ _ _ 得到扩展。

  1. Partitioner
  2. OutputCollector
  3. 记者
  4. 所有选项都正确
 

答案:b

解释: Hadoop MapReduce 包含一组通常有用的 Mapper、Reducer 和 Partitioner。


4. ________ 方法用于将 JobConf 发送到 Mapper 实现的任务。

  1. configure
  2. configure
  3. configurable
 

答案:c

解释: 为了初始化它们,修改了 JobConfigurable.configure 函数。


5. 排序后的 Mapper 的输出用作 _______ 的输入。

  1. 全部正确
  2. Shuffle
  3. Reducer
  4. Mapper
 

答案:c

解释: 在 Shuffle 阶段,框架使用 HTTP 检索每个 Mapper 输出的相应段。


下一主题Hadoop 安装