MapReduce原理以及使用

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

什么是MapReduce?

MapReduce是一种基于java的分布式计算的处理技术和程序模型。MapReduce算法包含两个重要任务,即Map和Reduce。Map获取一组数据并将其转换为另一组数据,其中各个元素被分解为元组(键/值对)。其次,减少任务,它将地图的输出作为输入,并将这些数据元组组合成一组较小的元组。正如MapReduce名称所暗示的那样,reduce任务总是在map作业之后执行。
MapReduce的主要优点是可以轻松扩展多个计算节点上的数据处理。在MapReduce模型下,数据处理原语称为映射器和缩减器。将数据处理应用程序分解为映射器和缩减器有时是不重要的。但是,一旦我们以MapReduce形式编写应用程序,将应用程序扩展为在群集中运行数百,数千甚至数万台计算机仅仅是配置更改。这种简单的可伸缩性吸引了许多程序员使用MapReduce模型。

算法

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

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

地图阶段 - 地图或映射器的工作是处理输入数据。通常,输入数据采用文件或目录的形式,并存储在Hadoop文件系统(HDFS)中。输入文件逐行传递给映射器函数。映射器处理数据并创建几个小块数据。

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

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

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

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

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

输入和输出(Java Perspective)

MapReduce框架在<key,value>对上运行,也就是说,框架将作业的输入视为一组<key,value>对,并生成一组<key,value>对作为作业的输出,可以想象不同类型。
键和值类应该由框架以序列化方式进行,因此需要实现Writable接口。此外,关键类必须实现Writable-Comparable接口以便于按框架进行排序。MapReduce作业的输入和输出类型- (输入)<k1,v1>→map→<k2,v2>→reduce→<k3,v3>(输出)。

输入 产量
地图 <k1​​,v1> 列表(<k2,v2>)
降低 <k2,list(v2)> 列表(<k3,v3>)
术语

PayLoad - 应用程序实现Map和Reduce功能,并构成作业的核心。
Mapper - Mapper将输入键/值对映射到一组中间键/值对。
NamedNode - 管理Hadoop分布式文件系统(HDFS)的节点。
DataNode - 在进行任何处理之前预先显示数据的节点。
MasterNode - JobTracker运行的节点,接受来自客户端的作业请求。
SlaveNode - 运行Map和Reduce程序的节点。
JobTracker - 计划作业并跟踪分配作业到任务跟踪器。
任务跟踪器 - 跟踪任务并向JobTracker报告状态。
作业 - 程序是跨数据集执行Mapper和Reducer。
任务 - 在一片数据上执行Mapper或Reducer。
任务尝试 - 尝试在SlaveN

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值