我要去桂林---田春峰的网志

我要去桂林

统计

常用链接

留言簿

阅读排行榜

评论排行榜

MapReduce:Google的人间大炮

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的代码,可以看看,饱饱眼福。

posted on 2005-03-17 23:07 我要去桂林 阅读(2054) 评论(4)  编辑 收藏 网摘

评论

#1楼 2005-04-22 01:31 anonymous

MapReduce所用的思想叫做Skeletal Parallelism,在1989年以前就出现了,当时叫Algorithmic Skeletons
在近十多年欧洲的并行计算程序设计语言的研究中,它从来就没中断过,即便是在初期所取得的成果也远远超出MapReduce这个技术里需要用到的内容。见
http://homepages.inf.ed.ac.uk/mic/Skeletons/

Google的MapReduce从理论上讲实际只是一个最简单skeleton,其难度决不在于语言和并行技术设计上,而在于它是一个大规模的real world application,因此鲁棒性和容错比较重要,但它的文章里却对此谈之甚少,不知道为什么。

写文章的人不是科学研究者,而是工程师,OSDI发了这篇文章的主要原因还是因为它来自Google,主要是作为一个real world的demonstration.
  回复  引用    

#2楼[楼主] 2005-04-22 10:15 我要去桂林      

谢谢你的分享

希望下次留下大名
  回复  引用  查看    

#3楼 2007-05-13 11:42 江洪[未注册用户]

请问分词后,如何使用hash表处理,谢谢。   回复  引用    




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 120722




相关文章:

相关链接: