前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MapReduce:Google的人间大炮

MapReduce:Google的人间大炮

作者头像
田春峰-JCJC错别字检测
发布2019-02-14 10:27:07
3810
发布2019-02-14 10:27:07
举报
文章被收录于专栏:字根中文校对软件

    对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日志

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2005年03月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档