【Hadoop|MapReduce篇】MapReduce概述

1. MapReduce定义

MapReduce是一个分布式运算程序的编程框架,是用户开发"基于Hadoop的数据分析应用"的核心框架。

MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。

2. MapReduce优缺点

2.1 优点

  • MapReduce易于编程

它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的机器上运行,也就是说你写一个分布式程序,跟写一个简单的串行程序是一模一样的。

  • 良好扩展性

可以动态增加服务器,解决计算资源不够的问题。

  • 高容错性

任何一台机器挂掉,可以将任务转移到其他节点。

  • 适合海量数据计算

几千台服务器共同计算。

2.2 缺点

  • 不擅长实时计算。
  • 不擅长流式计算。
  • 不擅长DAG有向无环图计算。

3. MapReduce核心编程思想

4. MapReduce进程

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

  • MrAppMaster:负责整个程序的过程调度及状态协调。
  • MapTask:负责Map阶段的整个数据处理流程。
  • ReduceTask:负责Reduce阶段的整个数据处理流程。

4.1 Mapper阶段

  • 用户自定义的Mapper要继承自己的父类。
  • Mapper的输入数据是KV对的形式(KV的类型可以自定义)
  • Mapper中的业务逻辑写在map()方法中。
  • Mapper的输出数据是KV对的形式(KV的类型可自定义)
  • map()方法(MapTask进程)对每一个<K,V>调用一次。

Mapper阶段的输入数据是<偏移量,String的序列类型>

输出数据是<String的序列类型,Int的序列类型>

4.2 Reducer阶段

  • 用户自定义的Reducer要继承自己的父类。
  • Reducer的输入数据类型对应Mapper的输出数据类型,也是KV。
  • Reducer的业务逻辑写在reduce方法中
  • ReduceTask进程对每一组相同的<KV>组调用一次reduce方法。

Reducer阶段的输入数据是<String的序列类型,集合类型>

输出数据是<String的序列类型,Int的序列类型>

4.3 Driver阶段

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

  • 获取配置信息,获取job对象实例。
  • 指定本程序的jar包所在的本地路径。
  • 关联Mapper/Reducer业务类。
  • 指定Mapper输出的ky类型。
  • 指定最终输出的数据的kv类型。
  • 指定job的输入原始文件所在的目录。
  • 指定job的输出结果所在的目录。
  • 提交作业。
相关推荐
计算机编程-吉哥6 小时前
大数据毕业设计-基于大数据的NBA美国职业篮球联赛数据分析可视化系统(高分计算机毕业设计选题·定制开发·真正大数据·机器学习毕业设计)
大数据·毕业设计·计算机毕业设计选题·机器学习毕业设计·大数据毕业设计·大数据毕业设计选题推荐·大数据毕设项目
计算机编程-吉哥6 小时前
大数据毕业设计-基于大数据的BOSS直聘岗位招聘数据可视化分析系统(高分计算机毕业设计选题·定制开发·真正大数据·机器学习毕业设计)
大数据·毕业设计·计算机毕业设计选题·机器学习毕业设计·大数据毕业设计·大数据毕业设计选题推荐·大数据毕设项目
RunningShare7 小时前
从“国庆景区人山人海”看大数据处理中的“数据倾斜”难题
大数据·flink
Hello.Reader8 小时前
Flink 执行模式在 STREAMING 与 BATCH 之间做出正确选择
大数据·flink·batch
文火冰糖的硅基工坊11 小时前
《投资-99》价值投资者的认知升级与交易规则重构 - 什么是周期性股票?有哪些周期性股票?不同周期性股票的周期多少?周期性股票的买入和卖出的特点?
大数据·人工智能·重构·架构·投资·投机
Elastic 中国社区官方博客11 小时前
Elasticsearch:使用推理端点及语义搜索演示
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
数据智能老司机12 小时前
数据工程设计模式——冷热数据存储
大数据·设计模式·架构
Hello.Reader15 小时前
Flink 连接器与格式thin/uber 制品、打包策略与上线清单
大数据·flink
隐语SecretFlow15 小时前
【隐私计算科普】如何实现可证明安全?
大数据·开源·边缘计算
lisw0516 小时前
AIoT(人工智能物联网):融合范式下的技术演进、系统架构与产业变革
大数据·人工智能·物联网·机器学习·软件工程