對於
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 在需求分析階段一定要多次向客戶求真...