1 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊
Storm的解決問題的scope主要在于流計(jì)算,說流計(jì)算之前我們先簡單的說下一般數(shù)據(jù)處理系統(tǒng)的過程。一般數(shù)據(jù)處理簡單說要有幾個(gè)環(huán)節(jié):數(shù)據(jù)采集,數(shù)據(jù)計(jì)算,結(jié)果輸出。題主的問題主要是在數(shù)據(jù)采集和計(jì)算之間的對接。
一般來說計(jì)算系統(tǒng)(storm)不會(huì)自己產(chǎn)生業(yè)務(wù)數(shù)據(jù),業(yè)務(wù)數(shù)據(jù)一般來自頁面的埋點(diǎn),或者對數(shù)據(jù)庫log的解析,對于storm來說采集系統(tǒng)是個(gè)外部系統(tǒng)。 采集系統(tǒng)是數(shù)據(jù)的生產(chǎn)者,流計(jì)算(storm)是數(shù)據(jù)的消費(fèi)者。二者的速度并不是時(shí)時(shí)刻刻匹配的,中間就需要需要一個(gè)緩沖,這個(gè)模型下消息隊(duì)列在適合不過了。當(dāng)然為什么一般用kafka,這個(gè)超出了這個(gè)問題,我們暫不討論。如果題主要處理的數(shù)據(jù)不是實(shí)時(shí)產(chǎn)生的而是靜態(tài)數(shù)據(jù)那就沒必要使用消息隊(duì)列了,當(dāng)然也沒必要使用storm,使用Hadoop MR更合適。
關(guān)于spout會(huì)不會(huì)重復(fù)讀取數(shù)據(jù)的問題,簡單來說消息隊(duì)列中數(shù)據(jù)會(huì)分partition支持多并發(fā)。 題主可以看看kafka的文檔,一般消息隊(duì)列,對一份數(shù)據(jù)(一個(gè)topic,對應(yīng)離線系統(tǒng)的表)會(huì)分不同的parition,不同的spout并發(fā)可以讀取不同的parition,當(dāng)然一個(gè)并發(fā)可以讀取多個(gè)parition,但是多個(gè)并發(fā)讀取一個(gè)parition會(huì)引起混亂這就是題主的問題。也就是實(shí)際應(yīng)用中一個(gè)parition只會(huì)有一個(gè)并發(fā)讀取。
- 1 回答
- 0 關(guān)注
- 1351 瀏覽
添加回答
舉報(bào)