如果是小檔案
大檔案情況
map集合,list集合,陣列,set集合——-都是在記憶體進行操作的,檔案過大會造成記憶體溢位,根本無法處理。
一台機器原始效能有限,根據摩爾定律:每18-24個月硬體效能提公升一倍,但是資料的增加速度遠遠大於硬體的提公升速度。縱向擴充套件效能不是最終的解決方案。
我們考慮橫向擴充套件,使用多台機器,分而治之。將原來的大檔案分成很多個小檔案,這很多個小檔案分別在不同的機器上計算。
最終的解決方案:
- 1)將檔案切分
- 2)每個機器進行統計自己機器上的資料的ip出現的次數
- 3)聚合統計 出現次數最多的ip
如果是小檔案:
大檔案:如果是小檔案
用流讀取,放入set,再用set.contains(url)方法就能找到是否存在。
大檔案:
我們知道陣列是由下標的,所有查詢效率很高,但是增刪就很慢,我們這裡需要查詢,所以可以利用陣列來做。
- 首先有乙個乙個空的m位的位陣列,所有位的值都為0。我們將url進行雜湊:hash(url),得到每乙個url的雜湊code值,雜湊code值,記做:index=雜湊值%(分割槽數n)。則如果陣列的index有值,該位就變為1。即用陣列下標去記錄(url雜湊)以後並且(%分割槽)以後的數值,用0,1分別記錄該值是否存在。
- 但是有乙個問題:雜湊的衝突本來就大,(%分割槽)以後衝突就更大,這樣得出來的結果是不準確的。此時,我們可以設計k個雜湊函式,這樣乙個url就有k個hash值,就有k個%分割槽以後的位值。只有這k個位置的值都為1,我們才判定這個url是存在的。
- 又有乙個問題:雜湊函式個數k為多少才是合理的呢?其實以上就是布隆過濾器的思想,根據公式:當 k=0.7 (實際長度/陣列長度) 時,誤判率最低。例如我們有1000000條資料,要放在10000長度的陣列中,需要0.7*(1000000/10000)=70個雜湊函式誤判率最低
01 hadoop入門簡介
1.資料體量大。中小型公司的資料量在tb級別,大型公司的資料量是pb級別 京東每天的日誌量達到2.5pb 3pb之間 2.資料的種類和 多樣化,致使處理手段越來越多樣化 3.資料增長越來越快。網際網路的出現及發展使得資訊傳播速度越來越快 4.資料的價值密度越來越低。價值密度是所需要的資訊 資訊的總量...
大資料 hadoop 01 前言
hadoop 能做的事情是對歷史的資料進行分析和處理。資料 data,資訊 結構化資料 database spreadsheet file in record format 非結構化資料 半結構化資料 xml docs logs click stream equipment 完全非結構化資料 web...
Hadoop技巧(01) 外掛程式,終端許可權
文章是哥 mephisto 寫的,sourcelink 在hadoop開發或者使用中,可能會使用到一些外掛程式或3方軟體,比如 eclipse的hadoop外掛程式,etl的kettle。那麼就存在乙個hdfs目錄許可權的問題。下面就這個許可權問題進行闡述。一 目錄結構 hadoop檔案系統hdfs...