新聞中心
今日面試題:雞蛋挺住體

10多年的磐石網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整磐石建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“磐石網(wǎng)站設(shè)計”,“磐石網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
兩個雞蛋:兩個軟硬程度一樣但未知的雞蛋,它們有可能都在一樓就摔碎,也可能從一百層樓摔下來沒事。有座100層的建筑,要你用這兩個雞蛋以最少的次數(shù)確定哪一層是雞蛋可以安全落下的最高位置??梢运に閮蓚€雞蛋。
MapReduce矩陣的分析
題目:
一個很大的2D矩陣,如果某點的值,由它周圍某些點的值決定,例如下一時刻(i,j) 的值取當(dāng)前時刻它的8鄰點的平均,那么怎么用MapReduce來實現(xiàn)。
分析:
首先,讓我們以WordCount為例來解釋MapReduce是怎么工作的。
原始狀態(tài)下,輸入–Map — Shuffle — Reduce — 輸出
假設(shè)有如下的兩個文本文件來運行WorkCount程序:
- Hello World Bye World
- Hello Hadoop GoodBye Hadoop
map數(shù)據(jù)輸入
Hadoop針對文本文件缺省使用LineRecordReader類來實現(xiàn)讀取,一行一個key/value對,key取偏移量,value為行內(nèi)容。
如下是map1的輸入數(shù)據(jù):
- Key1 Value1
- 0 Hello World Bye World
如下是map2的輸入數(shù)據(jù):
- Key1 Value1
- 0 Hello Hadoop GoodBye Hadoop
map輸出/combine輸入
如下是map1的輸出結(jié)果
- Key2 Value2
- Hello 1
- World 1
- Bye 1
- World 1
如下是map2的輸出結(jié)果
- Key2 Value2
- Hello 1
- Hadoop 1
- GoodBye 1
- Hadoop 1
combine輸出 Combiner類實現(xiàn)將相同key的值合并起來,它也是一個Reducer的實現(xiàn)。
如下是combine1的輸出
- Key2 Value2
- Hello 1
- World 2
- Bye 1
如下是combine2的輸出
- Key2 Value2
- Hello 1
- Hadoop 2
- GoodBye 1
combiner視業(yè)務(wù)情況來用,減少MAP->REDUCE的數(shù)據(jù)傳輸,提高shuffle速度,就是在map中再做一次reduce操作。combiner使用的合適,可以在滿足業(yè)務(wù)的情況下提升job的速度,如果不合適,則將導(dǎo)致輸出的結(jié)果不正確。
對于wordcount來說,value就是一個疊加的數(shù)字,所以map一結(jié)束就可以進行reduce的value疊加,而不必要等到所有的map結(jié)束再去進行reduce的value疊加。
reduce輸出
Reducer類實現(xiàn)將相同key的值合并起來。
如下是reduce的輸出
- Key2 Value2
- Hello 2
- World 2
- Bye 1
- Hadoop 2
- GoodBye 1
即實現(xiàn)了WordCount的處理。
下圖是官方的流程圖:
有了這個基礎(chǔ)知識,我們來看如何用MapReduce來解決上述問題。
以下標(biāo)對作為map的key,遇到(i,j),生成(i-1,j-1),(i-1,j),etc,然后在reduce時merge相同的key,并計算value。
當(dāng)你理解了MapReduce的工作原理,是不是很簡單?
本文題目:雞蛋挺住體:及MapReduce矩陣分析
當(dāng)前地址:http://m.fisionsoft.com.cn/article/cohoode.html


咨詢
建站咨詢
