第十一章_大數(shù)據(jù)_2019-03-31

大數(shù)據(jù)介紹

面試中關于大數(shù)據(jù)的題目有些是和采樣結合的題目,其實更適合放在概率的章節(jié)弹渔,但值得注意的是越來越大的題更注重對map-reduce的理解和掌握拨匆,Map-reduce和Hadoop逐漸成為面試的熱門。

介紹哈希函數(shù)

哈希函數(shù)又叫散列函數(shù)告丢,哈希函數(shù)的輸入域可以是非常大的范圍韩玩,但是輸出域是固定范圍垒玲。假設為s。
哈希函數(shù)的性質(zhì):
1啸如、典型的哈希函數(shù)都擁有無限的輸入值域侍匙。
2氮惯、輸入值相同時叮雳,返回值一樣。
3妇汗、輸入值不同時帘不,返回值可能一樣,也可能不一樣杨箭。
4寞焙、不同輸入值得到的哈希值,整體均勻的分布在輸出域s上。(重要)
MD5與SHA1算法都是經(jīng)典的哈希函數(shù)算法,了解即可压真,面試時不要求掌握苦掘。

map-reduce

1、Map階段→把大任務分成子任務鞍恢。
2、Reduce階段→子任務并發(fā)處理,然后合并結果娘扩。
注意點:
1、備份的考慮壮锻,分布式存儲的設計細節(jié)琐旁,以及容災策略。
2猜绣、任務分配策略與任務進度跟蹤的細節(jié)設計灰殴,節(jié)點狀態(tài)的呈現(xiàn)。
3掰邢、多用戶權限的控制牺陶。

常見的海量數(shù)據(jù)處理技巧

1擅羞、分而治之。通過哈希函數(shù)將大任務分流到機器义图,或分流成小文件减俏。
2、常用的hashMap或bitmap碱工。
難點:通訊娃承、時間和空間的估算。

經(jīng)典題

  • 用map-reduce方法統(tǒng)計一篇文章中每個單詞出現(xiàn)的個數(shù)
    1怕篷、預處理历筝,生成只包含單詞的文本
    2、map階段:1)對每個單詞生成詞頻為1的記錄如:(dog廊谓,1)梳猪、(pig,1)蒸痹,一個單詞可能有多個詞頻為1的記錄此時還未進行合并春弥;2)通過哈希函數(shù)得到每個單詞的哈希值,并根據(jù)該值分成若干組任務叠荠,每個子任務中包含若干種單詞匿沛,但同一種單詞不會分配進不同的子任務中。
    3榛鼎、reduce階段:1)單個子任務中同一種單詞的詞頻進行合并逃呼;2)所有記錄統(tǒng)一合并
  • 排序:請對10億個ipv4的地址進行排序,每個ip只出現(xiàn)一次
    ipv4的ip數(shù)量有42億多一點
    普通方法:將10億ip轉化為對應的用4個字節(jié)32位表示的整數(shù)者娱,對這些數(shù)排序后再轉換為ip地址
    更好的方法:申請長度為232的bit類型的數(shù)組抡笼,其大小約為500m,記為bitmap黄鳍,將10一個ip轉化為相應的整數(shù)后推姻,在bitmap中會有對應的位置,將其描黑际起,表示其出現(xiàn)拾碌,最后按順序遍歷bitmap即可,遍歷過程中再轉回ip地址街望。
  • 請對10億人的年齡進行排序
    年齡的范圍可以認為是0~200間校翔,這樣可以用200個桶,采用計數(shù)排序就行
  • 有一個包含20億個全是32位整數(shù)的大文件灾前,在其中找到出現(xiàn)次數(shù)最多的數(shù)防症。但是內(nèi)存限制只有2G
    通常做法:用hash表做詞頻統(tǒng)計,但此題需要以每個數(shù)作為鍵,以該數(shù)出現(xiàn)的次數(shù)作為值創(chuàng)建hash表蔫敲,所以一條記錄需要8個字節(jié)存儲饲嗽,一共20億數(shù)據(jù)就需要大約16G的內(nèi)存空間,顯然不合適奈嘿。
    推薦做法:用hash函數(shù)對不同的數(shù)進行分流貌虾,此處假設分流為16個小文件,再利用hash表進行詞頻統(tǒng)計裙犹,找出各自的詞頻最高的數(shù)尽狠,再進行比較。
  • 32位無符號整數(shù)的范圍是0~4294967295∫镀裕現(xiàn)在有一個正好包含40億個無符號整數(shù)的文件袄膏,所以在整個范圍中必然有沒出現(xiàn)過的數(shù)〔艄冢可以使用最多10M的內(nèi)存沉馆,只用找到一個沒出現(xiàn)過的數(shù)即可,該如何找德崭?
    如果供hash表做:因為只記錄是否出現(xiàn)斥黑,不需要記錄詞頻,所以每條記錄需要4個字節(jié)接癌,一共40億記錄的話需要大約16G心赶,遠超題目給的10m
    如果用bitmap做:這里長度為232的bit類型數(shù)組可以表示42億多的數(shù),所以此處申請長度為232的bit類型數(shù)組缺猛,該數(shù)組的大小大約為500m,也不滿足題意
    此題推薦做法:用hash函數(shù)對每個整數(shù)進行分流椭符,此處需要分流64份荔燎,則每份數(shù)據(jù)用bitmap的話僅僅需512 / 64 = 8m空間。
    對每個區(qū)間做詞數(shù)統(tǒng)計销钝,假設a區(qū)間詞數(shù)小于區(qū)間長度有咨,則遍歷一次40個數(shù),此時只關注區(qū)間a上的數(shù)蒸健,并用bitmap統(tǒng)計區(qū)間a上的數(shù)的出現(xiàn)情況座享,在a區(qū)間必定至少有一個數(shù)不存在。
  • 某搜索公司一天的用戶搜索詞匯是海量的似忧,假設有百億的數(shù)據(jù)量渣叛,請設計一種求出每天最熱100詞的可行辦法
    還是用hash函數(shù)分流,然后在用hash表做詞頻統(tǒng)計盯捌,如果機器數(shù)有限淳衙,則需要分流每臺機器上的文件,再用hash表做詞頻統(tǒng)計。
    創(chuàng)建hash表后箫攀,可以利用小根堆來進行top100篩選肠牲,得到每個小文件排序后的top100,然后再將同一臺機器上所有文件的top100通過小根堆或外排得到每臺機器上的排序后的top100靴跛,最后再通過小根堆或外排得到所有機器也就是所有數(shù)據(jù)桶的排序后的top100缀雳,返回即可。
  • 工程師常使用服務器集群來設計和實現(xiàn)數(shù)據(jù)緩存梢睛,以下是常見的策略俏险。1,無論是添加扬绪、查詢還是刪除數(shù)據(jù)竖独,都先將數(shù)據(jù)的id通過哈希函數(shù)轉換成一個哈希值,記為key挤牛。2莹痢,如果目前機器有N臺,則計算key%N的值墓赴,這個值就是該數(shù)據(jù)所屬的機器編號竞膳,無論是添加、刪除還是查詢操作诫硕,都只在這臺機器上進行坦辟。請分析這種緩存策略可能帶來的問題,并提出改進的方案
    帶來的問題:如果增加或刪除機器的話章办,數(shù)據(jù)遷移的代價太高
    推薦的一致性hash的算法:
    1锉走、將所有的數(shù)據(jù)id的hash結果看成一個環(huán)形。
    2藕届、將所有的機器工具其id計算hash結果挪蹭,并將其插入到數(shù)據(jù)hash結果組成的環(huán)中
    3、數(shù)據(jù)處理時休偶,計算某條數(shù)據(jù)的hash值后梁厉,在環(huán)中找從這個hash值開始順時針方向最近的機器即可,那么數(shù)據(jù)的增刪改查都在此機器上進行
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末踏兜,一起剝皮案震驚了整個濱河市词顾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌碱妆,老刑警劉巖肉盹,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異山橄,居然都是意外死亡垮媒,警方通過查閱死者的電腦和手機舍悯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來睡雇,“玉大人萌衬,你說我怎么就攤上這事∷В” “怎么了秕豫?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長观蓄。 經(jīng)常有香客問我混移,道長,這世上最難降的妖魔是什么侮穿? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任歌径,我火速辦了婚禮,結果婚禮上亲茅,老公的妹妹穿的比我還像新娘回铛。我一直安慰自己,他們只是感情好克锣,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布茵肃。 她就那樣靜靜地躺著,像睡著了一般袭祟。 火紅的嫁衣襯著肌膚如雪验残。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天巾乳,我揣著相機與錄音您没,去河邊找鬼。 笑死想鹰,一個胖子當著我的面吹牛紊婉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辑舷,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼槽片!你這毒婦竟也來了何缓?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤还栓,失蹤者是張志新(化名)和其女友劉穎碌廓,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剩盒,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡谷婆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纪挎。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡期贫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出异袄,到底是詐尸還是另有隱情通砍,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布烤蜕,位于F島的核電站封孙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏讽营。R本人自食惡果不足惜虎忌,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望橱鹏。 院中可真熱鬧膜蠢,春花似錦、人聲如沸蚀瘸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贮勃。三九已至贪惹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寂嘉,已是汗流浹背奏瞬。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留泉孩,地道東北人硼端。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像寓搬,于是被迫代替她去往敵國和親珍昨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

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