1. MapReduce 的概念
MapReduce 是一个分布式运算程序的编程框架,是用户开发“基于 hadoop 的数据分析应用”的核心框架;
MapReduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个 hadoop 集群上。
2. 为什么要 MapReduce
(1) 海量数据在单机上处理因为硬件资源限制,无法胜任;
(2) 而一旦将单机版程序扩展到集群来分布式运行,将极大增加程序的复杂度和开发难度;
(3) 引入 MapReduce 框架后,开发人员可以将绝大部分工作集中在业务逻辑的开发上,而将分布式计算中的复杂性交由框架来处理。
(4) mapreduce 分布式方案考虑的问题
A、运算逻辑要不要先分后合?
B、程序如何分配运算任务(切片)?
C、两阶段的程序如何启动?如何协调?
D、整个程序运行过程中的监控?容错?重试?
分布式方案需要考虑很多问题,但是我们可以将分布式程序中的公共功能封装成框架,让开发人员将精力集中于业务逻辑上。而 MapReduce 就是这样一个分布式程序的通用框架。
3. MapReduce 的核心思想
上图简单的阐明了 map 和 reduce 的两个过程或者作用,虽然不够严谨,但是足以提供一个大概的认知,map 过程是一个蔬菜到制成食物前的准备工作,reduce 将准备好的材料合并进而制作出食物的过程。
(1) 分布式的运算程序往往需要分成至少2个阶段;
(2) 第一个阶段的 maptask 并发实例,完全并行运行,互不相干;
(3) 第二个阶段的 reduce task 并发实例互不相干,但是他们的数据依赖于上一个阶段的所有 maptask 并发实例的输出;
(4) MapReduce 编程模型只能包含一个map阶段和一个 reduce 阶段,如果用户的业务逻辑非常复杂,那就只能多个 MapReduce 程序,串行运行。
本文是在本人在学习 Hadoop 时的总结归纳和笔记,如果觉得对你有帮助,不要忘了点赞,评论,转发哟!!!
领取专属 10元无门槛券
私享最新 技术干货