MapReduce

本文介绍了MapReduce作为Hadoop核心框架的重要作用,详细解析了其分布式运算程序的编程框架特性,以及在处理PB级别大数据时的优势和局限性。文章还深入探讨了MapReduce的工作流程,包括输入数据的切割、map函数的执行、shuffle阶段的数据传递和reduce函数的合并过程。
摘要由CSDN通过智能技术生成

一、MapReduce简介

  • 什么是MapReduce?
    Mapreduce 是一个分布式运算程序的编程框架,是用户开发“基于 hadoop 的数据分析 应用”的核心框架。
    Mapreduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的 分布式运算程序,并发运行在一个hadoop 集群上

  • Hadoop的四个组件
    HDFS:分布式存储系统
    MapReduce:分布式计算系统
    YARN: hadoop 的资源调度系统
    Common: 以上三大组件的底层支撑组件,主要提供基础工具包和 RPC 框架等

  • 为什么需要 MapReduce?
    (1) 海量数据在单机上处理因为硬件资源限制,无法胜任
    (2) 而一旦将单机版程序扩展到集群来分布式运行,将极大增加程序的复杂度和开发难度
    (3) 引入 MapReduce 框架后,开发人员可以将绝大部分工作集中在业务逻辑的开发上,而将 分布式计算中的复杂性交由框架来处理
    (4)从而提高开发效率,减轻开发者的负担

  • MapReduce的优点
    1.易于编程
    2.良好的扩展性
    3.高容错性
    4.适合PB级别以上的大数据的分布式离线批处理

  • MapReduce的缺点
    1.难以实时计算(MapReduce处理的是存储在本地磁盘上的离线数据)
    2.不能流式计算(MapReduce设计处理的数据源是静态的)
    3.难以DAG计算MapReduce这些并行计算大都是基于非循环的数据流模型,也就是说,一次计算过程中,不同计算节点之间保持高度并行,这样的数据流模型使得那些需要反复使用一个特定数据集的迭代算法无法高效地运行

二、MapReduce的工作流程

  • input
    MapReduce需要把要执行的大文件数据进行切割(split)
    每一个输入分片(input split)对应一个map任务
    输入分片(input split)存储的并非数据本身而是一个分片长度和一个记录数据位置的数组
    输入分片(input split)和HDFS(hadoop2.0之后)的block(块)关系很密切,HDFS(hadoop2.0之后)的block块的大小默认是128M,如果我们执行的大文件是128x10M,MapReduce会分为10个map任务,每个map任务都存在于它所要计算的block(块)的DataNode上
  • map
    程序员编写的map函数
    因此map函数效率相对好控制
    而且一般map操作都是本地化操作也就是在数据存储节点上进行
  • shuffle
    负责将map生成的数据传递给reduce
    因此shuffle分为在map的执行过程和在reduce的执行过程
  • reduce
    负责shuffle传递过来的数据进行合并
  • output
    最后负责输出reduce中的数据信息
    在这里插入图片描述
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值