色色一区二区三区,一本大道道久久九九AV综合,国产香蕉97碰碰视频va碰碰看,综合亚洲国产2020

    <legend id="mljv4"><u id="mljv4"><blockquote id="mljv4"></blockquote></u></legend>

    <sub id="mljv4"><ol id="mljv4"><abbr id="mljv4"></abbr></ol></sub>
      <mark id="mljv4"></mark>
      人文藝術(shù) > 海量數(shù)據(jù)算法:如何從超過10G的記錄IP地址的日志中,較快的找出登

      海量數(shù)據(jù)算法:如何從超過10G的記錄IP地址的日志中,較快的找出登

      2020-08-10 14:25閱讀(75)

      海量數(shù)據(jù)算法:如何從超過10G的記錄IP地址的日志中,較快的找出登錄次數(shù)最多的一個IP?這種海量數(shù)據(jù)中找出出現(xiàn)次數(shù)最多的一項,這類問題如何解現(xiàn)在網(wǎng)上的答案通常

      1

      采樣隨機位置從樣本里取出10塊數(shù)據(jù),每塊數(shù)據(jù)1k,數(shù)據(jù)塊之間不重合。

      然后統(tǒng)計一下這10塊數(shù)據(jù)中哪個IP地址出現(xiàn)的次數(shù)最多即可。

      2

      10g的日志,應(yīng)該是文本類型的。10g的文本文件遍歷一遍基本上必須的。逐行讀取,正則匹配出IP地址轉(zhuǎn)行成數(shù)字類型,變成數(shù)組,讀取每一行都判斷數(shù)組中是否存在,如果有計數(shù)器加一,如果沒有新建一個。雖然有一些算法可以減少遍歷,比如在遍歷到超過一半之后,如果發(fā)現(xiàn)有IP超過了總數(shù)的一半兒,后面就不需要遍歷了,比如剩余30%之后,所有跟第一名差距超過30%的可以都不計數(shù)了,但是這種情況基本在最后才會遇見,判斷的時間超過計數(shù)器的時間。性價比最好的就是遍歷一般計數(shù)器來實現(xiàn)。

      3

      網(wǎng)上的答案需要十幾分鐘是什么答案?能闡述一下嗎?

      存儲日志一般來說用ELK的概率比較高。

      4

      堆服務(wù)器,分庫查詢??

      不夠快就再加服務(wù)器,理論上0.1秒也是可以的。

      5

      這些答案想的太復(fù)雜了。你仔細(xì)算一下,ip地址是4個字節(jié),也就是最多4G個。開一個16GB的數(shù)組,每個ip的4字節(jié)組成的32位數(shù)就是這個數(shù)組的索引,數(shù)組中每個元素32位整數(shù),記錄并自增這個索引對應(yīng)的ip出現(xiàn)的次數(shù)。這樣,你讀一邊10GB日志,也就算出最大的是誰了。找最大應(yīng)該不用教對吧?

      這樣,如果磁盤夠快,30秒以內(nèi)就應(yīng)該出數(shù)據(jù)了。

      6

      假設(shè)是n條記錄,每個IP地址按點的分割,劃分為四列。以第一部分為例,遍歷一次(映射到一個連續(xù)的255個字節(jié)中),得出哪個數(shù)出現(xiàn)次數(shù)最多,對符合條件的第二列遍歷,再選出第二列哪個數(shù)出現(xiàn)次數(shù)最多(對第一列出現(xiàn)最多的數(shù)量標(biāo)記,可選,數(shù)量不多可以采用),依次類推?梢杂枚嗑程甚至多臺計算機同時計算。

      7

      這個問題所用算法應(yīng)該可以歸結(jié)為經(jīng)典的wordcount,不復(fù)雜,網(wǎng)上搜一下代碼即可,不再贅述。

      至于具體實現(xiàn),有兩種路線。第一是自己在網(wǎng)上開源代碼基礎(chǔ)上寫一個專用程序,運行在大內(nèi)存機器上,程序把數(shù)據(jù)全部加載到內(nèi)存中,實現(xiàn)內(nèi)存計算,為了加快速度,可以使用多線程。第二條路線是用支持內(nèi)存計算的框架,比如spark,這樣程序更簡單,而且可以實現(xiàn)多機分布式并行檢索,代價是需要學(xué)習(xí)不少東西。

      8

      elk日志系統(tǒng)幾秒就得到你要的結(jié)果

      相關(guān)問答推薦