首頁 > 軟體

Storm - 使用過程中的一點思考

2020-06-16 17:56:59

引子

這幾天為了優化原有的資料處理框架,比較系統的學習了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


IT145.com E-mail:sddin#qq.com