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的可擴充即時資料處理架構思考
Storm如何分配任務和負載平衡?
Storm進程通訊機制分析
Apache Storm 的曆史及經驗教訓
Apache Storm 的詳細介紹:請點這裡
Apache Storm 的:請點這裡
本文永久更新連結地址: