Storm流式處理框架第二期 Storm計算模型

2021-10-02 15:09:13 字數 1642 閱讀 5460

對於

storm

實時計算邏輯的封裝,即,由一系列通過資料流相互關聯的spout

、bolt

所組成的拓撲結構。

生命週期:此拓撲只要啟動就會一直在集群中執行,直到手動將其

kill

,否則不會終止(區別於mapreduce

當中的job,mr

當中的job

在計算執行完成就會終止)

stream

中最小資料組成單元

從spout

中源源不斷傳遞資料給

bolt

、以及上乙個

bolt

傳遞資料給下乙個

bolt

,所形成的這些資料通道即叫做

stream

stream

宣告時需給其指定乙個

id(預設為

default

),實際開發場景中,多使用單一資料流,此時不需要單獨指定streamid

拓撲中資料流的**。一般會從指定外部的資料來源讀取元組(

tuple

)傳送到拓撲(

topology)中

乙個spout

可以傳送多個資料流(

stream

),可先通過outputfieldsdeclarer

中的declare

方法宣告定義的不同資料流,傳送資料時通過

spoutoutputcollector

中的emit

方法指定資料流id(

streamid

)引數將資料傳送出去

spout

中最核心的方法是

nexttuple

,該方法會被

storm

執行緒不斷呼叫、主動從資料來源拉取資料,再通過

emit

方法將資料生成元組(

tuple

)傳送給之後的

bolt

計算拓撲中資料處理均有

bolt

完成。對於簡單的任務或者資料流轉換,單個

bolt

可以簡單實現;更加複雜場景往往需要多個

bolt

分多個步驟完成 乙個

bolt

可以傳送多個資料流(

stream

),可先通過outputfieldsdeclarer

中的declare

方法宣告定義的不同資料流,傳送資料時通過

spoutoutputcollector

中的emit

方法指定資料流id(

streamid

)引數將資料傳送出去

bolt

中最核心的方法是

execute

方法,該方法負責接收到乙個元組(

tuple

)資料、真正實現核心的業務邏輯

storm的計算模型相當於乙個dag(有向無環圖),由spout(源節點)發出資料流,bolt充當dag中的中間節點,而目標節點(終節點)也是乙個bolt,只不過它沒有再向其他bolt傳送資料流。整個dag由使用者根據演算法自定義,可以是線性結構,也可以是很複雜的圖,相比mapreduce單一的計算模型顯得更加靈活多變。

第二期題目

1.請寫乙個擴充套件string的類mystring,加入乙個println 方法,你覺得用繼承string類的方法呢,然後加乙個println 方法簡單?還是在mystring內部建立乙個string物件進行擴充套件?2.類a的預設建構函式中,有這麼一句,system.out.println a ...

學習報告第二期

學習報告2020 7 30 學習報告 第二期 時間週期 7月1日 7月30日 姓名 專業 徐斌 電子資訊專碩 一.內容 1 基本掌握gpio的埠位配置和輸出模式位 2 通過跑馬燈庫函式實驗初步掌握1.使能io口時鐘 不同的io,呼叫的時鐘使能函式不一樣 2.初始化io口模式。呼叫gpio init函...

第二期的專案答辯

今天,累了一天,終於把專案弄完了。很悲劇,整合完專案,才發現有好幾個功能都沒有實現,幸虧現在是練習,是考試,不是真正的工程。不然的話我就慘了。這次專案又讓我學會很多。如 1 作為乙個團隊的領導,要清楚每個人的能力,根據個人能力去安排任務,而不是大包大攬的分區域。2 在需求分析階段一定要多次向客戶求真...