手机版

浅析JavaScript mapreduce的工作原理

时间:2021-10-06 来源:互联网 编辑:宝哥软件园 浏览:

从2003年到2006年,谷歌连续发布了三篇有影响力的文章,分别是2003年在SOSP发布的GFS、2004年在OSDI发布的MapReduce和2006年在OSDI发布的BigTable。GFS与文件系统相关,对以后分布式文件系统的设计具有指导意义。MapReduce是一个用于作业调度的并行计算编程模型。BigTable是一个用于管理结构化数据的分布式存储系统,它建立在GFS、Chubby和SSTable等Google技术之上。许多谷歌应用程序使用这三种技术,如谷歌搜索、谷歌地球和谷歌分析。因此,这三项技术也被称为谷歌技术的“三宝”。今天D哥教一把斧头磨,给了MapReduce一个“熟练又熟练的解决方案”!MapReduce简介MapReduce是一个编程模型,也是一个算法模型的相关实现,用于处理和生成非常大的数据集。用户首先创建一个Map函数来处理基于键/值对的数据集,并在中间输出基于键/值对的数据集。然后,创建一个Reduce函数来合并所有具有相同中间键值的中间值。一图胜千言。我们用下图来说明MapReduce:(9500 . 163.com)。

正如编程实践所说,“实践带来真正的知识”。它是骡子或马。把它拉出来走就行了。因此,如果你真的想理解这个原理,那么自己写代码、自己实践就是最后一句话。最近和几个朋友一起学习JavaScript,所以对JavaScript比较关注。昨天在网上闲逛的时候,惊讶的发现居然有人用JavaScript实现MapReduce算法。然后我转过来和大家分享一下,加上一些我自己对水貂的介绍,希望能帮助大家理解MapReduce。代码实现如下:复制代码如下: var Job={//待处理数据:data: ['很高兴在这里见到您。本网站致力于“‘诗’和使诗成为可能的人”、“诗人和他们的读者”。FamousPoetsAndPoems.com是一个免费的诗歌网站。在我们的网站上,您可以找到大量的“‘631多位诗人的诗歌和语录集’‘阅读并欣赏诗歌’‘我也唱美国’‘我是黑暗的兄弟’‘他们派我去厨房吃饭’‘有人来时’‘但我会笑’‘吃得好’‘长得强壮’‘明天’‘我会在餐桌旁’‘有人来时’‘没有人敢’‘对我说’‘在厨房吃饭’‘然后’‘除此之外’,他们会看到我有多美’‘感到羞耻’‘我也是, am America'],//用空格分隔数据中的每个字符串,//并将其“重组”为{key: words,value33601}格式的对象。 对象数组map : function(line){ varsplits=line . split(');var temp=[];for(var I=0;isplits.lengthI){ temp . push({ key : splits[I],value : 1 });}返回温度;},//统计每个单词在‘data’(data)reduce :函数(allsteps)中出现的次数{ var result={ };for(var I=0;iallSteps.lengthI){ var step=all steps[I];结果[step.key]=结果[step.key]?(结果[step . key]1): 1;}返回结果;}、//初始化,也是运行的入口。init :函数(){ var all steps=[];for(var I=0;ijo . data . length;I) {//如果这里可以用多线程调用Job.map函数会更现实。all steps=all steps . concat(job . map(job . data[I]);}//美中不足,这里不能调用多线程的Job.reduce函数?var result=job . reduce(all steps)console . log(JSON . stringify(result));} };//Job //开始执行Job . init();复制这些代码,直接粘贴到浏览器的Console中,或者放入HTML文件中,用浏览器打开,在控制台输出中可以看到如下结果:这篇文章发表后,有网友“咆哮”:“一个连多线程都没有的js,MapReduce做什么?”其实这个问题是D哥瓜发现的。看到这段代码的解释后,D . Guage想知道JavaScript是否不是一个单一的进程。如何模拟MapReduce?在仔细阅读代码并单步调试后,它更证实了D Guage的观点。(关于D Guage的问题已经在代码中注释了。然而,转念一想,这些并不影响我们对MapReduce原理的理解。这只是一个单一的过程,最基本的版本。先了解这一点,再去整多线程可能更容易理解。未完待续,D Guage现在考虑在这个例子的基础上,用Java实现一个多线程版本,这样模拟出来的MapReduce更加逼真。D瓜哥想清楚一些问题后,会发出代码。请向前看!

版权声明:浅析JavaScript mapreduce的工作原理是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。