【Storm篇】--Storm基础概念
一、前述
Storm是個實時的、分布式以及具備高容錯的計算系統,Storm進程常駐內存 ,Storm數據不經過磁盤,在內存中處理。
二、相關概念
1.異步:
流式處理(異步)
客戶端提交數據進行結算,并不會等待數據計算結果。
2.同步:
實時請求應答服務(同步)
客戶端提交數據請求之后,立刻取得計算結果并返回給客戶端。
3.Storm,Sparkstreaming,Mapreduce相關概念比較:
Storm:(實時處理)
專門為流式處理設計
數據傳輸模式更為簡單,很多地方也更為高效
并不是不能做批處理,它也可以來做微批處理,來提高吞吐。
Spark Streaming:微批處理
將RDD做的很小來用小的批處理來接近流式處理
基于內存和DAG可以把處理任務做的很快。
MapReduce:
Storm:進程、線程常駐內存運行,數據不進入磁盤,數據通過網絡傳遞。
MapReduce:為TB、PB級別數據設計的批處理計算框架。
4.Storm 計算模型
Topology – DAG有向無環圖的實現(拓撲圖)
對于Storm實時計算邏輯的封裝
即,由一系列通過數據流相互關聯的Spout、Bolt所組成的拓撲結構
生命周期:此拓撲只要啟動就會一直在集群中運行,直到手動將其kill,否則不會終止
??? (區別于MapReduce當中的Job,MR當中的Job在計算執行完成就會終止)。
Tuple – 元組
Stream中最小數據組成單元
Stream – 數據流
從Spout中源源不斷傳遞數據給Bolt、以及上一個Bolt傳遞數據給下一個Bolt,所形成的這些數據通道即叫做Stream
Stream聲明時需給其指定一個Id(默認為Default)
實際開發場景中,多使用單一數據流,此時不需要單獨指定StreamId
Spout – 數據源
拓撲中數據流的來源。一般會從指定外部的數據源讀取元組(Tuple)發送到拓撲(Topology)中
一個Spout可以發送多個數據流(Stream)
可先通過OutputFieldsDeclarer中的declare方法聲明定義的不同數據流,發送數據時通過SpoutOutputCollector中的emit方法指定數據流Id(streamId)參數將數據發送出去
Spout中最核心的方法是nextTuple,該方法會被Storm線程不斷調用、主動從數據源拉取數據,再通過emit方法將數據生成元組(Tuple)發送給之后的Bolt計算
Bolt – 數據流處理組件
拓撲中數據處理均有Bolt完成。對于簡單的任務或者數據流轉換,單個Bolt可以簡單實現;更加復雜場景往往需要多個Bolt分多個步驟完成
一個Bolt可以發送多個數據流(Stream)
可先通過OutputFieldsDeclarer中的declare方法聲明定義的不同數據流,發送數據時通過SpoutOutputCollector中的emit方法指定數據流Id(streamId)參數將數據發送出去
Bolt中最核心的方法是execute方法,該方法負責接收到一個元組(Tuple)數據、真正實現核心的業務邏輯
?
轉載于:https://www.cnblogs.com/LHWorldBlog/p/8352845.html
總結
以上是生活随笔為你收集整理的【Storm篇】--Storm基础概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot spring m
- 下一篇: kafka和storm集群的环境安装