大數(shù)據(jù)常見問題

1、給一個超過100G大小的log file,log中存著IP地址,設(shè)計算法找到出現(xiàn)次數(shù)最多的IP地址?(與如何知道top K的IP,如何使用Linux系統(tǒng)命令實現(xiàn))

Hash分桶法:

  • 將100G文件分成1000份,將每個IP地址映射到相應(yīng)文件中:file_id = hash(ip) % 1000

  • 在每個文件中分別求出最高頻的IP,再合并Hash分桶法;

  • 使用Hash分桶法把數(shù)據(jù)分發(fā)到不同的文件;

  • 各個文件分別統(tǒng)計top K;

2、給定100億個整數(shù),設(shè)計算法找到只出現(xiàn)一次的整數(shù)。

Hash分桶法,將100億個整數(shù)映射到不同的區(qū)間,在每個區(qū)間中分別找只出現(xiàn)一次的整數(shù)。

3、給兩個文件,分別有100億個整數(shù),我們只有1G內(nèi)存,如何找到兩個文件交集

掃描每個整數(shù)是否出現(xiàn)過,節(jié)省內(nèi)存方法使用bitmap。

桶分 + bitmap。如果整數(shù)是32bit,直接使用bitmap的方法實現(xiàn)。

所有整數(shù)共232種可能,每個數(shù)用兩位表示,00表示文件均沒出現(xiàn),10表示文件1出現(xiàn)過,01表示文件2出現(xiàn)過,11表示兩文件均出現(xiàn)過,共需要232*2/8 = 1GB內(nèi)存,遍歷兩個文件中的所有整數(shù),然后尋找bitmap中11對應(yīng)的整數(shù)即是兩個文件的交集,這樣即可線性時間復(fù)雜度完成。

4、1個文件有100億個int,1G內(nèi)存,設(shè)計算法找大出現(xiàn)次數(shù)超過2次的所有整數(shù)。

Bitmap擴展:用2個bit表示狀態(tài),0表示未出現(xiàn),1出現(xiàn)過1次,2出現(xiàn)過2次或以上。

5、給兩個文件,分別有100億個query,我們只有1G內(nèi)存,如何找到兩個文件交集?分別給出精確算法和近似算法?

精確算法:Hash分桶法

將兩個文件中的query hash到N個小文件中,并標明query的來源;

在各個小文件中找到重合的query

將找到的重合query匯總

近似算法:BloomFilter算法

5、說說Zookeeper

640.jpg
640hbase.jpg

Zookeeper的核心是原子廣播,這個機制保證了各個Server之間的同步。實現(xiàn)這個機制的協(xié)議叫做Zab協(xié)議。Zab協(xié)議有兩種模式,它們分別是恢復(fù)模式(選主)和廣播模式(同步)。當服務(wù)啟動或者在領(lǐng)導(dǎo)者崩潰后,Zab就進入了恢復(fù)模式,當領(lǐng)導(dǎo)者被選舉出來,且大多數(shù)Server完成了和leader的狀態(tài)同步以后,恢復(fù)模式就結(jié)束了。狀態(tài)同步保證了leader和Server具有相同的系統(tǒng)狀態(tài)。

當leader崩潰或者leader失去大多數(shù)的follower,這時候zk進入恢復(fù)模式,恢復(fù)模式需要重新選舉出一個新的leader,讓所有的Server都恢復(fù)到一個正確的狀態(tài)。

ZooKeeper學(xué)習第一期---Zookeeper簡單介紹

6、說說HBase

Hbase架構(gòu)與原理

Dpz74XZ.jpg

7、說說ETL

ETL講解

ETL (Extract-Transform-Load的縮寫,即數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的過程)
是將業(yè)務(wù)系統(tǒng)的數(shù)據(jù)經(jīng)過抽取、清洗轉(zhuǎn)換之后加載到數(shù)據(jù)倉庫的過程,目的是將企業(yè)中的分散、零亂、標準不統(tǒng)一的數(shù)據(jù)整合到一起,為企業(yè)的決策提供分析依據(jù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容