ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MapReduce阅读笔记+实现心得

2021-09-02 17:04:28  阅读:127  来源: 互联网

标签:map 文件 备份 worker MapReduce 笔记 任务 master 心得


贡献

parallelization,
fault-tolerance,
locality optimization,
load balancing

心得

restricting the programming model makes it easy to parallelize and distribute computations and to make such computations fault-tolerant.

瓶颈

网络带宽

Map

{
拆分数量: M 远大于worker机器数 一个worker处理多个任务增强了动态负载均衡且加快了宕机恢复速度:the many map tasks it has completed can be spread out across all the other worker machines

Output: R个临时文件 原子性

完成后:message master,包括R个临时文件的名字(若master已经收到过这个task的信息,则忽略此信息),master将这R个临时文件的名字记录到master data structure

Combiner Function:map完成后可以使用自定义Combiner Function将结果合一下,生成中间文件

输入文件备份:GFS将输入文件分成64MB的块,并存储3个备份,当一个map task 失败时,会启用一个靠近存储输入备份的worker(如在同一个交换机下)
}

Reduce

{
拆分数量: R 远大于worker机器数

Output: 1个文件 原子性

完成后:原子性重命名临时输出文件为最终输出文件(当多个备份任务也完成时,GFS保证一个任务只有一个输出文件,没有重复的)

}

partition: hash(key) mod R

Master Data Structures

{
state: idle, in-progress, completed

identity of the worker machine

locations and sizes: of the R 个map任务的中间文件
}

Fault Tolerance

Worker Failure

Map:
已完成的任务:中间文件已保存至GFS,无需重新运行
未完成的任务:中间文件保存在本地,需重新运行

所有运行Reduce任务的worker会收到map worker重新运行通知,还没有从失败worker A读数据的reduce worker会从另一个重新运行任务的worker B读数据

Master Failure

master周期性写checkpoint
从上一个checkpoint重新运行

Backup Tasks

无论是主任务还是备份任务完成,任务都将被标记为完成

Skipping Bad Records

每个worker都安装了一个signal handler

运行map或reduce之前,会将argument的序列号记录在一个全局变量中

遇到错误时,会将此序列号发给master

如果某个record有多个失败,它会被跳过

其他

Debug

由于分布式不好debug,google开发了一个本地MapReduce用于调试,所有操作串行执行

Status Information

master有一个http服务器用于显示info,如哪些worker失败了,它们导致哪些map和reduce任务失败了

分析bug有用

Counters

worker的count value附在ping的response中回给master

 

使用GO实现MapReduce的心得

  1. worker id 不能复用,crashedWorker的answer要直接抛弃。存在crashedWorker复活情景:crashedWorker由于运行时间过长被master认为crash,但中途没有worker对这个task answer,然后crashedWorker正常answer
  2. hash出来的值不一定能覆盖到所有范围,如[0,nReduce),可能只有4个值能取到
  3. 函数参数赋值和普通赋值均是复制成一个新变量,修改新变量不会影响老变量,注意指针问题

标签:map,文件,备份,worker,MapReduce,笔记,任务,master,心得
来源: https://www.cnblogs.com/GY8023/p/15219553.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有