大数据学习之了解MapReduce及MapReduce架构

1. 了解MapReduce

MapReduce是hadoop上开发应用程序的主要的编程框架。只是作为看看客户端(client)把代码程序提交到Yarn平台上,MapReduce jar在Yarn上运行,属于客户端提交的过程,hdfs上传命令。
MapReduce的工作是由Map和Reduce两部分函数构成的。
例如:
‘The dog are the food’
将得到5个jian–值对(key-value)或map:
‘the’:1,‘dog’:1,‘are’:1,‘the’:1,‘food’:1
键值对中的名称是单词,值是这些单词出现的次数。Hadoop将获得的map工作的结果对该结果进行分类整理,并通过一个叫做shuffle的步骤为每一个map创建一个哈希值,并将其分配给reducer。reducer会在输入流中将对所有map中的每一个单词进行汇总,然后在文档中生成单词的分类列表,你可以将map看成是一个从HDFS文件中抽取数据放到map中的过程,将reducer看成是得到map中的输出然后汇总结果的过程。

Map()   映射  
x  --> (x,1)  key,value
y  --> (y,1)
z  --> (z,1)

select col,1 from t;
1   2
2   3
3   4
Reduce() 归约
       key,value
x --> (x,1)  
x --> (x,1)    -->>(x,1+1+1)
x --> (x,1)

y --> (y,1)  -->>(y,1)
sql语句:
select key,sum(value) from t group by key
x 3
y 1
如果是在mysql中想要输出的结果的形式是(key,value)的形式,进行字符串拼接:
select CONCAT("(",col,“1”,")") as newcloumn from t;
(x,1)
(y,1)
(z,1)

2. MapReduce架构 面试题

MR JOB提交到Yarn的工作流程==Yarn的架构设计==Yarn的工作流程
此过程有8个步骤:

  • 1.用户向Yarn的RM提交应用程序,其中包括
    ApplicationMaster程序,启动ApplicationMaster命令等
  • 2.RM首先为该app程序分配第一个container容器,并与对应的NM通信,要求NM在这个Container中启动应用程序的application master
  • 3.App master首先向Apps manager注册,这样的话,我们就可以通过web 8088,查看应用程序的运行状态,且监控它的运行状态
  • 4.ApplicationMaster向Resource Scheduler申请和领取资源
  • 5.一旦ApplicationMaster申请到资源后,便与对应的NM通信,要求它启动任务
  • 6.NM节点启动container容器,运行task任务
  • 7.各个容器的任务,通过rpc向app master汇报自己的状态和进度,以让APP master随时掌握各个任务的运行状态,从而在任务失败时 重启任务。
    那么用户可以通过web界面实时查看应用的当前运行状态
  • 8.app运行完成后,app master向 apps manager注销并关闭
    附图说明:
    大数据学习之了解MapReduce及MapReduce架构

对以上过程进行概括总结

以上过程总的可分为两个阶段:
当用户向Yarn中提交一个应用程序后,Yarn将分为2个阶段运行该应用程序:

  • 第一阶段:启动ApplicationMaster 1-2
  • 第二阶段:由ApplicationMaster创建应用程序,为其申请资源,运行任务,并监控它的整个运行过程,直到运行完成,结束任务 3-8
    在这里要注意的是:Reduce Task和Map Task是不会同时运行在同一个容器中,一个container只对应一个task或者一个ApplicationMaster。
    大数据学习之了解MapReduce及MapReduce架构