為什么storm的數據來自于消息隊列
1 回答

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