MapReduce 作业

Hadoop 将 MapReduce 作业的输入分成固定大小的片段或者名为输入拆分的“块”。
Hadoop 为每个拆分创建一个映射任务 (Mapper)。
输入拆分(通常是一个 HDFS 块)为拆分中的每个记录运行用户定义的映射函数。
Hadoop 尝试运行数据所在的任务。

映射器任务一次处理一个单独的记录(带有一个键值),并在本地存储中间数据。
框架在映射的输出成为 reducer 任务的输入之前对其进行混洗和排序。
通常,作业的输入和输出都存储在 HDFS 中。

MapReduce

它是一个软件框架,使我们能够编写处理大量数据的应用程序,以可靠且容错的方式在大型商用硬件集群上并行处理。

  • 在 Hadoop 2.0 之前,MapReduce 是在 Hadoop 中处理数据的唯一方法。
  • MapReduce 作业通常将输入数据集拆分为独立的块,这些块由 Map 任务以完全并行的方式处理。
  • 该框架对映射的输出进行排序,然后将其输入到reduce 任务中。
  • 通常,作业的输入和输出都存储在文件系统中。
  • 该框架负责调度任务、监视它们并重新执行失败的任务。
欢迎来到之路教程(on itroad-com)

MapReduce 阶段

在 Hadoop 中,文件由稍后由 MapReduce 中的 Mapper 任务处理的记录组成。
在 HDFS 中,默认的块大小为 64 MB,这意味着存储在文件中的数据被分解为恰好 64 MB 的块。
当文件中的记录跨越块边界时出现问题;也就是说,一个记录包含在两个或者多个 HDFS 块中。
HDFS 不知道文件块中的内容,也无法确定记录何时可能溢出到另一个块中。
为了解决这个问题,Hadoop 使用存储在文件块中的数据的逻辑表示,称为输入拆分。
当 MapReduce 作业客户端计算输入拆分时,它会确定块中第一个完整记录的开始位置和块中最后一个记录的结束位置。

Map

  • 每个 Map 任务通常在单个 HDFS 块(输入拆分)上工作。
  • Map 任务在存储 HDFS 数据块的集群中的从节点上运行(数据局部性)。
  • 呈现给 Map 任务的输入是一个键值对。

Shuffle and Sort

– 对来自 Map 阶段的所有已完成映射器的中间输出数据进行排序和合并

Reduce

– 来自 Shuffle 和 Sort 阶段的中间数据是 Reduce 阶段的输入。

– Reduce 函数(开发人员)生成最终输出。

MapReduce 框架

MapReduce 是一个软件框架,使我们能够编写应用程序,以可靠和容错的方式在大型商用硬件集群上并行处理大量数据。
它与 HDFS 集成并为并行数据处理提供相同的好处.它将计算发送到存储数据的位置。
框架:
– 调度和监控任务,并重新执行失败的任务。

– 向开发人员隐藏复杂的“内务管理”和分布式计算复杂性任务。

map 函数从输入数据生成一系列键值对。
然后通过一个函数减少该数据以组合与等效键关联的所有值。
程序在管理输入数据分区、调度执行和管理通信(包括从机器故障中恢复)的运行时系统上自动并行化和执行。

  • 为了提高效率,记录被分成更小的块,每个块在特定的计算引擎上串行执行。
  • Map 阶段的输出是一组按映射器输出键分组的记录。每组记录都由一个 reducer 处理(同样,这些在逻辑上是并行的)。
  • Reduce阶段的输出是reducer产生的所有记录的并集。

MapReduce 版本 1 (MRv1) 架构

通常,MapReduce(计算)框架和 HDFS(存储)在同一组节点上运行。
这允许框架在存储数据的节点上有效地调度任务,数据局部性,从而导致更好的性能。
MapReduce 1 框架包括:

  • 每个集群一个主 JobTracker 守护进程
  • 每个集群节点一个从属 TaskTracker 守护进程

master 负责在 slave 上调度作业的组件任务,监控它们,并重新执行失败的任务。
从站执行主站请求的任务。
MRv1 仅运行 MapReduce 作业。

与 MapReduce 交互

Hadoop 尝试在同一台服务器上运行 TaskTracker 和 DataNode。
Hadoop 尽最大努力在输入数据驻留在 HDFS 中的节点上运行 map 任务。
这称为数据局部性优化,因为它不使用宝贵的集群带宽。
然而,有时,为映射任务的输入拆分托管 HDFS 块副本(如前面的 HDFS 类中所讨论的)的所有三个节点都在运行其他映射任务;因此,作业调度程序将在与 HDFS 块之一位于同一机架中的节点上定位空闲映射槽。
有时,这是不可能的;因此,使用机架外节点,这导致机架间网络传输。

  • MapReduce 代码可以用 Java、C 和脚本语言编写。

  • 更高级别的抽象(Hive、Pig)支持轻松交互。

  • 代码提交给 Master 节点上的 JobTracker 守护进程,并由 Slave 节点上的 TaskTracker 执行。

MapReduce 架构

  • 主从架构
  • 在 HDFS 中存储数据成本低、容错且易于扩展,仅举几例。
  • MapReduce 与 HDFS 集成,为并行数据处理提供完全相同的好处。
  • 发送数据存储在本地磁盘上的计算
  • 分布式计算的编程模型或者框架。作为开发人员,它对我们隐藏了复杂的“内务管理”任务。
Hadoop MapReduce 框架

这篇博文介绍了 MapReduce 框架,该框架使我们能够以可靠和容错的方式在大型商用硬件集群上编写并行处理大量数据的应用程序。
此外,这篇文章描述了 MapReduce 的架构组件并列出了使用 MapReduce 的好处。

日期:2020-09-17 00:10:57 来源:oir作者:oir