网络上关于MapReduce的介绍,最权威的就是 Jeffrey Dean
和 Sanjay Ghemawat 的那篇:MapReduce: Simpli ed Data Processing on Large Clusters
您可以到 labs.google.com 上下载该文。
对goole这样需要分析处理海量数据的公司来说,普通的编程方法已经不够用了。于是 google开发了MapReduce。简单来说,语法上MapReduce就像Lisp,使用MapReduce模型你可以指定一个Map方法来处理诸如key/value这样的数据,并生成中间形式的 key/value 对,然后再使用 Reduce方法合并所有相同key的中间 key/value 对生成最终结果。google的MapReduce是运行在数千台机器上的处理TB数据的编程工具。
据说在MapReduce这样的编程模型下,程序可以自动的在集群环境中按照并行方式分布执行。就如同java程序员可以不考虑内存泄露一样,MapReduce程序员也不许要关心海量数据如何被分配到多台机器上,不需要考虑如果参加计算的机器出现故障应该怎么办,不需要考虑这些机器间如何协作共同完成工作的。
举个例子吧:最近我在做贝叶斯论坛垃圾帖屏蔽演示系统 Beta 1 的时候,就需要计算样本数据中每个词语出现的频率。我的计算步骤就是先分词,然后用hash表处理。要是碰到TB的数据,我的赛扬CPU可是吃不消。那么放在MapReduce下面会是什么样子呢?
下面是一个伪实现:
第一步:
map(String key, String value):
// key: 文档名称
// value: 文档内容
for each word w in value:
EmitIntermediate(w, "1");
第二步:
reduce(String key, Iterator values):
// key: 一个词
// values: 关于这个词的频率数据
int result = 0;
for each v in values:
result += ParseInt(v);
Emit(AsString(result));
如果你看过向量空间模型就知道,这就是计算 TF 和 IDF 的语义实现。
Google的WebReduce 包是用C++实现的,在MapReduce: Simpli ed Data Processing on Large Clusters 一文中还包含了一段真实的WebReduce的代码,可以看看,饱饱眼福。
sogou.com 搜索引擎目前的规模:
参数1、每两周代码效率就提高10倍
参数2、数次优化后还能占满4G内存的程序
参数3、操控50台服务器200G内存10T硬盘,每分钟上万个查询
参数4、由2万行配置文件控制,并且用户一次点击就打印出100M日志
分享到:
相关推荐
这是谷歌三大论文之一的 MapReduce: Simplified Data Processing on Large Clusters 英文原文。我的翻译可以见https://blog.csdn.net/m0_37809890/article/details/87830686
《MapReduce: Simplified Data Processing on Large Clusters》这篇论文由Google的研究员Jeffrey Dean和Sanjay Ghemawat撰写,旨在介绍一种名为MapReduce的分布式计算模型。在MapReduce出现之前,Google和其他公司...
MapReduce 模型的应用非常广泛,例如在 Google 的集群上执行 MapReduce 任务,用于处理大量数据的计算,例如降序索引、图示展示的 web 文档、蠕虫采集的每个 host 的 page 数量摘要等等。该模型也可以用于其他领域,...
谷歌的MapReduce实现高度可扩展,能够在数千台商用机器上处理许多TB级别的数据。为了提高效率和可靠性,该系统还采用了多种优化策略: - **数据本地性**:尽可能将计算任务分配给存储有输入数据的节点,减少远程...
程序员发现,利用MapReduce开发应用程序变得异常简单,每天有成千上万的MapReduce作业在Google的集群上运行。 #### 性能与优化 MapReduce的设计考虑到了高效率和高性能的需求。它通过将计算任务自动分布到集群中的...
mapreduce创建代码项目mvn原型:generate -DarchetypeGroupId = org.apache.maven.archetypes -DgroupId = org.conan.mymahout -DartifactId = myPro -DpackageName = org.conan.mymahout -Dversion = 1.0-SNAPSHOT ...
MapReduce是Google公司开发的一种编程模型和实现方法,用于处理和生成大规模数据集。该模型允许用户指定一个Map函数,以处理键值对,并生成中间键值对;然后,指定一个Reduce函数,以合并所有与同一个中间键关联的...
MapReduce是一种广泛使用的编程模型,用于处理和生成大数据集。其核心思想是将大数据集分割成独立的块,这些块可以并行处理,然后再将结果合并起来。MapReduce模型主要由两个阶段组成:Map(映射)阶段和Reduce...
MapReduce的翻译,我只是个搬运工qwq
Google那篇著名的论文的ppt,MapReduce开山之作,介绍了Google对MapReduce的实现。
这种实现的效率和易用性使得在Google内部有数百个MapReduce程序被实现,每天有超过1000个程序在执行,用于处理各种任务,如构建倒排索引、分析Web请求日志等。 MapReduce的编程模型不仅适用于简单的计数任务,还能...
MapReduce是一种分布式编程模型,由Google开发,用于处理和生成大型数据集。它将复杂的并行数据处理任务分解为两个阶段:Map(映射)和Reduce(化简)。在这个Nkeys,Nfiles的终极解决方案中,主要关注的是MapReduce...
MapReduce教程视频,难度不算太高。这个是上半部分,下半部分在下一个资源。。嘿嘿
MapReduce是一种分布式计算模型,由Google开发,用于处理和生成大规模数据集。在这个特定的案例中,"MapReduce:股票波动率计算"项目利用MapReduce框架来分析纳斯达克股票的波动性,这是一种衡量股票价格变化幅度的...
Web MapReduce 使用Web浏览器作为工作程序的MapReduce...资源实施中使用的资源: Google Research:MapReduce:大型集群上的简化数据处理WebSocket RFC WebRTC RFC 谷歌/ MR4C Gorrila / Websocket SockJS Gopher图
MapReduce编程模型对程序员来说相对易于使用,Google内部已经实现了超过一万个不同的MapReduce程序,并且每天平均有十万次MapReduce作业在Google的集群上执行,每天处理超过二十拍字节的数据。 在MapReduce模型出现...
i2MapReduce:用于挖掘不断发展的大数据的增量MapReduce
MapReduce是一种分布式计算模型,由Google在2004年提出,主要用于处理和生成大规模数据集。这个模型简化了在大型集群上运行的数据密集型计算,使得非专业程序员也能处理PB级别的数据。在这个模型中,复杂的并行计算...