storm實時數(shù)據(jù)處理 流式計算和實時計算有什么區(qū)別?
流式計算和實時計算有什么區(qū)別?處理、實時計算屬于一類的,即計算在數(shù)據(jù)變化時,都是在數(shù)據(jù)的計算實時性要求比較高的場景,能夠實時的響應結果,一般在秒級,Yahoo的S4,twiter的storm都屬于流處
流式計算和實時計算有什么區(qū)別?
處理、實時計算屬于一類的,即計算在數(shù)據(jù)變化時,都是在數(shù)據(jù)的計算實時性要求比較高的場景,能夠實時的響應結果,一般在秒級,Yahoo的S4,twiter的storm都屬于流處理和實時計算一類的。
Add-hoc和實時查詢都計算在query時,實時查詢是響應可能千變?nèi)f化的結果,無法事先通過枚舉得到并存儲起來,需要根據(jù)用戶輸入的不同實時查詢出不同的響應,對實時性要求比較高,比如hbase,內(nèi)存數(shù)據(jù)庫的查詢redis、mongodb等;Add-hoc屬于對實時性要求不高的場景。
Add-hoc是針對各種臨時的、自定義的需求采取的解決方案,比如hive,需求是不確定的,可以通過編寫sql來應對各種問題;最近出現(xiàn)的基于hadoop的實時查詢Impala,解決了實時性的要求,比hive效率。
離線計算一般是批量處理數(shù)據(jù)庫的過程,比如利用hadoop的mapreduce;內(nèi)存計算spark類似于mapreduc
storm是什么類型?
一、Storm概述
Storm是一個分布式的、可靠的、零失誤的流式數(shù)據(jù)處理系統(tǒng)。
它的工作就是委派各種組件分別獨立的處理一些簡單任務。在Storm集群中處理輸入流的是Spout組件,而Spout又把讀取的數(shù)據(jù)傳遞給叫Bolt的組件。
Bolt組件會對收到的數(shù)據(jù)元組進行處理,也有可能傳遞給下一個Bolt。我們能夠把Storm集群想象成一個由bolt組件組成的鏈條集合。數(shù)據(jù)在這些鏈條上傳輸。而bolt作為鏈條上的節(jié)點來對數(shù)據(jù)進行處理。
Storm和Hadoop集群表面看上去非常類似,可是Hadoop上面執(zhí)行的是MapReduceJobs,而在Storm上執(zhí)行的是拓撲topology,這兩者之間是非常不一樣的,關鍵差別是:MapReduce終于會結束,而一個topology永遠會執(zhí)行(除非你手動kill掉),換句話說。Storm是面向實時數(shù)據(jù)分析,而Hadoop面向的是離線數(shù)據(jù)分析。
如果有這么一種情形。當你看類節(jié)目的時候。他們會常常提到一些人名和一些熱門話題。如果我們把當中人名和話題的反復次數(shù)都記錄下來,結果應該是一件非常有趣的事情。
因此,想象在Storm環(huán)境下,我們能夠把辯論者說的話作為輸入流,spout組件來讀取這些數(shù)據(jù),然后把每一句話發(fā)送給bolt1組件,bolt1組件負責把這一句話拆分成一個個單詞。再把這些單詞發(fā)送到bolt2組件。bolt2組件負責統(tǒng)計每一個單詞的數(shù)量然后把這些信息存儲到數(shù)據(jù)庫中。辯論者在不斷的說話。而storm不斷的實時刷新數(shù)據(jù)庫中結果,當你想查看這些結果時,你僅僅需查詢數(shù)據(jù)庫就可以。
如今,你能夠想象假設能夠把這些spout和bolt均衡分布到整個集群中,而且能夠方便地做無限制的擴展,厲害吧?這就是Storm的威力!