算法丨MapReduce

Posted One丨Python

tags:

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


MapReduce


有一种特殊的并行算法正越来越流行,它就是分布式算法。在并行算法只需要两到四个内核时,完全可以在笔记本电脑上运行它,但如果需要数百个内核呢?


在这种情况下,可让算法在多台计算机上运行。MapReduce是一种流行的分布式算法,可以通过流行的开源工具,Apache Hadop来使用它。



映射函数


映射函数很简单,他接受一个数组,并对其中的每个元素执行同样的处理。例如,下面的映射将数组的每个元素翻倍。

arr1 = [1, 2, 3, 4, 5]arr2 = map(lambda x: 2 * x, arr1)print(arr2)
[2, 4, 6, 8, 10]


arr2包含[2, 4, 6, 8, 10],将数组arr1的每个元素都翻倍!将元素翻倍的速度非常快,但如果要执行的操作需要更长时间呢?


# 伪代码arr1 = # A list of URLsarr2 = map(download_page, arr1)

在这个示例中,有一个URL清单,需要下载每个URL指向的页面并将这些内容存储在数组arr2中。


对于每个URL,处理起来都可能需要几秒钟。如果总共有1000个URL,可能耗时几小时!


如果有100台计算机,而map能够自动将工作分配给这些计算机去完成就好了。这样就可同时下载100个页面,下载速度将快得多!这就似乎MapReduce中“映射”部分基本的理念。



归并函数


归并函数可能令人迷惑,其理念是将很多项归并为一项。映射是将一个数组转换为另一个数组。而归并是将一个数组转换为一个元素。

arr1 = [1, 2, 3, 4, 5]arr2 = reduce(lambda x, y: x + y, arr1)print(arr2)
15

在这个示例中,将数组中的所有元素相加:1+2+3+4+5=15!


MapReduce使用这两个简单概念在多台计算机上执行数据查询。数据集很大,包含数十亿行时,使用MapReduce只需几分钟就可获得查询结果,而传统数据库可能要耗费数小时。

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

hadoop的mapreduce常见算法案例有几种

走进大数据丨 MapReduce之数据倾斜

Nature 亮点丨精确预测蛋白结构可以依赖Google吗?DeepMind团队开发新型深度学习算法精确预测蛋白结构

统一观测丨使用 Prometheus 监控 E-MapReduce,我们该关注哪些指标?

大数据学习——MapReduce配置及java代码实现wordcount算法

Fp关联规则算法计算置信度及MapReduce实现思路