MapReduce流程图
{区内聚合运算(要求符合交换律和结合律),context.write(NK,NV),SHUFFLE,分组器分组
同样的K的V, 去往同一个迭代器
,run方法,HashPartitioner分区器,文件系统,map(K,V,CTX),A1,A1,C1,C1,Spiller, Merger,Fetcher,读文件夹,根据文件大小和个数, 计算任务切片,初始化MapTask,MapOutputBuffer,A1,A1,A1,A1,A1,C1,C1,C1,reduce(K,V,CTX),1号区,B1,B1,D1,FileOutputFormat,META,IntputSplit,JOB提交(带参数,文件输入路径),Grouping
Comparter
,TextIntputFormat,A1,A1,C1,B1,B1,B1,D1,D1,迭代器,A1,A1,A1,C1,C1,Key为B, varlues为(1,1,1,1,1),comparTo(K1,K2),根据不同格式输出结果,快排,合并,B1,B1,B1,B1,B1,D1,D1,D1,map方法处理业务逻辑,0号区,数据库,Sequence
OutputFormat
,ReducerTask,collect收集存到环形缓冲区中,超过80%空间,溢出本地磁盘, ,RecordReader方法
读数据一行返回一对KV,collect(NK,NV,partition),reduce聚合处理业务,KV,Key为A, varlues为(1,1,1,1,1),...,GroupingComparter,Merger,context.write(K,V),MapTask,Combinner可选,新的KV,根据分区器(Hashcode模与N), 打上标记(去往不同的分区)}