對于一堆時(shí)刻在增長的數(shù)據(jù),如果要統(tǒng)計(jì),可以采取什么方法呢?
- 等數(shù)據(jù)增長到一定程度的時(shí)候,跑一個(gè)統(tǒng)計(jì)程序進(jìn)行統(tǒng)計(jì)。適用于實(shí)時(shí)性要求不高的場景。
如將數(shù)據(jù)導(dǎo)到HDFS,再運(yùn)行一個(gè)MAP REDUCE JOB。
- 如果實(shí)時(shí)性要求高的,上面的方法就不行了。因此就帶來第二種方法。
在數(shù)據(jù)每次增長一筆的時(shí)候,就進(jìn)行統(tǒng)計(jì)JOB,結(jié)果放到DB或搜索引擎的INDEX中。
STORM就是完成這種工作的。
HADOOP與STORM比較
- 數(shù)據(jù)來源:HADOOP是HDFS上某個(gè)文件夾下的可能是成TB的數(shù)據(jù),STORM是實(shí)時(shí)新增的某一筆數(shù)據(jù)
- 處理過程:HADOOP是分MAP階段到REDUCE階段,STORM是由用戶定義處理流程,
流程中可以包含多個(gè)步驟,每個(gè)步驟可以是數(shù)據(jù)源(SPOUT)或處理邏輯(BOLT) - 是否結(jié)束:HADOOP最后是要結(jié)束的,STORM是沒有結(jié)束狀態(tài),到最后一步時(shí),就停在那,直到有新
數(shù)據(jù)進(jìn)入時(shí)再從頭開始 - 處理速度:HADOOP是以處理HDFS上大量數(shù)據(jù)為目的,速度慢,STORM是只要處理新增的某一筆數(shù)據(jù)即可
可以做到很快。 - 適用場景:HADOOP是在要處理一批數(shù)據(jù)時(shí)用的,不講究時(shí)效性,要處理就提交一個(gè)JOB,STORM是要處理
某一新增數(shù)據(jù)時(shí)用的,要講時(shí)效性
- 與MQ對比:HADOOP沒有對比性,STORM可以看作是有N個(gè)步驟,每個(gè)步驟處理完就向下一個(gè)MQ發(fā)送消息,
監(jiān)聽這個(gè)MQ的消費(fèi)者繼續(xù)處理