Mapreduce编程

1. MapReduce核心思想

(1)分布式的运算程序往往需要分成只少2个阶段

(2)第一个阶段的MapTask并发实例。完全并行运行,互补相干

(3)第二个阶段的ReduceTask并发实例互不相干,但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出。

(4)MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段,如果用户的业务逻辑非常复杂,只能多个MapReduce程序,串行运行。

2. MapReduce进程

一个完整的MapReduce程序在分布式运行时有三类实例进程

(1)MrAppMaster:复制整个程序的过程调度及状态协调

(2)MapTask:负责Map阶段的整个数据处理流程

(3)ReduceTask:负责Reduce阶段的整个数据处理流程

3. MapReduce编程规范

用户编写的程序分成三个部分:Mapper、Reduce和Driver

1.Mapper阶段:

(1)用户自定义的Mapper要继承自己的父类

(2)Mapper的数据数据是KV对的形式(KV的类型可自定义)

(3)Mapper中的业务逻辑写在map()方法中

(4)Mapper的输出数据是KV对的形式(KV的类型可自定义)

(5)map()方法(MapTask进程)对每一个<K,V>调用一次

2. Reduce阶段

(1)用户自定义的Reduce要继承自己的父类

(2)Reducer的输入数据类型对应Mapper的输出数据类型,也是KV

(3)Reducer的业务逻辑写在reduce()方法中

(4)ReduceTask进程对每一组相同的k的<k,v>组调用一次reduce()方法

3.Driver阶段

相当于YARN集群的客户端,用于提交我们整个程序到YARN 集群,提交的是封装了MapReduce程序相关运行参数的job对象

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值