Re: MapReduce (Re: [情報] 利用智慧型手機建構雲端

看板Cloud作者 (下班後才下棋)時間14年前 (2010/08/20 10:16), 編輯推噓1(1036)
留言37則, 3人參與, 最新討論串3/6 (看更多)
※ 引述《yauhh (喲)》之銘言: : 我想MapReduce是個model,不一定有個完整的底層平台. : 既然是programming model,有可能從一開始寫程式就可以順著這個心法做. : 從檔案文件處理出發,首先要從檔案系統取得檔案清單. 這是map: : TakeFiles(folder, nil): : for each file in dir(folder), : emit(file, nil). : 可以叫好幾台電腦分別處理不同的目錄,把檔案抓出來. : 檔案名字變成許多小片段,送到master node或是一些groupper. : 接著,要把檔案和詞彙配對,好觸發每一個文件詞彙搜集的map工作. : 假設詞彙的數目可以容許一個工作做完,將檔案與詞彙配對的工作是一個reduce: : Pair(file, terms): : for each term in terms, : FindTerm(file, term). : FindTerm是個map: : FindTerm(file, term): : for each word in content(file), : if (word = term), : emit(term, 1). : 有何指教? 我提供一個很 naive 的做法 cralwer 們每抓到一個檔案, 或一個網頁 就把這筆資料依照自己的格式存進 DFS 並且把 (key:content_position) 發給 MQ server 而 indexer 的 mapper 每次從 MQ server 拿一筆資料 (這裡不需要 MapReduce) 之後每次 mapper 拿到一筆資料 IndexFileMapper(file): for each term in tokenizer(file), emit(term, file). IndexFileReducer(term, file_list): StoreToIndexDb(term, uniq(sort(file_list))). -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.51 ※ 編輯: ledia 來自: 140.112.30.51 (08/20 10:16) ※ 編輯: ledia 來自: 140.112.30.51 (08/20 10:18)

08/20 10:27, , 1F
是不是類似inverted index的作法?
08/20 10:27, 1F

08/20 11:09, , 2F
我沒有要file indexing.不過你提了一件相當好的概念,worker
08/20 11:09, 2F

08/20 11:09, , 3F
每次執行起來是主動從queue中取一項工作消化掉.
08/20 11:09, 3F

08/21 11:49, , 4F
你的方法仍有基本的問題,就是同一份程式多個"mapper"同時去
08/21 11:49, 4F

08/21 11:49, , 5F
拿資料,就會要彼此一致化. 程式又變難寫了. 而這個問題就是
08/21 11:49, 5F

08/21 11:50, , 6F
MapReduce打算要避開的. MapReduce是程式一定要好寫才行.
08/21 11:50, 6F

08/23 19:12, , 7F
我說的這些東西 (such as MQ) 都是現成的, 不知道有什麼麻煩
08/23 19:12, 7F

08/23 19:13, , 8F
建議你多看看, 再評論 XD
08/23 19:13, 8F

08/23 19:50, , 9F
我認為就你所講的,你並沒有多看看喔. 才建議你多看看.
08/23 19:50, 9F

08/23 19:51, , 10F
你MQ當然沒問題,問題是在你的程式啊,你要不要做鎖定?一定要
08/23 19:51, 10F

08/23 19:53, , 11F
另外,既然MQ是現成,沒麻煩,那你以為我不知道MQ是什麼東西嗎?
08/23 19:53, 11F

08/23 19:55, , 12F
而且我覺得,目前是想要談MapReduce該怎麼作,然而你卻回答
08/23 19:55, 12F

08/23 19:56, , 13F
普通的非MapReduce.這樣談有什麼好處? 任何好架構,你都一個
08/23 19:56, 13F

08/23 19:56, , 14F
大絕招就把它打翻,那什麼都不用談了. 可你不談沒關係,不要都
08/23 19:56, 14F

08/23 19:57, , 15F
只用你的想法來堵住別人也來討論的機會. 就我所看,你所講的
08/23 19:57, 15F

08/23 19:58, , 16F
其實我也知道. 可是跟你講分散系統要分配資源,你竟然聽不懂?
08/23 19:58, 16F

08/23 19:58, , 17F
那就表示是你應該要多加油.
08/23 19:58, 17F

08/23 20:05, , 18F
...嗯,上面我有講錯,或許鎖定是用MQ作到,不過,問題發生在另
08/23 20:05, 18F

08/23 20:06, , 19F
一面.本來MapReduce是講分散,結果你跑出一個MQ,又把計算給
08/23 20:06, 19F

08/23 20:06, , 20F
集中了. 雖然是可以分好幾個map各自算,但是你MQ讓這些map依
08/23 20:06, 20F

08/23 20:07, , 21F
序排隊,結果問題又回來了! 我想,請你別雞同鴨講了吧
08/23 20:07, 21F

08/23 23:45, , 22F
哈哈, 送資料為什麼要用到 MapReduce, 你這才是誤用
08/23 23:45, 22F

08/23 23:46, , 23F
資料分出去自然 mapper 就可以做自己的運算
08/23 23:46, 23F

08/23 23:47, , 24F
要我多跟你一點講一些是可以, 可不可以態度好一點
08/23 23:47, 24F

08/23 23:49, , 25F
懶得跟你說了, 自己慢慢摸吧~
08/23 23:49, 25F

08/24 00:16, , 26F
@@ 兩位前輩請息怒...
08/24 00:16, 26F

08/24 00:16, , 27F
就我所知 google的MapReduce並沒有送"資料"吧~
08/24 00:16, 27F

08/24 00:17, , 28F
而是master assign map/reduce task給worker 而worker再去
08/24 00:17, 28F

08/24 00:18, , 29F
DFS取資料...所要傳輸的是程式的fork?
08/24 00:18, 29F

08/24 00:21, , 30F
而且採取的是類似master去polling 而非worker主動要工作?
08/24 00:21, 30F

08/24 00:21, , 31F
不知這樣理解對不對...改天要來好好研究一下了- -||
08/24 00:21, 31F

08/24 03:27, , 32F
ledia你的習慣是一點都不承認你犯過的錯誤.這一點都不意外.
08/24 03:27, 32F

08/24 03:29, , 33F
你懶得說真是最好哦. 因為你推文跟回文真的是雞同鴨講而已.
08/24 03:29, 33F

08/24 03:30, , 34F
hilorrk,你說的第一句話有錯誤.請以分散式的範圍思考環境,
08/24 03:30, 34F

08/24 03:30, , 35F
環境中存在多少個map的instances,多少個reduce的instances.
08/24 03:30, 35F

08/24 03:31, , 36F
最少,每個map都要知道它該讀哪個檔案分段,而根據map的規格,
08/24 03:31, 36F

08/24 03:32, , 37F
---- 文太長,回文!
08/24 03:32, 37F
文章代碼(AID): #1CRULb-f (Cloud)
討論串 (同標題文章)
文章代碼(AID): #1CRULb-f (Cloud)