再读MapReduce

2020-11-30  本文已影响0人  孤独的飞鸟

原文链接: https://static.usenix.org/publications/library/proceedings/osdi04/tech/full_papers/dean/dean.pdf

最近工作中发现任务目标和思路不清晰,有人介绍Google的三大论文思路清洗,有极大的参考意义。故以重读三篇论文,整理其背后的思路逻辑。


摘要

MapReduce是一种专为处理和生成大规模数据集的程序模型和相关实现。
用户指定的map函数,用以处理一对key/value,并生成一组key/value的中间结果。并同时指定一个reduce函数,该函数用以将聚集在同一个中间key的所有相关value。
与本文中介绍的相同,大多数的真实任务都表现出与本模型相同的模式。

按照上述规范实现的程序将自动地在商用大规模集群中并行化执行。
系统运行过程中,主要负责下面几步。1) 划分输入数据;2) 调度程序在机器集群中执行;3) 管理集群错误状态;4) 管理集群间地通信。
这将使得完全没有并行或分布式处理经验地程序员,可以很容易地利用大型分布式集群中地机器资源。

我们实现的MapReduce程序运行在大规模商业机器集群中,并具有极高的可伸缩性。一个典型的MapReduce计算程序运行在数千台机器上,处理数MB的数据。
本程序对程序员及其友好,当前已经实现了数百MapReduce程序,并且在Google的集群上每天执行着数以千计的MapReduce任务。


简介

在过去的五年间,本文作者和其他的多位Google职员已经实现了数百个特殊的计算任务,用以处理大规模的原始数据,其中包括抓取到的大规模网页数据,以及大规模的网页访问日志。为了访问多种类型的设备上的数据,其中包括倒排索引,web文档的多样化图结构表示,每个主机爬取的网页数量统计,以及指定日期访问频次最高的query。
这样的计算逻辑原理上来讲非常直接。
然而输入数据通常来讲是非常大的,所以为了在合理的时间内完成计算,需要同时在几百上千的机器上执行统计任务。
包括并行化计算问题,数据分发以及任务失败的处理等使得原本简单的问题变得难以解决,而这需要及其复杂的大量代码来解决这个问题。

上一篇下一篇

猜你喜欢

热点阅读