什么是 Hadoop12 Feb 2025 | 7 分钟阅读  Hadoop 是 Apache 的一个开源框架,用于存储、处理和分析数据量非常大的数据。Hadoop 使用 Java 编写,不是 OLAP(在线分析处理)。它用于批处理/离线处理。它被 Facebook、雅虎、谷歌、推特、领英等公司使用。此外,它可以通过简单地添加集群中的节点来扩展。 Hadoop 的模块 - HDFS:Hadoop 分布式文件系统。 谷歌发布了它的 GFS 论文,基于此开发了 HDFS。它指出文件将被分成块并存储在分布式架构中的节点中。
- Yarn:Yet another Resource Negotiator 用于作业调度和管理集群。
- Map Reduce:这是一个框架,它帮助 Java 程序使用键值对对数据进行并行计算。Map 任务接收输入数据并将其转换为可以在键值对中计算的数据集。Map 任务的输出由 reduce 任务使用,然后 reducer 的输出给出所需的结果。
- 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 分布式文件系统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 文件系统论文。  让我们关注 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 的存储空间。
| 2012 | Apache Hadoop 1.0 版本发布。 | 2013 | Apache Hadoop 2.2 版本发布。 | 2014 | Apache Hadoop 2.6 版本发布。 | 2015 | Apache Hadoop 2.7 版本发布。 | 2017 | Apache Hadoop 3.0 版本发布。 | 2018 | Apache Hadoop 3.1 版本发布。 |
Hadoop 上的 MCQ1. 确定准确的陈述。 - 所有选项都是正确的。
- 应用程序可以使用 Reporter 报告进度。
- Hadoop MapReduce 框架为作业的 InputFormat 创建的每个 InputSplit 创建一个 map 任务。
- 中间的、已排序的输出始终以直接的格式保存(键长度、键、值长度、值)。
答案:a 解释: 报告器可用于修改计数器并在应用程序级别设置状态消息。
2. 以下哪个阶段是同时进行的? - Shuffle 和 Map
- Reduce 和 Sort
- 所有选项都正确
- Shuffle 和 Sort
答案:d 解释: Shuffle 和 Sort 步骤同时进行,合并 Map 输出,因为它们被获取了。
3. 收集来自 MapReduce 框架的 Mapper 或 Reducer 的数据输出的能力通过 _ _ _ _ _ _ 得到扩展。 - Partitioner
- OutputCollector
- 记者
- 所有选项都正确
答案:b 解释: Hadoop MapReduce 包含一组通常有用的 Mapper、Reducer 和 Partitioner。
4. ________ 方法用于将 JobConf 发送到 Mapper 实现的任务。 - configure
- configure
- configurable
- 无
答案:c 解释: 为了初始化它们,修改了 JobConfigurable.configure 函数。
5. 排序后的 Mapper 的输出用作 _______ 的输入。 - 全部正确
- Shuffle
- Reducer
- Mapper
答案:c 解释: 在 Shuffle 阶段,框架使用 HTTP 检索每个 Mapper 输出的相应段。 |