Lab1 记录

news/2024/9/21 12:36:08/文章来源:https://www.cnblogs.com/INnoVationv2/p/18379265

一、非并行版本分析

1.非并行版本MapReduce流程

  1. 通过第一个参数,传入Map和Reduce 函数
  2. 之后的参数为待处理文件名
  3. 读取文件
  4. 调用Map函数,对文件内容进行处理,生成KV对
  5. 对KV对进行sort
  6. 按照Key进行分组,然后对每组数据调用Reduce
  7. 将结果写入文件

二、Lab思路

概述:Worker向Coordinator申请任务

1. Coordinator

代码位置: mr/coordinator.go

结构体介绍

type Coordinator struct {nReduce int32stage   int32workerCnt int32reduceJobIds []intmapJobPendingList    *HashSetreduceJobPendingList *HashSetjobProcessingList    *HashSet
}
  1. 启动

    1. 启动时,设置Coordinator状态为Map,
    2. 初始化Job List,map Job的名字为文件名,reduce Job的名字为nReduce的编号
  2. 初始化Worker

    有新Worker来时,为其分配编号,并传回nReduce

  3. 分发任务

    Worker会定时请求任务

    1. JobPendingList中选取Job
    2. 将这个Job放入JobProcessingList
    3. 如果任务完成,将任务从JobProcessingList彻底删除
    4. 发送任务后,注册一个回调函数,如果10s后这个任务还在JobProcessingList,说明任务超时,通过回调函数将任务放回JobWaitingList
  4. 任务完成

    Worker任务完成时,将Job从List中删除

  5. 状态转换

    如果所有任务都已完成,

任务名就是文件名:

  • Map的任务名是输入文件名
  • Reduce的任务名是nReduce编号
  1. 分发任务

    Worker会定时发来任务请求,

    1. JobWaitingList中选取任务给他

    2. 将这个任务放入JobProcessingList

    3. 如果任务完成,将任务从JobProcessingList彻底删除

    4. 发送任务后,注册一个回调函数,如果10s后这个任务还在JobProcessingList,说明任务超时,通过回调函数将任务放回JobWaitingList

  2. JobWaitingListJobProcessingList皆为空时,意味着任务完成,Coordinator可以退出

  3. 只有当Map完成时,才可进行Reduce

    1. Map阶段

    2. Reduce阶段

Worker

代码地址:mr/worker.go

1.Map Worer

读取文件,调用Map函数处理,将结果按照Hash值分配到nReduce个文件

中间文件名mr-X-Y

  • X:Map编号
  • Y:Reduce编号

2.Reduce Worker

结果文件名:mr-out-X

  • X:Reduce编号

注:为应对两个Worker同时处理某个任务、以及任务失败时的情况,Worker创建文件时,为其添加特殊后缀,比如mr-X-Y创建为mr-X-Y_123456。在任务处理完成,向coordinate汇报时,修改回正确文件名mr-X-Y

结果

代码地址:

Github

测试结果

image-20240825175144678

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/787165.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JMeter:性能测试利器全解析

目录JMeter:性能测试利器全解析一、JMeter 的基础概念(一)什么是 JMeter(二)主要功能特点二、使用 JMeter 测试 Web 应用的步骤(一)安装与启动(二)创建测试计划(三)配置 Web 应用测试场景(四)运行测试(五)分析测试结果三、案例分析(一)案例背景(二)测试步骤…

ZBlogPHP迁移网站错误提示:Permission denied(请确保你的网站有写入权限777)

解决方案:设置你的网站目录为777 写入权限即可【注意:如果755可能会不行,最好直接使用777搞定】扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿站、网站修改、网站改版、BUG修复、问题…

zblog网站提示MySQL数据库无法连接

前天搭建好的博客网站,在睡了一觉之后,网站竟然出现故障无法正常运行了,在此期间,没有进行任何的操作。就连主页都无法进入,页面一直提示“MySQL 数据库无法连接”。不管怎样刷新页面,还是重启服务器,都毫无作用。 最终,从中午 1 点一直忙活到凌晨 2 点,还好皇天不负有…

20-学习卷积核

import torch import torch.nn as nnX = torch.rand((6, 8)) Y = torch.rand((6, 7))# (批量⼤⼩、通道、⾼度、宽度) X = X.reshape((1, 1, 6, 8)) Y = Y.reshape((1, 1, 6, 7)) lr = 3e-2# 构造卷积层 PyTorch 会使用默认的初始化方法,例如 Xavier 初始化或 Kaim 初始化…

这下罄竹难书了

/ /由四个金牌命制的联赛模拟试卷,使我校高二高三竞赛班取得了一试最高 84 分,加试最高 160 分的好成绩! 一试 一、填空题如图是一个 \(4\times 4\) 的正方形方格表,则最少需要 \(\text{_____}\) 条直线,才能使得每个方格都被至少一条直线穿过。设复数 \(z\) 满足:\(\fra…

解决Z-blog数据库链接错误?

你是否也曾遇到过在登录 Z-blog 博客时,系统显示“错误原因: 数据库连接错误”这样的状况呢?频繁出现此种情况对于 SEO 优化而言是极为不利的。那么,究竟应当如何解决 Z-blog 数据库链接错误的问题呢?首先,我们得深入剖析为何会产生这样的状况,其原因主要有两点。不管是…

Java中stream的详细用法

原文地址:https://www.cnblogs.com/Ao0216/p/15319553.html 一、概述 Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询…

zblogphp的错误提示分为“错误原因”和“文件位置”两个部分

zblogphp 的错误提示主要划分为“错误原因”以及“文件位置”这两个部分。 就“错误原因”而言,其通常是由一系列的专业术语所构成的,对于不熟悉 php 的人来说,可能难以理解。 但别担心,您可以将其复制下来,然后使用百度翻译之类的工具进行翻译,说不定运气好的话能大概弄…

zblogphp错误之“未知方法或属性 (set_error_handler)“解决办法

zblogphp 程序中出现的一个错误。错误信息为“(512)E_USER_WARNING : 未知方法或属性 (set_error_handler) (1.5.1.1740 (Zero)) (Linux; Apache; PHP 5.2.17; mysqli; curl)”。产生该错误的原因通常是用户对 zblogphp 程序进行了升级,从 1.4 到 1.5 版本修改了部分函数名称,…

Zblog固定域名出错不能登入

如果设置了固定域名,而出现不能登入的时候,请连接上网站的FTP, 然后修改zb_users/c_option.php这个文件 在);之前,加入一行 ZC_PERMANENT_DOMAIN_WHOLE_DISABLE => true, 然后保存,就可以登录后台关掉固定域名设置,再回到c_option.php把加入的这一行删除掉。 删除掉后…

Zblog网站mysql5.7下发表文章不成功数据不保存

原因就是: 5.7默认为严格模式STRICT_TRANS_TABLES,会导致text类型没有赋值就保存时出问题! 解决方法: 1:关闭Mysql 5.7的严格模式,方法见百度 2:更新某些插件,让其在post表添加的text或longtext字段保存时能被赋值为而不是null 3:如果不是插件问题,可以查查数据库里的…

Z-BlogPHP是一款高效,快捷的PHP程序

Z-BlogPHP是一款高效,快捷的PHP程序:跨平台,支持Windows、Linux等系统支持MariaDB(MySQL)、SQLite、PostgreSQL等多种数据库支持Apache、IIS、Nginx、Lighttpd、Kangle等各类Web服务器简单便捷的应用开发,丰富的在线插件及主题安装 系统要求和安装系统要求Web Server: IIS …