MapReduce 论文读书笔记

[MapReduce: Simplified Data Processing on Large Clusters](https://static.googleusercontent.com/media/research.google.com/zh-CN//archive/mapreduce-o sdi04.pdf)

摘要

模型

指定一个map function,把kv对处理成新的kv对,然后,reduce函数,把所有的中间态kv归并成结果。

核心问题

1、输入数据分割
2、分布式集群计算调度
3、机器异常处理
4、集群机器间通信

特性

1、海量普通商业机器上运行
2、高可伸缩

一、介绍

为什么要做

海量数据的处理需求,但是实际上计算的代码又不复杂,核心的诉求是数据量太大,难以在单机完成。

怎么做

抽象map - reduce函数接口模型,包括屏蔽并行计算,分布式可伸缩计算、归并等操作,并在普通的商业计算上达到高性能。

二、计算模型

MapReduce提供计算框架,将输入的KV对经过处理,输出新的KV对。
Map和Reduce 函数,都是由用户自定义的。其中,Map函数把一组KV对计算并得到新的KV数据集,而Reduce函数把初步聚合的KV数据集进一步归并到一起。

举例

URL计数

统计日志里面出现的url次数
1、输入一批url
2、map输出的数据结构为<URL,1>
3、reduce函数把所有的URL计数加起来求和,4、输出<URL,total count>

倒排索引

1、输入docID,doc内容
2、map分解,输出<word, docID>
3、reduce把所有word关联的docID放到一起,
4、输出<word,list(docID)>

三、实现

运行的环境

1、2核cpu,2-4G内存机器
2、百兆带宽
3、千百台机器构成的集群,机器故障是常态
4、分布式存储,存储与不可控的硬件设备上
5、用户提交任务模式

执行流程

执行框架

详细步骤
1、将输入文件安装64MB(用户可自定义)分割成M份,然后在集群中启动多个进程(多少个?)
2、进程模型为master-workers,其中一个master进程,M个map进程,R个reduce进程。master负责分发任务到空闲的map和reduce进程
3、map进程从输入数据中逐个解析kv对,调用用户定义的Map函数,产出新的kv对集合,在内存中缓存起来。
4、map进程周期性的把buffer中的数据,刷到磁盘中。磁盘中写的数据会被分割成R份(每个机器都分割成R份吗),完成后把数据存储路径通知到master。
5、reduce进程会收到来自master的调度通知时,使用RPC把数据拉过来。全部读取后,以key为键值排序。如果数据集过大,内存装不下时,会使用到外部排序。
6、reduce worker对排好序的KV数据集逐个执行用户态reduce函数,把同一个key下的数据聚合起来(注意这个聚合,可能是简单的计数、求和、归并到一起等)。在输出结果中,会把用户态的reduce函数放到文件结尾。
7、当所有的map和reduce 任务完成后,master回吐数据到用户进程。

Master 数据结构

进程信息:map/reduce进程的idle、执行状态、是否已完成
中间结果信息:存储map worker产出的中间KV数据集。

容错

worker 失败处理

核心是把失败worker的任务重新再执行一遍。

  • 探活机制:定时ping worker机器,ping不通时,认为任务失败。
  • 重做机制:任务失败时,发起任务重做。
  • 重做流程:当map worker A失败时,通知所有已经在处理A产出的worker重做,切到新的map worker B的产出中。
  • 重试细节:机器故障时,map worker已完成的任务,需要重试,因为此时机器ping不通,已经产出到本地的文件不可达;而reduce worker已完成的任务不用重做,因为已经存储到分布式机器中。

思考

为什么map worker存储到本地而reduce worker存储到分布式存储中?
猜测:分布式存储认为是最终的产出地,map的结果是中间态,放到本地速度快一些。放到分布式存储中,似乎map差距也不大?

master 失败处理

可以用还原点的方式重新拉起一个master进程。实际MR在实现的时候,直接让client侧重试解决。

幂等处理

map 和reduce worker由于重试造成的计算结果如何处理?
1、两类worker执行可能多次,因此产出的结果也会有多份
2、map worker在向master上报计算结果的时候,master如果检测到已经计算过了,则忽略此次上报。
3、reduce worker产生的计算结果在写入最终的存储时,会覆盖写,每次都写一样的内容。
达到了操作的幂等效果。

计算就近原则

跨机器计算涉及到下载中的带宽、时间等消耗。因此,master在分配任务时,把worker分配到含有输入数据的机器上,或者就近的机器上,降低带宽与提高计算时间。

任务大小粒度问题

理想中,任务粒度越小越好,把整个集群的资源充分利用起来。但是master中需要维护任务的进程信息、以及执行状态信息,因此任务数是受限于内存的。reduce任务的个数可以用户来指定,而map任务数M通常由MR来确定(输入数据大小/16MB-64MB)。推荐的指标是,2000台实例时,200000个M任务以及5000个R任务。

任务备份机制

任务备份机制,解决的是MR任务中的长尾问题。长尾问题指的是,部分进程,执行的时间比较久,拖慢了整体的任务时间。因此呢,master在MR任务快完成的时候,把还在进行中的任务做了一次备份执行,无论是原始进程还是备份进程完成,则认为MR任务完成了。这样屏蔽了一些单点故障,比如cpu idle低、磁盘性能差等问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,454评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,553评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,921评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,648评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,770评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,950评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,090评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,817评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,275评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,592评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,724评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,409评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,052评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,815评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,043评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,503评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,627评论 2 350

推荐阅读更多精彩内容