MapRuduce详解

本文深入探讨MapReduce,这是一个用于大规模数据处理的分布式计算框架。介绍了MapReduce的执行流程,包括单机计算、Hadoop计算流程,详细阐述了Map、Shuffle、Reduce等关键步骤的工作原理,并提供了代码实践示例。
摘要由CSDN通过智能技术生成

一、介绍

MapReduce是一个用于处理海量数据的分布式计算框架
优点:

  • 编程模型+基础架构
  • 能够变编写在数百甚至上千台机器上运行的程序
  • 自动并行化分布
  • 容错(如果一台服务器宕机,作业可以由其他服务器完成)
  • 程序/作业调度、状态检查和监控

缺点:

  • MapReduce过于底层,编写Map,Reduce函数较为困难
  • 不是所有算法都能用MapReduce实现
  • 不适合实时响应的需求

二、执行流程

2.1 单机计算

在这里插入图片描述
单机简单计算数据流程:
读取数据,对数据进行逻辑处理,write模块对处理后的数据进行输出,固化到本地磁盘上。

2.2 Hadoop计算流程

在这里插入图片描述
(1)输入和拆分
Input data:数据输入,都是存储在HDFS中的。
InputFormat:MR框架基础类之一,进行数据格式化操作,分为两部分:数据分割(Data Split)和记录读取器(Record Reaer)。
Data Split:多条记录的集合构成split,每个split包含后一个Block中开头部分(解决记录跨block的问题)。
Record Reader:每读取一条记录,调用一次map函数,直到split的尾部。
在这里插入图片描述(2)Map映射
把一组键值对映射成一组新的键值对,每条记录调用执行一次map()函数,就会在内存中增加数据。

(3)Shuffle派发(map到reduce)
Shuffle过程是指Mapper产生的直接输出结果,经过一系列的处理,成为最终的Reducer直接输入数据为止的整个过程,这是mapreduce的核心过程。该过程可以分为两个阶段:

  • Mapper端的Shuffle:由Mapper产生的结果并不会直接写入到磁盘中,而是先存储在内存中,当内存中的数据量达到设定的阀值时,一次性写入到本地磁盘中(并不是HDFS)。并同时进行sort(排序)、combine(合并)、partition(分桶)等操作。其中,sort 是把 Mapper产生的结果按照key值进行排序;combine是把key值相同的记录进行合并;partition是把数据均衡的分配给 Reducer。
  • Reducer端的Shuffle:由Mapper和Reducer往往不在同一个节点上运行,所以Reducer需要从多个节点上下载 Mapper的结果数据,并对这些数据进行处理,然后才能被
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值