google文件系统GFS分布式数据处理MapReduce - 新闻中心 - 福州哈唐网络-福建IDC企业!专注云主机及服务器租用托管13年!

新闻中心

首页 > 新闻中心 > 行业新闻 >

google文件系统GFS分布式数据处理MapReduce

时间:2016-11-09 10:40:23   阅读:

      MapReduce是Google提出的一个软件架构,是一种处理海量数据的并行编程模式,用于大规模数据集(通常大于1TB)的并行运算。“Map (映射)”、“Reduce (化简)”的概念和主要思想,都是从函数式编程语言和矢量编程语言借鉴来的。正是由于MapReduce有函数式和矢量编程语言的共性,使得这种编程模式特别适合于非结构化和结构化的海量数据的搜索、挖掘、分析与机器智能学习等。
 
产生背景
 
      MapReduce这种并行编程模式思想最早是在1995年提出的,首次提出了“map”和
“fold”的概念,和Google现在所使用的“Map”和“Reduce”思想相吻合。
 
      与传统的分布式程序设计相比,MapReduce封装了并行处理、容错处理、本地化计算、负载均衡等细节,还提供了一个简单而强大的接口。通过这个接口,可以把大尺度的计算自动地并发和分布执行,使编程变得非常容易。另外,MapReduce也具有较好的通用性,大量不同的问题都可以简单地通过MapReduce来解决。
 
      MapReduce把对数据集的大规模操作,分发给一个主节点管理下的各分节点共同完成,通过这种方式实现任务的可靠执行与容错机制。在每个时间周期,主节点都会对分节点的工作状态进行标记,一旦分节点状态标记为死亡状态,则这个节点的所有任务都将分 配给其他分节点重新执行。
 
      据相关统计,每使用一次Google搜索引擎,Google的后台服务器就要进行1011次运算。这么庞大的运算量,如果没有好的负载均衡机制,有些服务器租用的利用率会很低,有些则会梦荷太重,有些甚至可能死机,这些都会影响系统对用户的服务质量。而使用MapReduce这种编程i式,就保持了服务器之间的均衡,提高了整体效率。
 
编程模型
      MapReduce的运行模型如图2-2所示。图中有M个Map操作和R个Reduce操作。
 
\
 
      简单地说,—个M函数就是对一部分原始数据进行指定的操作。每个Map操作都针对不同的原始数据, 因此Map与Map之间是互相独立的,这使得它们可以充分并行化。一个Reduce操作就是对每个Map所产生的一部分中间结果进行合并操作,每个Reduce所处理的Map中间结果是互不交叉的,所有Reduce产生的最终结果经过简单连接就形成了完整的结果集,因此Reduce也可以在并行环境下执行。
 
      在编程的时候,开发者需要编写两个主要函数:
 
\
 
      Map和Reduce的输入参数和输出结果根据应用的不同而有所不同。Map的输入参数是in_key和in_value,它指明了Map需要处理的原始数据是哪些。Map的输出结果是一组<可以,value>对,这是经过Map操作后所产生的中间结果。在进行Reduce操作之前,系统已经将所有Map产生的中间结果进行了归类处理,使得相同key对应的一系列value能够集结在一起提供给一个Reduce进行归并处理,也就是说,Reduce的输入参数是(key, [value1,…,valuem])。Reduce的工作是需要对这些对应相同key的value值进行归并处理,最终形成(key,final_value)的结果。这样,一个Reduce处理了一个key,所有Reduce的结果并在一起就是结果。
 
      例如,假设我们想用MapReduce来计算一个大型文本文件中各个单词出现的次数, Map的输入参数指明了需要处理哪部分数据,以“<在文本中的起始位置,需要处理的数据长度>”表示,经过Map处理,形成一批中间结果“<单词,出现次数>。而Reduce函数处理中间结果,将相同单词出现的次数进行累加,得到每个单词总的出现次数。


闽公网安备 35010002000114号