Hadoop三大组件之MapReduce

1. 概述

MapReduce是Hadoop内提供的分布式计算的组件,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。

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

MapReduce提供了2个编程接口,Map和Reduce。其中Map接口提供了分散的功能,由服务器分布式对数据进行处理;Reduce接口提供聚合功能,将分布式处理的结果汇总统计

2. 编程思想

在这里插入图片描述

  1. MapReduce运行程序一般需要分成2个阶段:map阶段和reduce阶段。
  2. Map阶段的并发Map Task,完全并行运行,互不相干
  3. Reduce阶段的并发ReduceTask,完全互不相干,但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出

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

3. 执行原理

在这里插入图片描述
如上图,一个Map/Reduce 作业(job) 把输入的数据文件切分为若干独立的数据块,由 map任务(task)以完全并行的方式处理它们。框架会对map的输出先进行排序, 然后把结果输入给reduce任务进行聚合操作。通常作业的输入和输出都会被存储在文件系统中。 整个框架负责任务的调度和监控,以及重新执行已经失败的任务。

  1. 首先将需要执行的需求,分解成多个Map Task和Reduce Task
  2. 将Map Task 和 Reduce Task分配到对应的服务器上去执行

4. 优缺点

优点:

  • 良好扩展性:可以动态增加服务器,解决计算资源不够问题。
  • 高容错性:任何一台机器挂掉,可以将任务转移到其他节点。
  • 适合海量数据计算(TB、PB)几千台服务器共同计算。

缺点:

  • 计算过程存在大量的网络IO和磁盘IO操作,因此处理速度比较慢,只能处理分钟、小时级别任务
  • 不擅长DAG有向无环图
  • 编程复杂,没有直接写SQL
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值