必知C 演算法之大資料相關基本內容

2021-10-02 08:41:19 字數 1779 閱讀 2462

map-reduce和hadoop熱門

常見海量處理題目解題關鍵

1.分而治之。通過雜湊函式將大任務分流到機器,或分流成小檔案

2.常用的hashmap或bitmap

難點:通訊,時間和空間的估算。

請對10億個ipv4的ip位址進行排序,每個ip只會出現一次

ipv4的ip數量約等於42億

ip->轉化為無符號整數

10億個ip->轉化為10億個整數(每個整數4位元組,空間約為4g)

更好的方法是申請長度為2的32次方的bit型別的陣列(空間約為500m) bitmap

請對10億人的年齡進行排序

用個長度為200的陣列,年齡計數排序即可

有個包含20億個全是32位整數的大檔案,在其中找到出現次數最多的數,但是記憶體限制只有2g

hashmap記錄所有數出現的次數

具體某乙個數:key->整形4位元組

這個數出現的次數:value->整形4位元組

一條記錄占有8位元組,記錄2億時,大約1.6g記憶體

所以用雜湊表來直接統計20億個整數的方案,可能記憶體不足

正確方法:

使用雜湊函式進行分流,可以分n個檔案

桶一種數不會被分流到不同檔案,這是雜湊函式性質決定的。

對於不同的數,每個檔案種含有整數的種數機會一樣,這也是雜湊函式性質決定的。

全部處理完成後,等到n個檔案種各自的第一名

再在n個第一名中,再選出其中的第一名即可

32位無符號整數的範圍時0~4294967295。現在正好有乙個包含40億個無符號整數的檔案,所以在整個範圍中必然有沒有出現過的數。可以使用最多10m的記憶體,只用找到乙個沒出現過的數即可,該如何找。

將0~2的32次方-1範圍分成64個區間

單個區間應該裝下2的32次方/64個數(這個64是按照給的記憶體來選擇的)

總共範圍約為42億,但數一共為40億,所以必然會有區間計數不足2的32次方/64

此區間為a,再遍歷一次40億個數,此時只關注區間a上的數,並用bitmap統計區間a上的數出現的情況。占用500m/64約等於8m,找到乙個在區間a上沒出現的數即可

某搜尋公司一天的使用者搜尋詞彙是海量的,假設有百億的資料量,請設計一種求出每天最熱100詞的可行方法。

百億資料使用雜湊函式進行分流到n臺機器上,如果每個機器上記憶體仍然不足,可以再使用雜湊函式再每台機器上再進行分流,分成若干個小檔案,處理每乙個小檔案,得到每個小檔案中詞彙的詞頻統計。

建立記錄後,利用小根堆來進行top100篩選。

利用小根堆或者外排序合併小檔案中的top100,獲得每台機器上的top100

再利用小根堆或者外排序將每台機器上的top100合併,獲得總體top100

工程師常使用伺服器集群來設計和實現資料快取,以下是常見的策略。1.無論是新增、查詢還是刪除資料,都先將資料的id通過雜湊函式轉換成乙個雜湊值,記為key。2.如果目前機器有n臺,則計算key%n的值,這個值就是該資料所屬的機器編號,無論是新增、刪除還是查詢操作,都只在這台機器上進行。請分析這種快取策略可能帶來的問題,並提出改進的方案

潛在問題:

​ 如果增加或刪除機器,資料遷移的代價很大。

所有資料必須重新計算雜湊值,以及對新的機器數m取餘,來決定各自資料的歸屬。

資料快取很好的設計方案為:

​ 一致性雜湊演算法

資料id通過雜湊值後的結果在0~2的32次方範圍內

將這些數字首尾相連,想象成乙個環形,將n臺機器id通過雜湊值計算出在環中的位置,其他的資料id順時針找到最近的機器,即為其歸屬機器

這種做法新增機器以及解除安裝機器時的代價都是很小的,只需要對區域性資料進行遷移即可。

大資料相關技術和演算法

大資料的關鍵技術 大資料的關鍵技術分為分析技術和處理技術,可用於大資料分析的關鍵技術主要包括a b測試,關聯規則挖掘,資料探勘,整合學習,遺傳演算法,機器學習,自然語言處理,模式識別,模型,訊號處理,空間分析,監督式學習,時間序列分析等,可用於大資料處理的關鍵技術主要是商業智慧型,雲計算,資料倉儲,...

必知C 演算法之鍊錶基本問題

給定乙個鍊錶 1.判斷鍊錶是否有環。2.如果鍊錶有環,請找出環入口。3.計算環的大小。思路 快慢指標 分別定義乙個快指標fast和慢指標slow,快指標一次走兩步,慢指標一次走一步。如果鍊錶沒有環,那麼fast最終會指向nullptr 如果鍊錶有環,那麼快指標和慢指標最終會相遇。所以,如果最終fas...

《大資料日知錄 架構與演算法》前言

大資料日知錄 架構與演算法 前言 像移動網際網路 o2o 可穿戴裝置等概念一樣,大資料 從甫一提出到颶風般席捲並風靡全球,從最初的技術名詞到形成滲透各行各業的社會現象,所耗時間僅幾年而已,其興也勃焉。那麼,大資料是否會像很多曾經火熱現在已難覓蹤跡的流行概念一樣,將來某日,人們靜心抬眼,發現風已去而水...