简单归纳:Map/Reduce是分布式离线处理的一个框架。 Yarn是Map/Reduce中的一个资源管理器。html
一.图形说明下Map/Reduce结构:apache
官方示意图:框架
另外还能够参考这个:分布式
流程介绍:oop
HDFS首先会把块进行逻辑上切片处理,而后进行Map映射。一个切片对应一个Map映射。学习
由于文件内容有可能一个单词被切到两个文件里面,这样计算就会有问题,因此Map映射时除了第一个切片彻底映射,其他的映射都会从第二行开始映射,而第一行传递给上一个Map处理。 spa
Map程序初始化会设定一个阈值,好比80%,当超过这个值的时候就会就会进行内存溢出。溢出前会进行一个【快速排序】,排完后写入硬盘分区。(不设置阈值,当内存满后,就会阻塞数据继续写入。设定的阈值根据实际状况设定,过小了会增长读写压力,太大了会产生阻塞。)3d
程序能够设置合并操做,当分区数超过设定值后就进行合并。(好比分区>3后)(合并后,相同key的数据就压缩了,拉取的时候就会减小IO)htm
Reduce会检查是否Map完,有一个Map完后就能拉取一次。blog
Reduce拉取的时候会有一个真迭代器和一个假迭代器进行嵌套,好比一组数据 A 1 A 1 A 1 B 1,假迭代器会进行循环而后取下一条数据进行比较看是否相同,相同的话进行累加值,再取下一条,这样下一条下一条的取,知道key不相同时候,结束本组循环,进行下一组循环。 这样A就统计出3,B就统计出1来了。
流程介绍:首先Client请求ResourceManager,而后ResourceManager分配ApplicationMaster,ApplicatoinMaster向ResourceManager请求分配Container。Container一部分执行Map任务,一部分执行Reduce任务。
三.图形说明下Map/Reduce和Yarn在整个Hadoop系统中的位置以及为何产生Yarn:
因为产生了多种计算框架,因此须要一个资源管理器来对资源进行分配使用。