spark streaming是spark 核心API的拓展,是一個實時數(shù)據(jù)計算工具题诵,具備高吞吐量洁仗、容錯機制的特點,支持多種數(shù)據(jù)源獲取數(shù)據(jù)性锭,接受kafka赠潦、flume、HDFS等數(shù)據(jù)源的數(shù)據(jù)草冈,通過處理之后她奥,存儲到HDFS、database等各種地方怎棱。
streaming和storm之間的區(qū)別:
1.streaming支持批處理數(shù)據(jù)哩俭、storm對數(shù)據(jù)一條一條處理,storm的實時性高于streaming拳恋;
2.streaming的吞吐量高于storm凡资;
3、容錯機制不同:storm是acker(ack/fail消息確認機制)確認機制確保一個tuple被完全處理诅岩,Spark Streaming是通過存儲RDD轉化邏輯進行容錯讳苦,也就是如果數(shù)據(jù)從A數(shù)據(jù)集到B數(shù)據(jù)集計算錯誤了,由于存儲的有A到B的計算邏輯吩谦,所以可以從A重新計算生成B鸳谜。
運行原理:
spark streaming將接收到的實時數(shù)據(jù)流信息,按照一定的時間間隔式廷,對數(shù)據(jù)進行劃分咐扭,交給spark engine引擎進行處理,最終得到一批批的結果。每一批數(shù)據(jù)在spark內核對應一個RDD蝗肪,一批RDD構成Dstream袜爪。
對Dstream的操作都能夠轉變?yōu)閷γ總€RDD的操作,這些操作構成一個DstreamGraph薛闪。
構建小數(shù)據(jù)片的DAG構建辛馆,對data進行切片處理
Dstream Graph的依賴關系是計算和處理結果有關的RDD。
架構和作業(yè)流程:
streaming由三個模塊構成
master:記錄Dtream的依賴關系豁延,并負責調度以生成新的RDD昙篙,相當于AM的功能,優(yōu)化代碼
worker:從網絡接受數(shù)據(jù)并存儲到內存中诱咏,執(zhí)行RDD算子
client:從kafka等接受數(shù)據(jù)
作業(yè)流程:從網絡中獲取數(shù)據(jù)(把數(shù)據(jù)切成片)苔可,同時傳入Dstream Graph(代碼邏輯),經過job scheduler 變?yōu)閟park job袋狞,交給job manage處理焚辅,job manage把數(shù)據(jù)處理成任務隊列進行處理,最終再通過spark scheduler發(fā)送到worker處理