分布式系統(tǒng)學(xué)習(xí)1-mapreduce實(shí)現(xiàn)

MIT6.824 2017課程作業(yè)的lab1鞠值,使用go語(yǔ)言實(shí)現(xiàn)mapreduce阳准】ト框架代碼來(lái)自 git://g.csail.mit.edu/6.824-golabs-2017,完整實(shí)現(xiàn)代碼見(jiàn)https://github.com/shishujuan/mit6.824-2017-mapreduce

1 基礎(chǔ)概念

map 負(fù)責(zé)分發(fā)贺奠。每個(gè)map任務(wù)通常處理一個(gè)文件,有多少個(gè)輸入文件就有多少個(gè)map任務(wù)隆嗅。而輸出則根據(jù)reduce的數(shù)目確定有多少個(gè)輸出界阁。注意,相同的key肯定是輸出到同一個(gè)reduce文件中胖喳,通過(guò)哈希算法來(lái)確認(rèn)一個(gè)key應(yīng)該分發(fā)到哪個(gè)中間文件泡躯。targetReduct = ihash(key) % nReduce。
總的中間文件數(shù)為 nMap * nReduce

reduce負(fù)責(zé)對(duì)map輸出的文件進(jìn)行處理丽焊,每個(gè)reduce處理自己負(fù)責(zé)的那些中間文件较剃。負(fù)責(zé)處理的中間文件名可以由map個(gè)數(shù)和reduce number來(lái)確認(rèn)。

2 代碼實(shí)現(xiàn)

原始代碼有兩個(gè)目錄:main和mapreduce技健。其中main目錄下只需要關(guān)注wc.go写穴,ii.go以及一系列的txt文件。 mapreduce目錄則需要修改schedule.go雌贱,common_map.gocommon_reduce.go文件啊送。

Part 1, Part 2

這兩個(gè)實(shí)驗(yàn)都比較簡(jiǎn)單欣孤,單機(jī)的馋没。Part 1實(shí)現(xiàn)common_map.go和common_reduce.go中的通用函數(shù),而Part 2也只是統(tǒng)計(jì)單詞數(shù)目降传。Part 2這里要注意的是篷朵,要使用實(shí)驗(yàn)文檔中說(shuō)的分割方法unicode.IsLetter()去分割單詞,不然測(cè)試會(huì)無(wú)法通過(guò)搬瑰。

Part 3

采用的分布式執(zhí)行任務(wù)款票。先是master啟動(dòng)rpc服務(wù)控硼,并調(diào)用schedule函數(shù)執(zhí)行Task泽论。注意的是,Worker啟動(dòng)后需要調(diào)用master的RPC方法Register注冊(cè)到master卡乾,而master發(fā)現(xiàn)有了新的worker翼悴,會(huì)通知等待channel的協(xié)程進(jìn)行任務(wù)操作,同一個(gè)worker需要處理多個(gè)任務(wù)幔妨,但是不能同時(shí)給一個(gè)worker分配多個(gè)任務(wù)鹦赎。

注意在run中,先做map任務(wù)误堡,做完map再做reduce古话。所以在多個(gè)worker做map任務(wù)的時(shí)候,需要等所有的map任務(wù)完成再繼續(xù)reduce任務(wù)锁施。這里用了 WaitGroup陪踩。

另外杖们,分配worker的算法要注意,是每次有新的可能會(huì)分配到肩狂,而老的worker如果執(zhí)行完了一次任務(wù)摘完,則也要放回channel中以重復(fù)使用。

Part 4

worker失敗的情況下的實(shí)驗(yàn)傻谁,也比較簡(jiǎn)單孝治,在每個(gè)任務(wù)執(zhí)行時(shí)加個(gè)for循環(huán),如果成功則退出审磁,否則重新取worker執(zhí)行任務(wù)谈飒。

Part 5

Part 5需要完成一個(gè)倒排索引,完成ii.go即可态蒂,跟wc.go類似步绸,主要是要去掉重復(fù)以及對(duì)倒排列表排序就可以通過(guò)測(cè)試了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末吃媒,一起剝皮案震驚了整個(gè)濱河市瓤介,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赘那,老刑警劉巖刑桑,帶你破解...
    沈念sama閱讀 221,888評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異募舟,居然都是意外死亡祠斧,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)拱礁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)琢锋,“玉大人,你說(shuō)我怎么就攤上這事呢灶∥獬” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,386評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵鸯乃,是天一觀的道長(zhǎng)鲸阻。 經(jīng)常有香客問(wèn)我,道長(zhǎng)缨睡,這世上最難降的妖魔是什么鸟悴? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,726評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮奖年,結(jié)果婚禮上细诸,老公的妹妹穿的比我還像新娘。我一直安慰自己陋守,他們只是感情好震贵,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布鹏浅。 她就那樣靜靜地躺著,像睡著了一般屏歹。 火紅的嫁衣襯著肌膚如雪隐砸。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,337評(píng)論 1 310
  • 那天蝙眶,我揣著相機(jī)與錄音季希,去河邊找鬼攘已。 笑死叹放,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缩多。 我是一名探鬼主播友浸,決...
    沈念sama閱讀 40,902評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼峰尝,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了收恢?” 一聲冷哼從身側(cè)響起武学,我...
    開(kāi)封第一講書(shū)人閱讀 39,807評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伦意,沒(méi)想到半個(gè)月后火窒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡驮肉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評(píng)論 3 340
  • 正文 我和宋清朗相戀三年熏矿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片离钝。...
    茶點(diǎn)故事閱讀 40,567評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡票编,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出卵渴,到底是詐尸還是另有隱情慧域,我是刑警寧澤,帶...
    沈念sama閱讀 36,242評(píng)論 5 350
  • 正文 年R本政府宣布奖恰,位于F島的核電站吊趾,受9級(jí)特大地震影響宛裕,放射性物質(zhì)發(fā)生泄漏瑟啃。R本人自食惡果不足惜揩尸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望岩榆。 院中可真熱鬧坟瓢,春花似錦犹撒、人聲如沸折联。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,420評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)祥款。三九已至,卻和暖如春刃跛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背桨昙。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,531評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谨敛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,995評(píng)論 3 377
  • 正文 我出身青樓脸狸,卻偏偏與公主長(zhǎng)得像藐俺,于是被迫代替她去往敵國(guó)和親炊甲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子欲芹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容