Storm 是開源免費的分布實時計算系統(tǒng)(Apache Storm is a free and open source distributed realtime computation system)杉允。這里提到了兩個關鍵詞:
- 分布式
- 實時
1掀鹅、分布式意味著 Storm 是部署在多臺主機上惠猿,它解決并發(fā)性(多機資源同時作業(yè))以及可用性(一臺主機出現(xiàn)問題瓶颠,計算任務移交到其他機器)問題
分布式自然而然讓我們聯(lián)想到了需要一個協(xié)調服務耻煤,這里提到的就是 zookeeper。zookeeper 用于協(xié)調 Nimbus膝捞、Supervisor鹰溜。
2、實時則區(qū)別于 Mapreduce 的批處理
至于如何從原理上理解 Storm 的特性吞彤,我會在后面的文章中具體介紹我衬。<font color="red">本文則簡單介紹如何安裝以及啟動 Storm,</font> 先將其完整的運作起來能夠幫助我們理解以及建立信心饰恕。這里為什么說是簡單介紹呢挠羔,因為安裝并啟動一個 Storm 運行環(huán)境確實很簡單。
安裝 Storm 之前請確保你已經安裝好:
- jdk
- zookeeper
部署示例
- 三臺主機 mini01 + mini02 + mini03
- zookeeper 部署在三臺主機上
- mini01 上部署 nimbus 并啟動 UI
- supervisor 部署在 mini02 和 mini03 上
安裝
zookeeper 集群安裝
參見 zookeeper 集群安裝配置 ,當然你可以安裝單節(jié)點的 zookeeper
storm 安裝 & 配置
下載解壓
訪問官網埋嵌,下載你需要的版本破加,本文使用的是 1.0.6 版本(apache-storm-1.0.6.tar.gz)。
將 apache-storm-1.0.6.tar.gz 拷貝到三臺主機上并解壓雹嗦。
cd /home/app
tar -zxvf apache-storm-1.0.6.tar.gz
增加 Storm 環(huán)境變量
修改/etc/profile范舀,將 Storm 加入環(huán)境變量
vim /etc/profile
/etc/profile 文件如下
export STORM_HOME=/home/app/apache-storm-1.0.6
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$STORM_HOME/bin:$PATH
生效/etc/profile
source /etc/profile
修改 Storm 配置文件
cd apache-storm-1.0.6/conf
vim storm.yaml
配置每臺主機上的 storm.yaml 文件,配置內容如下
storm.zookeeper.servers:
- "mini01"
- "mini02"
- "mini03"
storm.local.dir: "/home/app/apache-storm-1.0.6/data"
nimbus.seeds: ["mini01"]
supervisor.slots.ports:
- 6700
ui: 8088
其中:
- storm.zookeeper.servers: 配置 zookeeper 的服務節(jié)點了罪,因為這里使用 zookeeper 的默認端口(2181)锭环,所以 zookeeper 的端口就不需要特別指定
- storm.local.dir: Nimbus 和 upervisor 需要一個本地目錄存放少量狀態(tài)(例如 Jar 包或者配置文件之類)。用戶首先需要創(chuàng)建這個目錄泊藕。
- nimbus.seeds:nimbus 節(jié)點地址辅辩,這里 mini01 主機作為主節(jié)點
- supervisor.slots.ports:配置supervisor,開啟幾個端口插槽娃圆,就開啟幾個對應的worker進程
- ui: 設置Storm Web UI 的 http 端口(可選玫锋,本文中我們只在 mini01 上配置該屬性,因為我們訪問的是 mini01:8088)
特別注意踊餐,配置項冒號后面需要接一個空格
這里只列出了幾個能保證服務正常運行的配置項景醇,Storm 提供了很多其他配置項,感興趣的可以看看 Storm 配置文件源碼
啟動
mini01 上 啟動 nimbus 以及 Storm UI
nohup storm nimbus &
nohup storm ui &
mini02 和 mini03 上啟動 supervisor
nohup storm supervisor &
驗證
jps
mini01 上可以看到 zookeeper(QuorumPeerMain) 以及 nimnus 進程
[root@mini01 5257]# jps
4810 QuorumPeerMain
5257 core
5206 nimbus
5410 Jps
mini02 和 mini03 上可以看到 supervisor 進程
[root@mini02 bin]# jps
2823 QuorumPeerMain
3100 Supervisor
3191 Jps
Storm Web UI
訪問 mini01:8088
Tips
在安裝啟動時可能會有一些報錯(例如下面):
- storm nimbus not a leader
- java.util.zip.ZipException: Not in GZIP format
- org.apache.storm.shade.org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode
請確保:
- 防火墻沒有阻止端口吝岭,包括 zookeeper 和 storm三痰。
- zookeeper 正常啟動吧寺。
- /etc/hosts 配置正確。
不能正常運行散劫,查看如下幾個日志稚机,對癥下藥即可:
- zookeeper 報錯請查看 ZK_HOME/bin/zookeeper.out;
- nimbus 報錯請查看 STORM_HOME/logs/nimbus.log;
- supervisor 報錯請查看 STORM_HOME/logs/supervisor.log