演算法之海量資料處理

2021-09-23 21:56:10 字數 729 閱讀 1509

1.雜湊+分治

尋找共同的url

給定兩個a和b檔案,各存放50億個url,每個url佔64位元組,記憶體限制4gb,請找出a和b檔案中共同的url。

乙個檔案的記憶體:5 000 000 000 * 64 = 320gb,每個檔案可以分為100個小檔案,每個檔案大約是3.2gb。

1000萬個字串去重(假設每個字串64位元組)

10 000 000 * 64 = 0.64gb,資料不多可以考慮直接載入進記憶體,使用trie樹,hash表,紅黑樹這些都可以去重。

ps:trie樹,利用了字串的最大字首資訊的一種樹結構,非常適合短文本,重複大的字串查詢場景。

2.檔案的排序

五億整數的大檔案進行排序;

給n個整數排序,沒有重複,值都小於等於一千萬,記憶體使用1mb。

3.倒排索引

通過詞來索引到文件的id號稱為倒排索引,找到對應文件的id號。

ps:一般應用於文件檢索系統,搜尋引擎這種。

4.一致性hash原理

背景:原本分布式集群進行請求分配時是對伺服器數量進行取模的,但是這樣對增加和刪除機器非常不友好,所以就想著在請求和伺服器之間加乙個中介軟體來解決這個問題。

申請乙個很大的陣列比如1到2的32次方,然後把使用者請求均勻的利用hash函式雜湊到陣列上,再把伺服器雜湊到陣列上,每次使用者請求時,會尋找離他最近的一台機器,來實現負載均衡。

解決機器分布不平衡:乙個機器上建立多個副本節點,放置服務節點--虛擬節點。

演算法 海量資料處理

在面試中我們會經常遇到和海量資料處理相關的問題,在這裡我們將問題進行乙個彙總,保證將來我們在遇到海量資料相關問題的時候能夠快速解答。改文章參考 如果記憶體能夠全部裝下 直接使用快速排序。如果記憶體不能夠全部裝下 先將第乙個位元組,也就是前8位進行分桶,可以分為256個桶,也就是將100億的整數分別按...

海量資料處理 高階程式設計師之海量資料處理

何謂海量資料處理?所謂海量資料處理,無非就是基於海量資料上的儲存 處理 操作。何謂海量,就是資料量太大,所以導致要麼是無法在較短時間內迅速解決,要麼是資料太大,導致無法一次性裝入記憶體。那解決辦法呢?針對時間,我們可以採用巧妙的演算法搭配合適的資料結構,如bloom filter hash bit ...

海量資料處理之Bitmap

什麼是bit map 所謂的bit map就是用乙個bit位來標記某個元素對應的value,而key即是該元素。由於採用了bit為單位來儲存資料,因此在儲存空間方面,可以大大節省。如果說了這麼多還沒明白什麼是bit map,那麼我們來看乙個具體的例子,假設我們要對0 7內的5個元素 4,7,2,5,...