09. MapReduce概念+核心思想
MapReduce
分布式运算程序的编程框架
自己处理业务相关代码+自身的默认代码
- 优点:
- 易于编程,只需关心业务逻辑
- 良好扩展性:可动态增加服务器
- 高容错性:可以把没完成的任务转移到其他节点
- 适合海量数据计算(TB/PB)
- 缺点:
- 不擅长实时计算 mysql
- 不擅长流式计算 sparkstreaming flink
- 不擅长DAG有向无环图计算 spark
- 核心思想
- 编程规范
三部分:Mapper、Reducer和Driver- Mapper
- 用户自定义的Mapper要继承自己的父类
- Mapper的输入数据是KV对的形式
- Mapper中的业务逻辑写在map()方法中
- Mapper的输出数据是KV对的形式
- map()方法对每一个KV调用一次
- Reducer
- 用户自定义的Reducer要继承自己的父类
- Reducer的输入数据类型对应Mapper的输出数据类型,也是KV
- Reducer中的业务逻辑写在reduce()方法中
- ReduceTask进程对每一组想用k的
组调用一次reduce()方法
- Driver
相当于YARN集群的客户端,用于提交程序到YARN集群,提交的是封装了MR程序相关运行参数的job对象