课程表

Hadoop课程

工具箱
速查手册

Hadoop MapReduce概述

当前位置:免费教程 » 大数据/云 » Hadoop

MapReduce简介

MapReduce是一种基于java的分布式计算的处理技术和程序模型。MapReduce采用分布式计算方式指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

MapReduce概述

map: (K1, V1) → list(K2, V2) combine: (K2, list(V2)) → list(K2, V2) reduce: (K2, list(V2)) → list(K3, V3)

Map输出格式和Reduce输入格式一定是相同的。

算法

MapReduce算法包含两个重要任务,即Map和Reduce。Map采用一组数据并将其转换为另一组数据,其中各个元素被分解为元组(键/值对)。其次,reduce任务,它将map的输出作为输入,并将这些数据元组合并成一组较小的元组。作为MapReduce名称的顺序,reduce任务总是在map作业之后执行。

MapReduce的主要优点是易于在多个计算节点上扩展数据处理。在MapReduce模型下,数据处理原语称为映射器和缩减器。将数据处理应用程序分解为映射器和简化器有时并不重要。但是,一旦我们以MapReduce形式编写应用程序,扩展应用程序以在集群中运行数百,数千甚至数万台机器只是一种配置更改。这种简单的可扩展性是吸引许多程序员使用MapReduce模型的原因。

  • 通常MapReduce范例是基于将计算机发送到数据所在的位置!

  • MapReduce程序在三个阶段执行,即map阶段,shuffle阶段和reduce阶段。

    • Map 阶段映射或映射器的作业是处理输入数据。一般来说,输入数据是以文件或目录的形式存储在Hadoop文件系统(HDFS)中。输入文件逐行传递到映射器函数。映射器处理数据并创建几个小块的数据。

    • Reduce 阶段这个阶段是Shuffle阶段和Reduce阶段的组合。 Reducer的工作是处理来自映射器的数据。处理后,它产生一组新的输出,将存储在HDFS中。

  • 在MapReduce作业期间,Hadoop将Map和Reduce任务发送到集群中的相应服务器。

  • 该框架管理数据传递的所有细节,例如发出任务,验证任务完成,以及在节点之间复制集群周围的数据。

  • 大多数计算发生在节点上,本地磁盘上的数据减少了网络流量。

  • 完成给定任务后,集群收集并减少数据以形成适当的结果,并将其发送回Hadoop服务器。

输入和输出(Java透视图)

MapReduce框架对<key,value>对进行操作,也就是说,框架将作业的输入视为一组<key,value>对,并生成一组<key,value>对作为作业输出,可能是不同类型。

键和值类应该由框架以序列化的方式,因此,需要实现Writable接口。此外,键类必须实现Writable-Comparable接口,以方便框架进行排序。MapReduce作业的输入和输出类型:(输入)<k1,v1> - > map - > <k2,v2> - > reduce - > <k3,v3>(输出)。

 输入输出
Map<k1, v1>list (<k2, v2>)
Reduce<k2, list(v2)>list (<k3, v3>)

术语

  • PayLoad - 应用程序实现Map和Reduce功能,并形成作业的核心。

  • Mapper- 映射器将输入键/值对映射到一组中间键/值对。

  • NamedNode - 管理Hadoop分布式文件系统(HDFS)的节点。

  • DataNode - 在任何处理发生之前提前呈现数据的节点。

  • MasterNode - JobTracker运行并接受来自客户端的作业请求的节​​点。

  • SlaveNode - Map和Reduce程序运行的节点。

  • JobTracker - 计划作业并跟踪将作业分配给任务跟踪器。

  • Task Tracker - 跟踪任务并向JobTracker报告状态。

  • Job - 程序是跨数据集的Mapper和Reducer的执行

  • Task - 在一个数据片段上执行Mapper或Reducer。

  • Task Attempt - 尝试在SlaveNode上执行任务的特定实例。

基本流程

MapReduce主要是先读取文件数据,然后进行Map处理,接着Reduce处理,最后把处理结果写到文件中

详细流程

多节点下的流程

主要过程

Map Side

Record reader

记录阅读器会翻译由输入格式生成的记录,记录阅读器用于将数据解析给记录,并不分析记录自身。记录读取器的目的是将数据解析成记录,但不分析记录本身。它将数据以键值对的形式传输给mapper。通常键是位置信息,值是构成记录的数据存储块.自定义记录不在本文讨论范围之内.

Map

在映射器中用户提供的代码称为中间对。对于键值的具体定义是慎重的,因为定义对于分布式任务的完成具有重要意义.键决定了数据分类的依据,而值决定了处理器中的分析信息。

Shuffle and Sort

ruduce任务以随机和排序步骤开始。此步骤写入输出文件并下载到本地计算机。这些数据采用键进行排序以把等价密钥组合到一起。

Reduce

reducer采用分组数据作为输入。该功能传递键和此键相关值的迭代器。可以采用多种方式来汇总、过滤或者合并数据。当ruduce功能完成,就会发送0个或多个键值对。

输出格式

输出格式会转换最终的键值对并写入文件。默认情况下键和值以tab分割,各记录以换行符分割。因此可以自定义更多输出格式,最终数据会写入HDFS。类似记录读取,自定义输出格式的知识不在本教程范围内。

转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号