【MIT 6.5840/6.824】Lab1 MapReduce

MapReduce

  • MapReduce思想
  • 實現思路
  • 感受

6.5840/6.824 Lab與筆記匯總
本文對應的Lab版本為MIT6.5840-Spring2024的Lab1
本博客只提供思路,不會公開任何代碼

本lab耗時約6h,碼量約500行

MapReduce思想

MapReduce的思想屬于是比較簡單的,分為兩個階段:
Map階段將用戶指定的輸入文件(通常存放于分布式文件系統中,不過本Lab使用本地文件系統來代替),利用用戶編寫的map函數,將輸入文件拆分為(key,value)形式,輸出到若干個中間文件中(這些中間文件存放在map函數所運行的機器中,假設后面運行reduce函數的worker有nReduce個,那么每個運行map函數的worker,就需要把拆分出來的kv對分為nReduce個中間文件來存放,可在key上做hash來劃分kv對到對應的中間文件中)
Reduce階段將中間文件讀取出來,并按照key進行排序,然后調用用戶提供的reduce函數,將相同key的所有value進行聚合,最后輸出到文件中。假設存在nReduce個reduce任務,那么最后會產生nReduce個輸出文件。
MapReduce框架中,存在一個coordinator(論文里也叫master),用于協調map任務與reduce任務,同時,需要考慮任務crash的問題(重啟任務)。

實現思路

代碼主要分為兩部分:coordinator.go和worker.go
coordinator主要用于回應worker的rpc請求,分為兩種請求(分配任務與任務反饋)。coordinator需要維護每一個任務的狀態(可使用map),當收到分配任務的請求時,它找出一個未完成的任務并分配給worker(也是通過rpc),指定該任務的類型,并傳輸所需參數;當收到worker的任務反饋時,判斷任務是否成功,并更新任務狀態。
同時,coordinator需要監控worker,如果一個worker超過10s還沒有回復,那么認為該worker已經crash了,需要重新分配這個worker所運行的任務。
worker則是打工人,需要不斷詢問coordinator是否有任務做,對于map任務與reduce任務,進行不同的邏輯處理,按照MapReduce框架的思想進行實現就可以了。

感受

第一次使用go,2小時就可以速成,變量聲明與賦值都很方便(像python),但它是類型安全的編譯型語言,不會產生運行時的類型錯誤,寫起來非常方便。同時,不像C++一樣需要內存管理,因為存在gc機制。
當然,目前看到的只是冰山一角,還需要繼續深入學習思考。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43697.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43697.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43697.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

3. 排序算法代碼-python

目錄 1.冒泡排序2.快速排序3.插入排序4.希爾排序5.選擇排序6.堆排序7.歸并排序8. 二分查找 1.冒泡排序 冒泡排序""" def BubbleSort(nums):listLength len(nums)while listLength > 0:for i in range(listLength - 1):if nums[i] > nums[i1]:nums[i], n…

References in code to package

【IntelliJ IDEA】IDE學習使用(不時更新)_idea references in code to class-CSDN博客

【筆記】從零開始做一個精靈龍女-畫貼圖階段(上)

此文只是我的筆記,不包全看懂,有問題可評論 PS貼圖加工 1.打開ps 拖入uv圖,新建圖層,設置背景色為灰色,改一下圖層名字 2.按z縮小一下uv圖層,拖入實體uv圖片(目的是更好上色,比如…

鴻蒙語言基礎類庫:【@ohos.util.Vector (線性容器Vector)】

線性容器Vector 說明: 本模塊首批接口從API version 8開始支持。后續版本的新增接口,采用上角標單獨標記接口的起始版本。開發前請熟悉鴻蒙開發指導文檔:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md點擊或者復制轉到。 Vect…

云原生(Cloud native)

云原生(Cloud native) 一 定義 目前比較權威的定義主要來自Pivotal公司和云原生計算基金會(Cloud Native Computing Foundation,簡稱CNCF)。 1.1 Pivotal 4個要點: DevOps、持續交付、微服務、容器化。六…

【Java后端】Service層讀取yml配置文件中內容

前言 最近寫代碼,看到別人寫的讀取application.yml配置文件中數據,寫的挺規范,挺好的;雖然之前也讀取過yml文件,但用的其他方法,沒這個規范,所以記錄下 正文 假設要讀取視頻地址,…

微信小程序切換商戶號

1.登錄微信公眾平臺小程序 2.功能->微信支付 3.關聯成功后會志一關聯商戶號列表顯示 4.登錄你需要切換的商戶號 在下面選擇你需要開通的產品服務 5.切換到賬戶中心的api安全里面 只需要改變當前下面的配置即可切換小程序的收款商戶號 申請API證書按照官方的指引即可解…

關于redis的運維面試題-2

21. Redis的客戶端連接數限制如何設置? 在Redis中,客戶端連接數的限制可以通過配置文件redis.conf來設置,也可以通過命令行直接設置。以下是如何通過配置文件和命令行來設置Redis客戶端連接數限制的步驟和示例代碼。 通過配置文件設置客戶端…

JS計算某一年的土地租金收入和土地承租支出

涉及到多年的地租 , 例如 2024年5月15日 - 2026年5月15日 , 總承包租金是60000 假設 當前年是2024年 , 則計算2024年5月15日-2024年12月31日的租金收入 , 如果是2025年則是2025年1月1日-2025年12月31日 //示例交易數據 var transactions [ { type: "轉出土地收益&qu…

怎么區分住宅IP還是機房IP?機房IP和住宅IP有哪些不同?

在網絡技術的應用中,IP地址扮演著至關重要的角色。了解IP地址的種類及其特性,對于進行網絡管理、優化網絡安全策略、以及實施數據分析等任務至關重要。本文將深入探討如何區分住宅IP和機房IP,并分析兩者的主要差異。 一、IP地址分類簡介 IP…

pytorch-RNN存在的問題

這里寫目錄標題 1. RNN存在哪些問題呢?1.1 梯度彌散和梯度爆炸1.2 RNN為什么會出現梯度彌散和梯度爆炸呢? 2. 解決梯度爆炸方法3. Gradient Clipping的實現4. 解決梯度彌散的方法 1. RNN存在哪些問題呢? 1.1 梯度彌散和梯度爆炸 梯度彌散是…

【人工智能】深度學習:神經網絡模型

【人工智能】深度學習:神經網絡模型 神經網絡基礎知識 BP神經網絡的概念 單個神經元的結構 CNN模型匯總 LeNet5 模型 AlexNet 模型 VGG模型 Inception Net(GoogleNet)模型 ResNet (殘差網絡) RNN模型&#x…

css實現漸進中嵌套漸進的方法

這是我們想要的實現效果: 思路: 1.有一個底色的背景漸變 2.需要幾個小的塊級元素做絕對定位通過漸變filter模糊來實現 注意:這里的采用的定位方法,所以在內部的元素一律要使用絕對定位,否則會出現層級的問題&…

小白攻克歌曲“無名的人”,逐句精研的歌唱訣竅

《無名的人》 作詞:唐恬 作曲:錢雷 演唱:毛不易 今天不講解練習技巧,有需要的可以查看往期文章,我給大家帶一下無名的人,練習一下情感融入。 對于眾多唱歌小白而言,學習歌曲《無名的人》是一…

ctfshow-web入門-文件上傳(web164、web165)圖片二次渲染繞過

web164 和 web165 的利用點都是二次渲染,一個是 png,一個是 jpg 目錄 1、web164 2、web165 二次渲染: 網站服務器會對上傳的圖片進行二次處理,對文件內容進行替換更新,根據原有圖片生成一個新的圖片,這樣…

【Linux】進程優先級 + 環境變量

前言 在了解進程狀態之后,本章我們將來學習一下進程優先級,還有環境變量等。。 目錄 1.進程優先級1.1 為什么要有優先級? 2.進程的其他概念2.1 競爭性與獨立性2.2 并行與并發2.3 進程間優先級的體現:2.3.1 O(1) 調度算法&#xf…

Apache Web安全分析與增強

Apache HTTP Server 概述 Apache HTTP Server(通常簡稱為Apache)是一個開源的Web服務器軟件,由Apache軟件基金會開發和維護。它是全球使用最廣泛的Web服務器之一,支持多種操作系統,包括Unix、Linux、Windows和Mac OS X。以下是Apache Web服務器的詳細概述,包括其功能特點…

數字高壓表0-30kv

最近在制作數字高壓表,自己DIY玩玩,有沒有朋友一起研究看看

SpringCloud--常用組件和服務中心

常用組件 Euroke和nacos 區別 負載均衡 負載均衡策略有哪些 自定義負載均衡策略

【Red Hat 4.6---詳細安裝Oracle 19c】---靜默方式安裝

🔻 一、安裝前規劃 規劃項:(本環境) 描述:操作系統版本Red Hat Enterprise Linux Server release 4.6 (Santiago)主機名langtest數據庫版本 Oracle 19c IP規劃10.10.10.164服務器空間要求根據實際要求數據庫名/實例名orcl數據庫塊大小oracle建庫一般設置數據庫塊大…