![MapReduce运作流程](https://note.wiz.cn/wiz-resource/ac7d9dc4-5f9b-47ff-9799-766fc14154e0/d5518842-0ec5-421c-9749-6538e7addf03/index_files/0.8890651120838433.png)
②经过inputformat组件处理后,文件以<k,v>的形式进入我们自定义的mapper逻辑
③mapper逻辑中输出结果会调用OutPutCollector组件写入环形缓冲区。
④当环形缓冲区的存储达到默认阀值后(80%),调用Spliller组件将内容分区part0-1,且排序(快排算法,外部排序算法,并不是按照k值分区)组成各个part的小文件,后溢写到磁盘文件中。
⑤mapper结束后磁盘中的结果小文件会合并(merge)成大文件(分区且排序,归并算法)。分区partition 0-1;反复进行④⑤环节读取归溢出文件,直至该切片文件全部读取完毕。最终输出的结果文件是带有分区的大的结果文件。
⑥reducer启动后会到不同的map结果文件中下载相同区号(partition0,1)的结果文件,按照相同partion来合并文件,归并排序。再按照k值分组,调用默认的GroupingComparator组件。
⑦reducer再按照k值以<k,v>的形式开始读取一组一组的文件,将读入的内容以<k,v>的形式输入到我们用户自定义的reducer处理逻辑中(比如按照k值迭代各组value)
⑧再按照k值以<k,v>的形式,调用OutPutFormat组件输出到hdfs文件系统中去保存。
备注:原理是内部的排序,最终输出文件并不涉及排序。
有两次形成分区,然后以分区合并文件。
二、combiner应用场景:
使用时不能影响业务逻辑
三、Yarn概述
Yarn是一个资源调度平台,负责为程序提供服务器运算资源,相当于一个分布式的操作系统平台,而mapreduce等运算程序则相当于运行于操作系统之上的应用程序。
1、 yarn并不清楚用户提交的程序的运行机制
2、 yarn只提供运算资源的调度(用户程序向yarn申请资源,yarn就负责分配资源)
3、 yarn中的主管角色叫ResourceManager
4、 yarn中具体提供运算资源的角色叫NodeManager
5、 这样一来,yarn其实就与运行的用户程序完全解耦,就意味着yarn上可以运行各种类型的分布式运算程序(mapreduce只是其中的一种),比如mapreduce、storm程序,spark程序,tez ……
6、 所以,spark、storm等运算框架都可以整合在yarn上运行,只要他们各自的框架中有符合yarn规范的资源请求机制即可
7、 Yarn就成为一个通用的资源调度平台,从此,企业中以前存在的各种运算集群都可以整合在一个物理集群上,提高资源利用率,方便数据共享
四、MR的运行模式:在本地运算,结果成功后打包提交到服务器上执行hadoop jar 命令
//要想运行为集群模式,以下3个参数要指定为集群上的值
/*conf.set("mapreduce.framework.name", "yarn");
![MapReduce运作流程](https://note.wiz.cn/wiz-resource/ac7d9dc4-5f9b-47ff-9799-766fc14154e0/d5518842-0ec5-421c-9749-6538e7addf03/index_files/0.8890651120838433.png)
②经过inputformat组件处理后,文件以<k,v>的形式进入我们自定义的mapper逻辑
③mapper逻辑中输出结果会调用OutPutCollector组件写入环形缓冲区。
④当环形缓冲区的存储达到默认阀值后(80%),调用Spliller组件将内容分区part0-1,且排序(快排算法,外部排序算法,并不是按照k值分区)组成各个part的小文件,后溢写到磁盘文件中。
⑤mapper结束后磁盘中的结果小文件会合并(merge)成大文件(分区且排序,归并算法)。分区partition 0-1;反复进行④⑤环节读取归溢出文件,直至该切片文件全部读取完毕。最终输出的结果文件是带有分区的大的结果文件。
⑥reducer启动后会到不同的map结果文件中下载相同区号(partition0,1)的结果文件,按照相同partion来合并文件,归并排序。再按照k值分组,调用默认的GroupingComparator组件。
⑦reducer再按照k值以<k,v>的形式开始读取一组一组的文件,将读入的内容以<k,v>的形式输入到我们用户自定义的reducer处理逻辑中(比如按照k值迭代各组value)
⑧再按照k值以<k,v>的形式,调用OutPutFormat组件输出到hdfs文件系统中去保存。
备注:原理是内部的排序,最终输出文件并不涉及排序。
有两次形成分区,然后以分区合并文件。
二、combiner应用场景:
使用时不能影响业务逻辑
三、Yarn概述
Yarn是一个资源调度平台,负责为程序提供服务器运算资源,相当于一个分布式的操作系统平台,而mapreduce等运算程序则相当于运行于操作系统之上的应用程序。
1、 yarn并不清楚用户提交的程序的运行机制
2、 yarn只提供运算资源的调度(用户程序向yarn申请资源,yarn就负责分配资源)
3、 yarn中的主管角色叫ResourceManager
4、 yarn中具体提供运算资源的角色叫NodeManager
5、 这样一来,yarn其实就与运行的用户程序完全解耦,就意味着yarn上可以运行各种类型的分布式运算程序(mapreduce只是其中的一种),比如mapreduce、storm程序,spark程序,tez ……
6、 所以,spark、storm等运算框架都可以整合在yarn上运行,只要他们各自的框架中有符合yarn规范的资源请求机制即可
7、 Yarn就成为一个通用的资源调度平台,从此,企业中以前存在的各种运算集群都可以整合在一个物理集群上,提高资源利用率,方便数据共享
四、MR的运行模式:在本地运算,结果成功后打包提交到服务器上执行hadoop jar 命令
//要想运行为集群模式,以下3个参数要指定为集群上的值
/*conf.set("mapreduce.framework.name", "yarn");