2021-05-12 14:32:11
Storm - 使用過程中的一點思考
引子
這幾天為了優化原有的資料處理框架,比較系統的學習了storm的一些內容,整理一下心得
1. storm提供的是一種資料處理思想,它不提供具體的解決方案
storm的核心是topo的定義,而topo承載著所有的業務邏輯,我們基於storm的topo的組織方案,來編排私有的業務實現邏輯。
storm的業務抽象是最基本的資訊流式處理正規化。
2. storm支援多種語言
storm提供的處理框架支援多種語言,Java只是其中一種,我們可以使用不同的語言實現topo
3. storm會將依賴的class打入同一個類
這對初學者可能很奇怪,但這是storm為了分散式部署所做的妥協,如果jar包本身帶有執行期所需要的所有東西,那storm本身就可以只作為一個執行框架而存在,而jar包在cluster之間的分發也會變得容易許多。
4. storm可以支援多個topo
上面一再說了,storm本身只是一種資料的處理框架,業務邏輯的核心是topo,我們可以向storm叢集中提交多個topo來充分使用storm的叢集式處理能力。也因為設定是對topo生效的,因此也可以定義topo的處理能力。
5. 與Hadoop相比較,storm更擅長即時處理
storm不會有hadoop複雜和冗長的預處理過程,分散式的storm和分散式的hadoop是一對好搭檔,他們可以共同構成一套巨量資料處理框架。
6. storm的topo間通訊基本是不可行的
topo在storm中獨立執行,互不干擾的,在程式碼層面進行topo的直接通訊是不可行的(至少我沒有找到),只能通過storm ui和有限的api來進行監控。
如果實在有通訊需求,可以考慮使用zookeeper或者資料庫作為通訊的中介,有topo與中介通訊實現間接的交流。
一種基於Storm的可延伸即時資料處理架構思考 http://www.linuxidc.com/Linux/2015-07/120511.htm
Storm如何分配任務和負載均衡? http://www.linuxidc.com/Linux/2015-07/120466.htm
Storm進程通訊機制分析 http://www.linuxidc.com/Linux/2014-12/110158.htm
Apache Storm 的歷史及經驗教訓 http://www.linuxidc.com/Linux/2014-10/108544.htm
相關文章