白话MapReduce

Posted 数据小虾米

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了白话MapReduce相关的知识,希望对你有一定的参考价值。

“十则围之,五则攻之,倍则分之,敌则能战之,不若则能避之”

在大数据相关行业经常会听起MapReduce的名号,简称MR。简言之,MapReduce是一种处理海量数据的计算模式。

大多数人对于MR既熟悉又陌生,熟悉是因为经常听起,但又较少接触海量数据运算场景,所以又感到陌生。

然而,如果了解了MR背后的原理,或许便可掀开这层“神秘的面纱”。

本质上,MR是一种“分而治之”的算法思想,而这种计算思想是一种很“传统”求解问题的思路。

比如说,当你遇到一个较复杂的问题,即数一下图书馆内不同书架里所有书的数量,怎么处理?

直观的想法是把每个书架里的书都数一遍记个数,然后再把每个书架的数做个求和。

很简单对吧?恭喜你,你已经了解了MR思想的本质了。

所谓分而治之,即把复杂的问题分解为子问题,然后逐一求解子问题,再把子问题的结果汇总起来得到复杂问题的解。

在上述例子中,我们自然的将数整个图书馆的数分解为数每个书架的书,每个书架的书当然需要一本本数,然后再把每个书架的书数汇总起来,便得到了问题的答案。

过程中,数每个书架上书的操作称为map操作,而将不同书架书汇总的操作称为reduce操作。

可以看到,map操作的输入是一组分割好实体的集合,而输出是每个实体结算的结果,是一个“多对多”的过程;reduce操作的输入是map操作的输出,而输出则是问题的答案,即一个“多对一”的过程。

直观的,我们可以找多个人对图书馆的不同书架进行数书的map操作,可显著的减少问题的求解效率。如果将人对应为不同的计算机,便是Hadoop等大数据引擎的MapReduce求解计算方式。

聪明的朋友可以发现,实际上生活中很多问题并不能够转变为“分而治之”形式求解,或者转换过程较为复杂。这种情况下,Spark大数据引擎通过更抽象的转换和执行算子扩展,大大简化了代码开发的工作量,我们后续再进行拆解介绍。

总而言之,MapReduce是一种针对大规模数据进行特定场景问题快速处理的一种方法,很多高层语言如Hive SQL,会自动将基本数据操作转变为MapReduce任务执行。

值得注意的是,并非所有场景都需要海量数据高效计算,但MR背后“分而治之”的思想在生活中适当的场景中却可以更广泛的应用。

以上是关于白话MapReduce的主要内容,如果未能解决你的问题,请参考以下文章

大数据框架之Hadoop:MapReduceMapReduce框架原理——数据清洗(ETL)

大数据框架之Hadoop:MapReduceMapReduce框架原理——Join多种应用

Spark API 详解/大白话解释 之 groupBy、groupByKey

软件架构上的白话理论

抽奖喜迎新春,白话白话区块链祝大家虎年大吉

白话设计模式四单例模式(Singleton)