目录
二、Hadoop YARN(Yet Another Resource Negotiator-另一种资源协调者)
一、Hadoop Mapreduce
1、“分而治之”的思想
""" 简单来说,就是把一个复杂的问题,按照一定的规则分解为等价的小规模的若干部分,然后逐个解决,把各部分的结果整合,组成问题的最终结果。 对于mapreduce来说,代表着任务的进行分成两个阶段:Map阶段和Reduce阶段 1、Map:负责拆分 拆分的前提是这些小任务可以并行计算,彼此之间互相隔离,没有依赖关系 2、Reduce:负责合并 """ # mapreduce处理的数据类型是k,v键值对
""" 1、mapreduce优点:易于编程、扩展性好、容错率高、适合海量数据的离线处理(GB,TB,PB) 2、mapreduce缺点:实时计算性差、不能进行流式计算 流式计算特点是数据是源源不断得计算,并且数据是动态的;而MapReduce作为一个离线计算框架,主要是针对静态数据集得,数据是不能动态变化得。 """
2、mapreduce执行流程
一个完整的MapReduce程序在分布式运行时有三类:
""" 1、MRAppMaster:负责整个MR程序的过程调度及状态协调 2、MapTask:负责map阶段的整个数据处理流程 3、ReduceTask:负责reduce阶段的整个数据处理流程 """
3、阶段组成
-
一个MapReduce编程模型中只能包含一个Map阶段和一个Reduce阶段,或者只有Map阶段;
-
不能有诸如多个map阶段、多个reduce阶段的情景出现;
-
如果用户的业务逻辑非常复杂,那就只能多个MapReduce程序串行运行。
4、MapReduce数据类型
-
注意:整个MapReduce程序中,数据都是以kv键值对的形式流转的;
-
在实际编程解决各种业务问题中,需要考虑每个阶段的输入输出kv分别是什么;
-
MapReduce内置了很多默认属性,比如排序、分组等,都和数据的k有关,所以说kv的类型数据确定及其重要的
5、mapreduce执行的整体流程图
6、map阶段的执行过程
1、第一阶段:
把输入目录下文件按照一定的标准逐个进行逻辑切片,形成切片规划。
默认Split size = Block size(128M),每一个切片由一个MapTask处理。(getSplits)
2、第二阶段:
对切片中的数据按照一定的规则读取解析返回<key,value>对。
默认是按行读取数据。key是每一行的起始位置偏移量,value是本行的文本内容。(TextInputFormat)
3、第三阶段:
调用Mapper类中的map方法处理数据。
每读取解析出来的一个<key,value> ,调用一次map方法。
4、第四阶段:
按照一定的规则对Map输出的键值对进行分区partition。默认不分区,因为只有一个reducetask。
分区的数量就是reducetask运行的数量。
5、第五阶段:
Map输出数据写入内存缓冲区,达