惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
I
InfoQ
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
Y
Y Combinator Blog
博客园_首页
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
A
About on SuperTechFans
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
T
The Blog of Author Tim Ferriss
C
Check Point Blog
B
Blog RSS Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Engineering at Meta
Engineering at Meta
B
Blog
爱范儿
爱范儿
Stack Overflow Blog
Stack Overflow Blog
aimingoo的专栏
aimingoo的专栏
WordPress大学
WordPress大学
F
Fortinet All Blogs
月光博客
月光博客
GbyAI
GbyAI

博客园 - 我要去桂林

一种面向搜索引擎的网页分块、切片的原理,实现和演示 C#:昨天,今天和明天:和 Anders Hejlsberg 座谈,第二部分 C#:昨天,今天和明天:和 Anders Hejlsberg 座谈,第一部分 一种快速的未登陆词识别方法(原理和实现) 什么是垂直搜索引擎(之二) ASP.NET 2.0 缓存翻译草稿 Boyer-moor 字符串搜索算法 多么乐alexa网站流量数据报告助手 关于 小叮咚中文分词 .net版本发布的变化 小叮咚 中文分词 发布 java 版本 , c# 版本 , c++ 版本 google排名影响因素大全(beta1) apache mod_rewrite 模块使用的几个例子 google,msn,百度,一搜------多么乐互联网索引量统计-----2004-04-19 多么乐互联网 google索引量统计 关于tail在unix和windows下的几种实现 多么乐发布 自动生成摘要测试版 CtrlC源代码搜索引擎---添加Asp.Net StartKit 系列搜索 发布:CtrlC源代码搜索引擎 贝叶斯论坛垃圾广告屏蔽演示系统
MapReduce:Google的人间大炮
我要去桂林 · 2005-03-17 · via 博客园 - 我要去桂林

MapReduce:Google的人间大炮

网络上关于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的代码,可以看看,饱饱眼福。