前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop MapReduce简介

Hadoop MapReduce简介

作者头像
WindCoder
发布2020-01-21 16:31:43
7060
发布2020-01-21 16:31:43
举报
文章被收录于专栏:WindCoder

概述

MapReduce作业(job)通常将输入数据集拆分为独立的块,这些块由map任务(map tasks)以完全并行的方式处理。框架对maps的输出(outputs)排序,然后输入到reduce 任务(reduce tasks)。通常,作业的输入和输出都存储在文件系统中。该框架负责调度任务,监控它们并重新执行失败的任务。

通常,计算节点和存储节点是相同的,即MapReduce框架和Hadoop分布式文件系统(请参阅HDFS体系结构指南)在同一组节点上运行。此配置允许框架有效地在已存在数据的节点上调度任务,从而在集群中产生非常高的聚合带宽。

MapReduce框架由一个单独的主(master)ResourceManager,每个集群节点(cluster-node)一个从(slave ) NodeManager和每个应用程序(application)的MRAppMaster组成(参见YARN体系结构指南)。

最低限度,应用程序指明输入/输出位置,并通过实现适当的接口和/或抽象类来提供map和reduce方法。再加上其他作业的参数,就构成了作业配置(job configuration)。然后,Hadoop的 job client 提交作业(jar包/可执行程序等)和配置信息给ResourceManager,后者负责将软件/配置分发给slave,调度任务并监控它们,向作业客户端( job-client)提供状态和诊断信息。

输入与输出

Map/Reduce框架运转在<key, value> 键值对上,也就是说, 框架把作业的输入看为是一组<key, value> 键值对,同样也产出一组 <key, value> 键值对做为作业的输出,这两组键值对的类型可能不同。

框架需要对key和value的类(classes)进行序列化操作, 因此,这些类需要实现 Writable接口。 另外,为了方便框架执行排序操作,key类必须实现 WritableComparable接口。

一个Map/Reduce 作业的输入和输出类型如下所示:

(input) <k1, v1> -> map -> <k2, v2> -> combine -> <k2, v2> -> reduce -> <k3, v3> (output)

Mapper

将输入键值对(key/value pair)映射到一组中间格式的键值对集合。即将键值对通过函数映射成一组新的键值对。

Reducer

Reducer将与一个key关联的一组中间数值集归约(reduce)为一个更小的数值集。即将键值对动key相同的值整合,通过函数映射成新的键值对。

Reducer有3个主要阶段:shuffle、sort和reduce。

Shuffle

Reducer的输入就是Mapper已经排好序的输出。在这个阶段,框架通过HTTP为每个Reducer获得所有Mapper输出中与之相关的分块。

Sort

框架在此阶段按keys(因为不同的映射器可能输出相同的键)对Reducer输入进行分组。

Shuffle和Sort阶段同时发生;

在获取map-outputs时,它们被合并。

Secondary Sort

如果需要中间过程对key的分组规则和reduce前对key的分组规则不同,那么可以通过 JobConf.setOutputValueGroupingComparator(Class)来指定一个Comparator。再加上 JobConf.setOutputKeyComparatorClass(Class)可用于控制中间过程的key如何被分组,所以结合两者可以实现按值的二次排序。

Reduce

如果需要中间过程对key的分组规则和reduce前对key的分组规则不同,那么可以通过 JobConf.setOutputValueGroupingComparator(Class)来指定一个Comparator。再加上 JobConf.setOutputKeyComparatorClass(Class)可用于控制中间过程的key如何被分组,所以结合两者可以实现按值的二次排序。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 输入与输出
  • Mapper
  • Reducer
    • Shuffle
      • Sort
        • Secondary Sort
          • Reduce
          相关产品与服务
          云 HDFS
          云 HDFS(Cloud HDFS,CHDFS)为您提供标准 HDFS 访问协议,您无需更改现有代码,即可使用高可用、高可靠、多维度安全、分层命名空间的分布式文件系统。 只需几分钟,您就可以在云端创建和挂载 CHDFS,来实现您大数据存储需求。随着业务需求的变化,您可以实时扩展或缩减存储资源,CHDFS 存储空间无上限,满足您海量大数据存储与分析业务需求。此外,通过 CHDFS,您可以实现计算与存储分离,极大发挥计算资源灵活性,同时实现存储数据永久保存,降低您大数据分析资源成本。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档