{"action":"created","comment":{"url":"https://api.github.com/repos/xitu/gold-miner/pulls/comments/77449945","id":77449945,"diff_hunk":"@@ -1,27 +1,26 @@\n > * 原文地址：[Collaborative Map-Reduce in the Browser](https://www.igvita.com/2009/03/03/collaborative-map-reduce-in-the-browser/)\n * 原文作者：[Ilya Grigorik](https://www.igvita.com/)\n * 译文出自：[掘金翻译计划](https://github.com/xitu/gold-miner)\n-* 译者：\n+* 译者：[mypchas6fans] (https://github.com/mypchas6fans)\n * 校对者：\n \n-After immersing yourself into the field of distributed computing and large data sets you inevitably come to appreciate the elegance of [Google's Map-Reduce framework](http://en.wikipedia.org/wiki/MapReduce). Both the generality and the simplicity of its _map_, _emit_, and _reduce_ phases is what makes it such a powerful tool. However, while Google has made the theory public, the underlying software implementation remains closed source and is arguably one of their biggest competitive advantages ([GFS](http://labs.google.com/papers/gfs.html), [BigTable](http://labs.google.com/papers/bigtable.html), etc). Of course, there is a multitude of the open source variants ([Apache Hadoop](http://hadoop.apache.org/core/), [Disco](http://discoproject.org/), [Skynet](http://skynet.rubyforge.org/), amongst many others), but one can't help but to notice the disconnect between the elegance and simplicity of the theory and the painful implementation: custom protocols, custom servers, file systems, redundancy, and the list goes on! Which begs the question, how do we lower the barrier?\n+在分布式计算和海量数据中摸爬滚打了很久之后，你一定会感谢优雅的 [Google's Map-Reduce framework](http://en.wikipedia.org/wiki/MapReduce)。它的 _map_ ，_emit_ 和 _reduce_ 模块既通用又简洁，使它成为了一个强有力的工具。但是虽然 Google 公开了论文，底层的软件实现仍然是闭源的，而且可以说是他们最大的竞争力之一（[GFS](http://labs.google.com/papers/gfs.html)，[BigTable](http://labs.google.com/papers/bigtable.html)，等等）。当然，现在有很多开源的分支（[Apache Hadoop](http://hadoop.apache.org/core/)，[Disco](http://discoproject.org/)，[Skynet](http://skynet.rubyforge.org/)，以及其他），但是人们难免会注意到，优美简洁的理论和惨痛的实现之间存在的断层：诸如自定义协议，自定义服务器，文件系统，冗余，等等等等。问题来了，我们怎样能把这个差距缩短一点？\n \n-## Massively Collaborative Computation\n+## 大规模并行计算\n \n-After several iterations, false starts, and great conversations with [Michael Nielsen](http://michaelnielsen.org/blog/?page_id=181), a flash of the obvious came: **HTTP + Javascript**! What if you could contribute to a computational (Map-Reduce) job by simply pointing your browser to a URL? Surely your social network wouldn't mind opening a background tab to help you crunch a dataset or two!\n+在我和 [Michael Nielsen](http://michaelnielsen.org/blog/?page_id=181) 进行了多次对话、迭代、犯规之后，一个念头突然闪现出来: **HTTP + Javascript**！如果简单的通过浏览器打开一个 URL 就能为计算任务（ Map-Reduce ）做贡献会怎样？你的社交网络肯定不会介意多开一个后台 tab 帮你压缩一两个数据集！\n \n-![](https://www.igvita.com/posts/09/xbrowsers.png.pagespeed.ic.gtlyz9PZB7.jpg)Instead of focusing on high-throughput proprietary protocols and high-efficiency data planes to distribute and deliver the data, we could use battle tested solutions: HTTP and your favorite browser. It just so happens that there are more [Javascript processors](http://en.wikipedia.org/wiki/JavaScript) around the world (every browser can run it) than for any other language out there - a perfect data processing platform.\n+![](https://www.igvita.com/posts/09/xbrowsers.png.pagespeed.ic.gtlyz9PZB7.jpg) 相比高吞吐率的专有协议和高效的数据通道，我们可以用实战检验过的方法： HTTP 和你的浏览器。而且全世界还有无数的 [Javascript processors](http://en.wikipedia.org/wiki/JavaScript) ，每个浏览器都可以执行，比起其他语言，它是一个完美的数据处理平台。","path":"TODO/collaborative-map-reduce-in-the-browser.md","position":18,"original_position":18,"commit_id":"31dc1ae750e3c98c70eac2583c8e33d7f6ddb204","original_commit_id":"31dc1ae750e3c98c70eac2583c8e33d7f6ddb204","user":{"login":"MAYDAY1993","id":14831051,"avatar_url":"https://avatars.githubusercontent.com/u/14831051?v=3","gravatar_id":"","url":"https://api.github.com/users/MAYDAY1993","html_url":"https://github.com/MAYDAY1993","followers_url":"https://api.github.com/users/MAYDAY1993/followers","following_url":"https://api.github.com/users/MAYDAY1993/following{/other_user}","gists_url":"https://api.github.com/users/MAYDAY1993/gists{/gist_id}","starred_url":"https://api.github.com/users/MAYDAY1993/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MAYDAY1993/subscriptions","organizations_url":"https://api.github.com/users/MAYDAY1993/orgs","repos_url":"https://api.github.com/users/MAYDAY1993/repos","events_url":"https://api.github.com/users/MAYDAY1993/events{/privacy}","received_events_url":"https://api.github.com/users/MAYDAY1993/received_events","type":"User","site_admin":false},"body":"相比...----与其关注高吞吐率的专有协议和高效的数据通道来分发和传递数据\r\n你的浏览器－－你喜欢的浏览器\r\n而且全世界还有...---而且与其他语言相比，全世界有更多的[Javascript 处理器](http://en.wikipedia.org/wiki/JavaScript) (每个浏览器都能执行)","created_at":"2016-09-04T10:14:51Z","updated_at":"2016-09-04T10:14:51Z","html_url":"https://github.com/xitu/gold-miner/pull/703#discussion_r77449945","pull_request_url":"https://api.github.com/repos/xitu/gold-miner/pulls/703","_links":{"self":{"href":"https://api.github.com/repos/xitu/gold-miner/pulls/comments/77449945"},"html":{"href":"https://github.com/xitu/gold-miner/pull/703#discussion_r77449945"},"pull_request":{"href":"https://api.github.com/repos/xitu/gold-miner/pulls/703"}}},"pull_request":{"url":"https://api.github.com/repos/xitu/gold-miner/pulls/703","id":83749911,"html_url":"https://github.com/xitu/gold-miner/pull/703","diff_url":"https://github.com/xitu/gold-miner/pull/703.diff","patch_url":"https://github.com/xitu/gold-miner/pull/703.patch","issue_url":"https://api.github.com/repos/xitu/gold-miner/issues/703","number":703,"state":"open","locked":false,"title":"基于浏览器的 MapReduce","user":{"login":"mypchas6fans","id":5707530,"avatar_url":"https://avatars.githubusercontent.com/u/5707530?v=3","gravatar_id":"","url":"https://api.github.com/users/mypchas6fans","html_url":"https://github.com/mypchas6fans","followers_url":"https://api.github.com/users/mypchas6fans/followers","following_url":"https://api.github.com/users/mypchas6fans/following{/other_user}","gists_url":"https://api.github.com/users/mypchas6fans/gists{/gist_id}","starred_url":"https://api.github.com/users/mypchas6fans/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mypchas6fans/subscriptions","organizations_url":"https://api.github.com/users/mypchas6fans/orgs","repos_url":"https://api.github.com/users/mypchas6fans/repos","events_url":"https://api.github.com/users/mypchas6fans/events{/privacy}","received_events_url":"https://api.github.com/users/mypchas6fans/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-09-02T06:07:38Z","updated_at":"2016-09-04T10:14:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d0e9e5196ac9c503cc0d9c2528f926fa29a3c8aa","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/xitu/gold-miner/pulls/703/commits","review_comments_url":"https://api.github.com/repos/xitu/gold-miner/pulls/703/comments","review_comment_url":"https://api.github.com/repos/xitu/gold-miner/pulls/comments{/number}","comments_url":"https://api.github.com/repos/xitu/gold-miner/issues/703/comments","statuses_url":"https://api.github.com/repos/xitu/gold-miner/statuses/31dc1ae750e3c98c70eac2583c8e33d7f6ddb204","head":{"label":"mypchas6fans:translate","ref":"translate","sha":"31dc1ae750e3c98c70eac2583c8e33d7f6ddb204","user":{"login":"mypchas6fans","id":5707530,"avatar_url":"https://avatars.githubusercontent.com/u/5707530?v=3","gravatar_id":"","url":"https://api.github.com/users/mypchas6fans","html_url":"https://github.com/mypchas6fans","followers_url":"https://api.github.com/users/mypchas6fans/followers","following_url":"https://api.github.com/users/mypchas6fans/following{/other_user}","gists_url":"https://api.github.com/users/mypchas6fans/gists{/gist_id}","starred_url":"https://api.github.com/users/mypchas6fans/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mypchas6fans/subscriptions","organizations_url":"https://api.github.com/users/mypchas6fans/orgs","repos_url":"https://api.github.com/users/mypchas6fans/repos","events_url":"https://api.github.com/users/mypchas6fans/events{/privacy}","received_events_url":"https://api.github.com/users/mypchas6fans/received_events","type":"User","site_admin":false},"repo":{"id":65430735,"name":"gold-miner","full_name":"mypchas6fans/gold-miner","owner":{"login":"mypchas6fans","id":5707530,"avatar_url":"https://avatars.githubusercontent.com/u/5707530?v=3","gravatar_id":"","url":"https://api.github.com/users/mypchas6fans","html_url":"https://github.com/mypchas6fans","followers_url":"https://api.github.com/users/mypchas6fans/followers","following_url":"https://api.github.com/users/mypchas6fans/following{/other_user}","gists_url":"https://api.github.com/users/mypchas6fans/gists{/gist_id}","starred_url":"https://api.github.com/users/mypchas6fans/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mypchas6fans/subscriptions","organizations_url":"https://api.github.com/users/mypchas6fans/orgs","repos_url":"https://api.github.com/users/mypchas6fans/repos","events_url":"https://api.github.com/users/mypchas6fans/events{/privacy}","received_events_url":"https://api.github.com/users/mypchas6fans/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mypchas6fans/gold-miner","description":"掘金翻译计划，翻译掘金上优质的英文文章","fork":true,"url":"https://api.github.com/repos/mypchas6fans/gold-miner","forks_url":"https://api.github.com/repos/mypchas6fans/gold-miner/forks","keys_url":"https://api.github.com/repos/mypchas6fans/gold-miner/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mypchas6fans/gold-miner/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mypchas6fans/gold-miner/teams","hooks_url":"https://api.github.com/repos/mypchas6fans/gold-miner/hooks","issue_events_url":"https://api.github.com/repos/mypchas6fans/gold-miner/issues/events{/number}","events_url":"https://api.github.com/repos/mypchas6fans/gold-miner/events","assignees_url":"https://api.github.com/repos/mypchas6fans/gold-miner/assignees{/user}","branches_url":"https://api.github.com/repos/mypchas6fans/gold-miner/branches{/branch}","tags_url":"https://api.github.com/repos/mypchas6fans/gold-miner/tags","blobs_url":"https://api.github.com/repos/mypchas6fans/gold-miner/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mypchas6fans/gold-miner/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mypchas6fans/gold-miner/git/refs{/sha}","trees_url":"https://api.github.com/repos/mypchas6fans/gold-miner/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mypchas6fans/gold-miner/statuses/{sha}","languages_url":"https://api.github.com/repos/mypchas6fans/gold-miner/languages","stargazers_url":"https://api.github.com/repos/mypchas6fans/gold-miner/stargazers","contributors_url":"https://api.github.com/repos/mypchas6fans/gold-miner/contributors","subscribers_url":"https://api.github.com/repos/mypchas6fans/gold-miner/subscribers","subscription_url":"https://api.github.com/repos/mypchas6fans/gold-miner/subscription","commits_url":"https://api.github.com/repos/mypchas6fans/gold-miner/commits{/sha}","git_commits_url":"https://api.github.com/repos/mypchas6fans/gold-miner/git/commits{/sha}","comments_url":"https://api.github.com/repos/mypchas6fans/gold-miner/comments{/number}","issue_comment_url":"https://api.github.com/repos/mypchas6fans/gold-miner/issues/comments{/number}","contents_url":"https://api.github.com/repos/mypchas6fans/gold-miner/contents/{+path}","compare_url":"https://api.github.com/repos/mypchas6fans/gold-miner/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mypchas6fans/gold-miner/merges","archive_url":"https://api.github.com/repos/mypchas6fans/gold-miner/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mypchas6fans/gold-miner/downloads","issues_url":"https://api.github.com/repos/mypchas6fans/gold-miner/issues{/number}","pulls_url":"https://api.github.com/repos/mypchas6fans/gold-miner/pulls{/number}","milestones_url":"https://api.github.com/repos/mypchas6fans/gold-miner/milestones{/number}","notifications_url":"https://api.github.com/repos/mypchas6fans/gold-miner/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mypchas6fans/gold-miner/labels{/name}","releases_url":"https://api.github.com/repos/mypchas6fans/gold-miner/releases{/id}","deployments_url":"https://api.github.com/repos/mypchas6fans/gold-miner/deployments","created_at":"2016-08-11T02:12:14Z","updated_at":"2016-08-11T01:15:57Z","pushed_at":"2016-09-02T06:02:12Z","git_url":"git://github.com/mypchas6fans/gold-miner.git","ssh_url":"git@github.com:mypchas6fans/gold-miner.git","clone_url":"https://github.com/mypchas6fans/gold-miner.git","svn_url":"https://github.com/mypchas6fans/gold-miner","homepage":"http://gold.xitu.io","size":14897,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"xitu:master","ref":"master","sha":"e19b0edddcca05901b39a1f77e978d4721997658","user":{"login":"xitu","id":10482599,"avatar_url":"https://avatars.githubusercontent.com/u/10482599?v=3","gravatar_id":"","url":"https://api.github.com/users/xitu","html_url":"https://github.com/xitu","followers_url":"https://api.github.com/users/xitu/followers","following_url":"https://api.github.com/users/xitu/following{/other_user}","gists_url":"https://api.github.com/users/xitu/gists{/gist_id}","starred_url":"https://api.github.com/users/xitu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xitu/subscriptions","organizations_url":"https://api.github.com/users/xitu/orgs","repos_url":"https://api.github.com/users/xitu/repos","events_url":"https://api.github.com/users/xitu/events{/privacy}","received_events_url":"https://api.github.com/users/xitu/received_events","type":"Organization","site_admin":false},"repo":{"id":45512989,"name":"gold-miner","full_name":"xitu/gold-miner","owner":{"login":"xitu","id":10482599,"avatar_url":"https://avatars.githubusercontent.com/u/10482599?v=3","gravatar_id":"","url":"https://api.github.com/users/xitu","html_url":"https://github.com/xitu","followers_url":"https://api.github.com/users/xitu/followers","following_url":"https://api.github.com/users/xitu/following{/other_user}","gists_url":"https://api.github.com/users/xitu/gists{/gist_id}","starred_url":"https://api.github.com/users/xitu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xitu/subscriptions","organizations_url":"https://api.github.com/users/xitu/orgs","repos_url":"https://api.github.com/users/xitu/repos","events_url":"https://api.github.com/users/xitu/events{/privacy}","received_events_url":"https://api.github.com/users/xitu/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/xitu/gold-miner","description":"掘金翻译计划，翻译掘金上优质的英文文章","fork":false,"url":"https://api.github.com/repos/xitu/gold-miner","forks_url":"https://api.github.com/repos/xitu/gold-miner/forks","keys_url":"https://api.github.com/repos/xitu/gold-miner/keys{/key_id}","collaborators_url":"https://api.github.com/repos/xitu/gold-miner/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/xitu/gold-miner/teams","hooks_url":"https://api.github.com/repos/xitu/gold-miner/hooks","issue_events_url":"https://api.github.com/repos/xitu/gold-miner/issues/events{/number}","events_url":"https://api.github.com/repos/xitu/gold-miner/events","assignees_url":"https://api.github.com/repos/xitu/gold-miner/assignees{/user}","branches_url":"https://api.github.com/repos/xitu/gold-miner/branches{/branch}","tags_url":"https://api.github.com/repos/xitu/gold-miner/tags","blobs_url":"https://api.github.com/repos/xitu/gold-miner/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/xitu/gold-miner/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/xitu/gold-miner/git/refs{/sha}","trees_url":"https://api.github.com/repos/xitu/gold-miner/git/trees{/sha}","statuses_url":"https://api.github.com/repos/xitu/gold-miner/statuses/{sha}","languages_url":"https://api.github.com/repos/xitu/gold-miner/languages","stargazers_url":"https://api.github.com/repos/xitu/gold-miner/stargazers","contributors_url":"https://api.github.com/repos/xitu/gold-miner/contributors","subscribers_url":"https://api.github.com/repos/xitu/gold-miner/subscribers","subscription_url":"https://api.github.com/repos/xitu/gold-miner/subscription","commits_url":"https://api.github.com/repos/xitu/gold-miner/commits{/sha}","git_commits_url":"https://api.github.com/repos/xitu/gold-miner/git/commits{/sha}","comments_url":"https://api.github.com/repos/xitu/gold-miner/comments{/number}","issue_comment_url":"https://api.github.com/repos/xitu/gold-miner/issues/comments{/number}","contents_url":"https://api.github.com/repos/xitu/gold-miner/contents/{+path}","compare_url":"https://api.github.com/repos/xitu/gold-miner/compare/{base}...{head}","merges_url":"https://api.github.com/repos/xitu/gold-miner/merges","archive_url":"https://api.github.com/repos/xitu/gold-miner/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/xitu/gold-miner/downloads","issues_url":"https://api.github.com/repos/xitu/gold-miner/issues{/number}","pulls_url":"https://api.github.com/repos/xitu/gold-miner/pulls{/number}","milestones_url":"https://api.github.com/repos/xitu/gold-miner/milestones{/number}","notifications_url":"https://api.github.com/repos/xitu/gold-miner/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/xitu/gold-miner/labels{/name}","releases_url":"https://api.github.com/repos/xitu/gold-miner/releases{/id}","deployments_url":"https://api.github.com/repos/xitu/gold-miner/deployments","created_at":"2015-11-04T03:29:13Z","updated_at":"2016-09-04T09:05:17Z","pushed_at":"2016-09-04T08:14:43Z","git_url":"git://github.com/xitu/gold-miner.git","ssh_url":"git@github.com:xitu/gold-miner.git","clone_url":"https://github.com/xitu/gold-miner.git","svn_url":"https://github.com/xitu/gold-miner","homepage":"http://gold.xitu.io","size":15825,"stargazers_count":3376,"watchers_count":3376,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":622,"mirror_url":null,"open_issues_count":17,"forks":622,"open_issues":17,"watchers":3376,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/xitu/gold-miner/pulls/703"},"html":{"href":"https://github.com/xitu/gold-miner/pull/703"},"issue":{"href":"https://api.github.com/repos/xitu/gold-miner/issues/703"},"comments":{"href":"https://api.github.com/repos/xitu/gold-miner/issues/703/comments"},"review_comments":{"href":"https://api.github.com/repos/xitu/gold-miner/pulls/703/comments"},"review_comment":{"href":"https://api.github.com/repos/xitu/gold-miner/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/xitu/gold-miner/pulls/703/commits"},"statuses":{"href":"https://api.github.com/repos/xitu/gold-miner/statuses/31dc1ae750e3c98c70eac2583c8e33d7f6ddb204"}}}}
{"actor":{"display_login":"MAYDAY1993"}}