作者:幻好
起源:恒生 LIGHT 云社区
基本概念
MapReduce 是一个分布式运算程序的编程框架,通过它能将用户将编写好的程序提交,并发运行 在一个 Hadoop
集群上。
MapReduce 外围性能是将用户编写的业务逻辑代码和自带默认组件整合成一个残缺的分布式运算程序。
MapReduce 是一个编程模型,分为两个阶段:Map 和 Reduce。输出的数据会先分块,而后由 Map 进行解决,最初输入到 Reduce 中。
能够将它了解成对数据整顿,而后演绎的一个过程。
外围算法
MapReduce 的算法打算通常分三个步骤组成:
Map
:映射或映射器的工作是解决输出数据。每个工作节点将map
函数利用于本地数据,并将输入写入长期存储。Shuffle
:工作节点依据输入键重新分配数据,对数据映射排序、分组、拷贝,目标是属于一个键的所有数据都位于同一个工作节点上。Reduce
:工作节点当初并行处理每个键的每组输入数据,并将后果数据存储到 HDFS。
运行流程
MapReduce 通常由以下几个步骤组成:
- input : 读取零碎中的文本文件;
- splitting : 将文件依照行进行拆分,能失去的
K1
行数,V1
示意对应行的文本内容; - mapping : 并行将每一行依照空格进行拆分,拆分失去的
List(K2,V2)
,其中K2
示意关键词,V2
的值为 1,代表呈现 1 次; - shuffling:因为
mapping
的操作可能在不同的机器上并行处理的,就得通过shuffling
操作将雷同key
值的数据散发到同一个节点下来合并,这样能力统计出最终的后果,此时失去K2
为主键,List(V2)
为可迭代汇合,V2
就是 Mapping 中的 V2; - Reducing : 对于每个工作节点上的
K2
键值对进行Reduce()
操作,最终输入。
MapReduce 编程模型中
splitting
和shuffing
操作都是由框架实现的,须要咱们本人编程实现的只有mapping
和reducing
,这也就是 MapReduce 这个称说的起源。
优缺点
长处
- 能将大规模数据分多个节点并行计算,缩小数据计算所需的工夫;
- 将计算挪动到数据的地位进行,升高网络老本;
毛病
- 只能进行离线计算,不能进行流式计算和实时计算;
- 过程后果会存到磁盘,减少了 I / O 的负荷;
总结
MapReduce 最外围的还是将用户开发的程序,可能发到 Hadoop 上运行并执行,可能动静的去解决提交的工作,通过并行的形式缩小计算工夫,获取最终的计算结果。