Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【函数式编程】MapReduce讲解 #67

Open
Kelichao opened this issue May 8, 2018 · 0 comments
Open

【函数式编程】MapReduce讲解 #67

Kelichao opened this issue May 8, 2018 · 0 comments

Comments

@Kelichao
Copy link
Owner

Kelichao commented May 8, 2018

什么是MapReduce

  • MapReduce是由Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(归纳)”,及他们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。
var arr1 = [1,2,3,4,5,6,7];
var arr2 = [];
arr2 = arr1.map((val) => {
    return val + 1;
});

console.log(arr1);// [1, 2, 3, 4, 5, 6, 7]
console.log(arr2);// [2, 3, 4, 5, 6, 7, 8]

MapReduce为何高效

  • 事实上,每个元素都是被独立操作的,而原始列表没有被更改,因为这里创建了一个新的列表来保存新的答案。所以Map操作是可以高度并行的,这对高性能要求的应用以及并行计算领域的需求非常有用。
    (因为它并没有改变原始值,独立生成一份新数据(如果同一时间边改,边遍历,那完全没有意义)

阐述下并发与并行

  • 你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。
  • 你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
  • 你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。

并发的关键是你有处理多个任务的能力,不一定要同时(排队)。
并行的关键是你有同时处理多个任务的能力。所以我认为它们最关键的点就是:是否是『同时』。

  • 引用自

并发与并行的区别? - Dozer的回答 - 知乎
https://www.zhihu.com/question/33515481/answer/58849148

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant