美文网首页
分布式计算的基础:MapReduce

分布式计算的基础:MapReduce

作者: 风车故里 | 来源:发表于2016-06-28 14:27 被阅读58次
MapReduce

�Y:�ch如果提出这么一个需求:分析2.6TB的数据,找出其中最热的10个人名。这个需求看起来很简单,无非就是先读取文件,做一下分词处理,找出其中的人名,再累加计数,最后得出计数最多的人名。可是,这里有2.6TB的数据诶,如果处理速度是1MB/s,那么也得算个31.5天,等到那个时候,也许产品经理已经忘记了这个需求:)

为了不让产品经理忘记这个需求,那我们得加快处理速度了,一台机器处理不过来,那我们就堆机器吧,上个100台机器,总能在一天之内搞定吧。那么面对这100台机器,该如何分配任务,以及如何收集处理结果呢?这程序该怎么写呢?这就祭出今天要说的MapReduce了。

MapReduce是由Google提出的一个分布式计算模型,简单的说,就是把大量的数据分解成独立的单元执行(Map),然后将结果归并在一起(Reduce)。

面对上面的需求,首先需要做的事将任务分解了(Map)。可以有这样的一个独立的小任务,以单个文件作为一个输入,然后经过分词、人名筛选等处理后,得到很多Key-Value形式的键值对,这里的Key就是某个人名(张三),Value就是张三在这个文件中出现的次数。这种独立小任务的处理方式,对于2.6TB中的文件都是一模一样的,那么我们就把这些文件统统分配到其中90台机器上去单独执行这些小任务就好了。

另外10台机器干嘛呢?它们就负责Reduce,将计算结果归并起来,当前面90台机器处理完一个文件了,它就将处理结果扔给这10台机器。扔结果可不是乱扔掉哦,它有一个原则,相同Key的结果都往同一台机器上扔,如下图中画的那样,蓝色的处理结果,都扔给了第一台机器,这样它就保证了同一个Key的数据完整性。

          信息处理示意图

最终,从全部Reduce的机器上,可以获得每个名字在这2.6TB数据中出现的统计结果,将其中次数最多的前10个列出来,就得到了我们想要的结果了。

说到底就是将大量重复独立的任务,分摊到不同的机器上去执行,分担了整体运行的时间。


文章来源:微信号:给产品经理讲技术

文章作者:凡夫畏果

相关文章

  • 《机器学习实战》笔记(十五):Ch15 - 大数据与MapRed

    第15章 大数据与MapReduce(代码) MapReduce:分布式计算的框架MapRedece分布式的计算框...

  • Hadoop基础

    1. Hadoop基础架构 HDFS:分布式文件系统。 MapReduce:分布式计算框架。 YARN:资源管理系...

  • Hadoop大数据系列三 - MapReduce

    MapReduce:分布式计算框架 MapReduce is a software framework for e...

  • Hadoop简介

    Hadoop概述开源分布式计算平台,以HDFS、MapReduce为核心,为用户提供了系统底层细节透明的分布式基础...

  • MapReduce 概览

    MapReduce 介绍 MapReduce 是一个通用的分布式计算框架。 分布式的关键是,面向大规模的计算机集群...

  • 读书笔记:MIT 6.824

    分布式的基础设施: 存储 常见的HDFS 通信 计算 常见的如MapReduce 实现上: RPC 线程 并发控制...

  • 大数据基础

    HDFS分布式文件系统 MapReduce分布式计算框架

  • 大数据简述

    分布式文件系统 GFS 分布式计算 MapReduce Yarn在Hadoop早期,MapReduce既是一个执行...

  • 分布式知识梳理

    什么是分布式系统? 多台协同计算机,用于大型网站的存储、MapReduce、对等共享和许多关键的基础设施都是分布式...

  • MapReduce工作机制——Word Count实例(一)

    MapReduce工作机制——Word Count实例(一) MapReduce的思想是分布式计算,也就是分而治之...

网友评论

      本文标题:分布式计算的基础:MapReduce

      本文链接:https://www.haomeiwen.com/subject/tjstjttx.html