MapReduce

1 是什么?

  海量、离线数据里批处理、分布式计算引擎

2 编程组件?

   InputFormat类:分割成多个splits和每行怎么解析。
   Mapper类:对输入的每对<key,value>生成中间结果。
   Combiner类:在map端,对相同的key进行合并。
   Partitioner类:在shuffle过程中,将按照key值将中间结果分为R份,每一份都由一个reduce去完成。
   Reducer类:对所有的map中间结果,进行合并。
   OutputFormat类:负责输出结果格式。

   开发过程就是:拼装以上组件,创建Job,然后执行Job

3 计算过程?

map阶段:  input->split->map()->buffer in memory->partitions->merge in disk 

输入分解task任务,调用map(先写内存,然后溢写磁盘)

reduce阶段:copy->merge->sort->reduce->output

复制map输出到reduce输入(排序、分组、合并),执行reduce逻辑,输出

图解:

 

 

  4 优化点?

     task个数(input split个数 :取决于单个task 对应文件大小)

     map和reduce内存(Jvm参数)

     

posted on 2022-02-15 11:44  爱老虎哟  阅读(35)  评论(0编辑  收藏  举报

导航