谷歌“三驾马车”的出现,才真正把我们带入了大数据时代,毕竟没有谷歌,就没有大数据。

上次的分享,我们对谷歌的其中一驾宝车 GFS 进行了管中窥豹,虽然只见得其中一斑,但是也能清楚的知道 GFS 能够把大量廉价的普通机器,聚在一起,充分让每台廉价的机器发挥光和热,不但降低了运营成本,而且解决了一个业界数据存储的难题。

虽然 GFS 解决了 Google 海量数据的存储的难题,但是随之而来的就是“如何从海量数据中快速计算并得到结果的难题”,面对这个难题,谁痛谁想办法,Google 再次进行技术创新,重磅推出另一篇论文《MapReduce: Simplified Data Processing on Large Clusters》,接下来就一起认识认识 MapReduce。

认识

到底是个啥?说白了,MapReduce 其实就是一个为了简化海量数据处理而提出的编程模型。

主要思想:分而治之,将一个大规模的问题,分成多个小规模的问题,把多个小规模问题解决,然后再合并小规模问题的解,就能够解决大规模的问题。

编程模型:我们只需要通过编写 Map 函数和 Reduce 函数来指定想要进行的计算,而不用花心思去纠结背后复杂的容错、数据分发、负载均衡等等一系列技术细节问题。MapReduce 所执行的分布式计算会以一组键值对作为输入,输出另一组键值对。

怎么想的?原来是受 Lisp 以及其它一些函数式编程语言中的 map 和 reduce 原语影响而来的(如果你闲着无聊,再去了解 Lisp 也不迟)。

疑惑

百思要求解。说了这么多,感觉还是一无所知,显然是一块硬骨头,其实在脑海中早已荡起千层疑问的波。

Map 函数是啥?Reduce 函数又是啥?

接下来我们一起慢慢去体会。

统计大量文档中每一个单词出现的次数,这也是大数据技术入门的经典案例“WordCount”,此时需要我们编写类似上面的伪代码。

简单剖析这段伪代码,希望对 Map、Reduce 函数有一个深入的认识。

剖析 1:要统计文档每个单词出现的次数,顾名思义 map 函数入参 key 是文件名,value 是文档的内容,接下来逐个遍历单词,每遇到一个单词 w,就输出一个中间结果(w, "1")。

剖析 2:reduce 函数入参 key 就是单词 w,值是一串“1”,然后将这些“1”累加就得到单词 w 的出现次数。

剖析 3:最后把文档中单词的出现次数,输出到用户定义的位置,例如存储到分布式存储系统 GFS 上。

好了,大数据入门经典案例“WordCount”的伪代码,到这就剖析个八九不离十,虽然懵懂了不少,但是还是萌生了一些猜想和疑问。

懵懂:Map 函数是啥?Reduce 函数是啥?

Map函数:处理一个基于 key/value 键值对的数据集合,同时也输出基于 key/value 的数据集合;

Reduce函数:用来合并 Map 函数输出的 key/value 数据集合。

论文中说了,上面伪代码中输入输出虽然都是字符串类型的,但事实上,Map 和 Reduce 函数都是有相应类型的。

  • map     (k1, v1)      -> list(k2, v2)

  • reduce   (k2, list(v2))  -> list(v2)

猜想:map、reduce 函数中间感觉又触发了“针对同一个单词的 value 的组合(也就是把相同单词出现的次数,串在一起)”,不然 reduce 函数怎么能接收到 values(每个单词对应的出现次数的一串“1”)。

骑驴看剧本,咱们还是走着瞧呗。

疑问1:map 产生的中间键值对,是放到内存、本地磁盘还是放到了 GFS 上存储?

这个问题也是骑驴看剧本,咱们还是走着瞧呗(貌似用错了语境,别介意,哈哈)。

疑问2:我们写好了 Map 函数和 Reduce 函数,怎么就跑到了多台机器上呢?

欲知后事如何,咱们还是且听下回分解。

谷歌 MapReduce 初探的更多相关文章

  1. 谷歌MapReduce经典论文翻译(中英对照)

    MapReduce: Simplified Data Processing on Large Clusters(MapReduce: 简化大型集群下的数据处理) 作者:Jeffrey Dean and ...

  2. MapReduce初探

    转自 :http://blog.itpub.net/28912557/viewspace-1127423/ Map-Reduce处理过程(分析气象数据的map-reduce过程)1,调用标准的inpu ...

  3. 悟懂MapReduce,不纠结!

    在<谷歌 MapReduce 初探>中,我们通过统计词频的 WordCount 经典案例,对 Google 推出的 MapReduce 编程模型有了一个认识,但是那种认识,还只是停留在知道 ...

  4. 谷歌Dremel即时数据分析解决方案

    Hadoop技术已经无处不在.不管是好是坏,Hadoop已经成为大数据的代名词.短短几年间,Hadoop从一种边缘技术成为事实上的标准.看来,不仅现在Hadoop是企业大数据的标准,而且在未来,它的地 ...

  5. 【转】五分钟读懂大数据核心MapReduce架构及原理

    什么是MapReduce Hadoop中的MapReduce是一个简单的软件框架,基于它写出的应用程序可以运行在由上千个商用机器组成的大型集群上,并以一种可靠容错式并行处理TB级数据 MapReduc ...

  6. 批处理引擎MapReduce编程模型

    批处理引擎MapReduce编程模型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. MapReduce是一个经典的分布式批处理计算引擎,被广泛应用于搜索引擎索引构建,大规模数据处理 ...

  7. Hadoop MapReduce 一文详解MapReduce及工作机制

    @ 目录 前言-MR概述 1.Hadoop MapReduce设计思想及优缺点 设计思想 优点: 缺点: 2. Hadoop MapReduce核心思想 3.MapReduce工作机制 剖析MapRe ...

  8. Hadoop的辉煌还能延续多久?

    摘要:Hadoop已经成为大数据的代名词.短短几年间,Hadoop从一种边缘技术成为事实上的标准.而另一方面,MapReduce在谷歌已不再显赫.当企业瞩目MapReduce的时候,谷歌好像早已进入到 ...

  9. 大数据技术原理与应用——大数据处理架构Hadoop

    Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构. Hadoop是基于Java语言开发的,具有很好的跨平台特性,并且可以 ...

随机推荐

  1. 关于在elasticSearch中使用聚合查询后只显示10个bucket的问题

    先看下面es查询语句 { "size": 0, "aggs" : { "all_articleId" : { "terms&quo ...

  2. 简单谈谈HashMap

    概述 面试Java基础,HashMap可以说是一个绕不过去的基础容器,哪怕其他容器都不问,HashMap也是不能不问的. 除了HashMap,还有HashTable跟ConcurrentHashMap ...

  3. Lambda 语法

    1.java8 Lambda表达式语法简介 (此处需要使用jdk1.8或其以上版本) Lambd表达式分为左右两侧 * 左侧:Lambda 表达式的参数列表 * 右侧:Lambda 表达式中所需要执行 ...

  4. Layabox enabled 脚本禁用 坑

    从unity入坑到Layabox,真的是一路踩坑啊,今天这个坑叫做 脚本禁用 enabled 问题一: 首先看官方文档 https://ldc2.layabox.com/doc/?nav=zh-ts- ...

  5. W3C的盒子模型和IE的盒子模型

    盒子模型分为两种:W3C盒子模型(标准盒子模型)和IE盒子模型 盒子模型组成:content+padding+border+margin 标准盒子模型的width就是content 而IE盒子模型的w ...

  6. 304 Not Modified

    304 Not Modified,不是服务器发出的错误,是服务器所承载的业务系统在开发时为了节省带宽和提升浏览器的体验,对GET/js,css,image等执行了缓存机制.客户端第一次对服务器发出GE ...

  7. ElasticSearch 6.2.4 实践

    参考资料 ElasticSearch 官网 ElasticSearch,Kibana,Asp.net Core with docker 示例 阮一峰 ElasticSearch 基础概念 索引(ind ...

  8. ASP.NET Core 中jwt授权认证的流程原理

    目录 1,快速实现授权验证 1.1 添加 JWT 服务配置 1.2 颁发 Token 1.3 添加 API访问 2,探究授权认证中间件 2.1 实现 Token 解析 2.2 实现校验认证 1,快速实 ...

  9. inspect的使用安卓动态分析工具

    一.安装步骤 1.安装xposed 2.安装inspect 二.inspect 一个基于Xposed 开发的应用动态分析工具 github已开源 内置web页面 体验度很不错 ‘ 核心功能 监控Sha ...

  10. [BUG]微信小程序ios时间转换

    描述 小程序ios   new Date('2019-08-14T08:00:00.000+0000')   显示为  <Date: null>. '2019-08-14T08:00:00 ...