MR框架工作流程以及框架限制

本文详细介绍了MapReduce分布式计算框架,包括其split-apply-combine原理、优势(可扩展性、容错、简单易用和灵活性)以及Spark对MR的优化。同时指出了MR框架的局限性,如数据倾斜问题。

分布式计算框架
MapReduce最早是Google提出的一个分布式计算框架,Apache Spark基于MapReduce框架做了优化改进,算法与MR一致,都是旨在使用并行算法来处理和分析大型数据集,加快大数据任务的处理效率。MapReduce框架采用split-apply-combine的方法将一个job划分为几个独立的task来并行处理大量数据,最终为应用程序提供统一输出,主要分为以下三个阶段:
a. Map阶段主要是负责读取和解析处理输入的数据,map函数将逐行接收输入文件并执行过滤和排序的操作。
b. 在Shuffle阶段,worker节点根据输出的key(由map函数产生)重新分配数据,将对应的数据分发给相应的reducer。这样属于同一个key的所有数据都将聚集在同一个工作节点上。
c. 最后的Reduce阶段则汇总属于同一个key的数据做最终的业务逻辑处理。
 


MapReduce框架的核心思想是分而治之(map分,reduce合),并行计算。适用于海量数据查询、数据批处理计算等场景,具有以下优势:
1. 可扩展

在MapReduce框架出现之前行业内大多是通过MPP(Massive Parallel Programming)的方式来增强系统的计算能力,一般是通过复杂且昂贵的硬件来加速计算,譬如高性能计算机和数据库一体机等。

而MapReduce可以水平扩展,能够处理跨数千个节点的海量数据集。随着数据集大小的增加,只需数个廉价的硬件就可以实现可扩展的、高并行的计算能力,可支持PB级别的弹性化数据计算。

2. 容错能力

在容错性方面,由于MapReduce的分布式架构设计,在设计之初即设定了硬件故障的常态性,因此其计算模型设计了大量的容错逻辑,如任务心跳、重试、故障检测、重分布、任务黑/灰名单、磁盘故障处理等机制,覆盖了从JobTracker、TaskTracker到Job、Task和Record级别的从大到小各个层级的故障处理。

比如说每个worker只处理一个file split,而Map和Reduce过程之间通过硬盘进行数据交换,如果某一节点在处理过程中发生故障或出现其他问题,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值