MapReduce编程模型的认识

                                                                             MapReduce编程模型的认识

对于这个问题的探讨是因为我在面试中被问到这个问题:

你觉得MapReduce编程与你在平时的编程上有什么不同呢?

我当时就蒙了,真没有注意到这个基本的认知问题,没回答上来。

下去后开始百度起来了。。。。。。。下面是一些资料和认知。

在百度百科中的解释是:

........概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。”

我们看到的关键字眼是:“函数式编程”、“矢量编程”

如何理解:函数式编程、矢量编程

在百度之前继续看:

“当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。”

对其思想来源可以参考百度百科或其他的参考资料。


“这样我们就可以把MapReduce理解为,把一堆杂乱无章的数据按照某 种特征归纳起来,然后处理并得到最后的结果。Map面对的是杂乱无章的互不相关的数据,它解析每个数据,从中提取出key和value,也就是提取了数据 的特征。经过MapReduce的Shuffle阶段之后,在Reduce阶段看到的都是已经归纳好的数据了,在此基础上我们可以做进一步的处理以便得到 结果。这就回到了最初,终于知道MapReduce为何要这样设计。[3] ”


但是对于函数编程仍然是没有得到认识,此处做出结论是函数式编程是阳春白雪。但是还是想看看其真正的面目:至少感知一下它是个什么东西:

http://www.ibm.com/developerworks/cn/java/j-lo-apachefunctor/

我觉得这篇文章说的很不错的。

函数式编程是一种编程语言向更高抽象阶段发展的自然进化结果。

这让我进一步了解到jdk8已经出现对函数式编程的支持,很高兴,在这里JDK8中的Stream API 与 lambda 块来支持高阶函数。

并且提出函数式编程是一个高阶的方向。

关于MapReduce的认知:我觉得以我现在的水平对其理解仍然只是层面上的,只有对于函数式编程有所理解时才会领略到它的精髓。目前就以这个结尾吧:

MapReduce是分为map阶段和reduce阶段。其中map阶段能够在一堆混杂的数据中按照开发者的意向抽取需要的数据特征,交给reduce函数来归纳输出最终的结果。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值