Mr
Last updated
Was this helpful?
Last updated
Was this helpful?
完整的 MapReduce
框架包含两部分:
算法逻辑层面,即 map
、shuffle
以及 reduce
三个重要算法组成部分;
实际运行层面,即算法逻辑作业在分布式主机中是以什么形式和什么流程运行的,自 MapReduce version2
以后,作业都是提交给 YARN
进行管理
P.S.
2.0之前只有MapReduce的运行框架,那么它里面有只有两种节点,一个是master,一个是worker。master既做资源调度又做程序调度,worker只是用来参与计算的。 但是在2.0之后加入了YARN集群,Yarn集群的主节点承担了资源调度,Yarn集群的从节点中会选出一个节点(这个由redourcemanager决定)用作类似于2.0之前的master的工作,来进行应用程序的调度。
资源调度: 处理程序所需要的cpu、内存资源,以及存储数据所需要的硬盘资源都是resourcemanager去分配的。
一切都是从最上方的user program开始的,user program链接了MapReduce库,实现了最基本的Map函数和Reduce函数。 图中执行的顺序都用数字标记了。
mapreduce就是分治法的一种,将输入进行分片,然后交给不同的task进行处理,然后合并成最终的解。 mapreduce实际的处理过程可以理解为Input->Map->Sort->Combine->Partition->Reduce->Output。
以上详细内容可见:https://cloud.tencent.com/developer/article/1023958
这篇文章[http://oserror.com/distributed/mapreduce/] 还举了一些mapreduce的例子,比较通俗易懂。
2.0之后,MapReduce框架通常由三个操作(或步骤)组成:
Map:每个工作节点将 map
函数应用于本地数据,并将输出写入临时存储。主节点确保仅处理冗余输入数据的一个副本。
Shuffle:工作节点根据输出键(由 map
函数生成)重新分配数据,对数据映射排序、分组、拷贝,目的是属于一个键的所有数据都位于同一个工作节点上。
Reduce:工作节点现在并行处理每个键的每组输出数据。
流程图:
详细内容参考:
https://juejin.im/post/5bb59f87f265da0aeb7118f2
https://www.cnblogs.com/sykblogs/articles/10021703.html
https://www.cnblogs.com/sss4/p/10443497.html