ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Hadoop入门指南之MapReduce介绍

2021-01-28 14:01:46  阅读:189  来源: 互联网

标签:入门 Hadoop 指定 MapReduce ApplicationManager 键值 NodeManager


Hadoop的第二部分就是MapReduce,在介绍完HDFS后,就需要谈到MapReduce了。MapReduce其实生活中大家都接触过,只是不是这个叫法。比如大家参加军训或者集会,需要统计到场人数时,是怎么做的呢。首先把所有人按照部门、方阵等划分成小单位,然后每个单位有个队长一样的人员负责统计自己负责的单位的人数,最后由所有队长汇报给领导,领导汇总后得出一个总人数。这里每个队长数各自单位的人数就是Map,领导听取队长报告汇总人数就是Reduce。这其实就是MapReduce的核心思想。当需要对大量数据进行处理的时候,为了高效快速,Hadoop就会把这些数据切分,切分后的数据分发给节点,由各个节点进行处理,处理完毕后再汇总,最后输出结果。

MapReduce运行在yarn集群中,由ResouceManager和NodeManager组成。ResouceManager有ApplicationManager和ResourceScheduler两个组成部分,而NodeManager会启动MapTask和ReduceTask。相当于ResouceManager就是总指挥部,NodeManager就是各个分队。当用户需要处理任务时,ApplicationManager先启动一个MRAppMaster,MRAppMaster计算完成计算需要的资源,向ResourceScheduler请求资源,得到资源列表后,再要求NodeManager分配资源,之后各个NameNode得到自己要做的一部分MapTask,开始处理,处理完毕后交由NodeManager开启ReduceTask进行汇总,最后将结果提交给ApplicationManager完成处理任务。

在使用Java编程MapReduce时,只需要指定map方法,reduce方法,input、output类型,以及中间的键值类型就可以了,其他都交由框架完成。Map阶段开始之前要设置好InputFormatClass,然后Map会据此将数据切分成键值对<K1,V1>。我们实现一个map方法,写业务逻辑把<K1,V1>转换成<K2,V2>,这里map方法要指定K2和V2的类型。接着开始Shuffle阶段,分为分区、排序、规约、分组,其中规约的英文是Combiner,我的个人理解是合并。分别表示对输入的键值按照一定的逻辑进行分区,按照规则对数据进行排序,对符合相同规则的数据进行合并,对相同key的value进行分组,即组成<K2,[V2,V2,V2....]>的形式。最后就是Reduce阶段,接收Shuffle完成的数据,实现一个reduce方法,把<K2,[V2,V2,V2....]>变为<K3,V3>,根据设置好的OutputFormatClass,将结果输出。

所以除了上面要做的,我们最后要写一个方法,对整个MapReduce过程进行设置,包括了指定InputFormatClass,指定MapClass,指定MapOutputKeyClass、MapOutputValueClass(K2,V2),指定ReducerClass,指定OutputKeyClass、OutputValueClass(K3,V3),指定OutputFormatClass,最后在main方法中运行整个job。

下一篇我们就做一个具体的案例,通过案例来讲解怎么具体去写代码。

标签:入门,Hadoop,指定,MapReduce,ApplicationManager,键值,NodeManager
来源: https://blog.csdn.net/shenjuntao520/article/details/113331336

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有