Storm集羣安裝,基於版本1.0.1,
使用apache-storm-1.0.1.tar.gz安裝包。
1.安裝規劃
角色規劃 | IP/機器名 | 安裝軟件 | 運行進程 |
---|---|---|---|
nimbus | zdh-237 | storm | core,nimbus |
supervisor | zdh-238 | storm | supervisor,worker,LogWriter |
supervisor | zdh-239 | storm | supervisor,worker,LogWriter |
2.安裝用戶
storm/zdh1234
useradd -g hadoop -s /bin/bash -md /home/storm storm
3.安裝依賴
1.JDK
2.Python
3.Zookeeper
4.主機名配置
vi /etc/hosts
10.43.159.237 zdh-237
10.43.159.238 zdh-238
10.43.159.239 zdh-239
5.JDK安裝
可以使用root用戶安裝的公共jdk,要求JDK 6+,
爲Storm用戶下配置jdk環境變量
export JAVA_HOME=/usr/java/jdk
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
6.Python安裝
確定系統自帶的Python版本,如果是2.6.6+可以不用再安裝。
python -V
7.Zookeeper安裝
請參考Zookeeper集羣安裝
這裏使用的Zookeeper集羣信息:
zdh-237,zdh-238,zdh-239
服務端口爲默認的2181。
8.Storm安裝
請自行從官網獲取安裝包:
apache-storm-1.0.1.tar.gz
將安裝包拷貝到zdh-237的storm用戶下
scp [email protected]:/home/ling/storm/apache-storm-1.0.1.tar.gz .
解壓安裝包:
tar -zxvf apache-storm-1.0.1.tar.gz
配置環境變量:
export STORM_HOME=/home/storm/apache-storm-1.0.1
export PATH=$PATH:$STORM_HOME/bin
創建本地數據存放的目錄:
mkdir /home/storm/apache-storm-1.0.1/data
9.修改storm.yaml文件
vi conf/storm.yaml
storm.zookeeper.servers:
- "zdh-237"
- "zdh-238"
- "zdh-239"
storm.zookeeper.port: 2181
storm.local.dir: "/home/storm/apache-storm-1.0.1/data"
nimbus.seeds: ["zdh-237", "zdh-238", "zdh-239"]
ui.port: 18080
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
10.拷貝Storm到集羣其他機器
zdh-237的stom複製到zdh-238,zdh-239節點的storm用戶下:
scp -r storm@zdh-237:/home/storm/apache-storm-1.0.1 .
或者僅僅拷貝配置文件
scp storm@zdh-237:/home/storm/apache-storm-1.0.1/conf/storm.yaml .
11.啓動Storm
啓動之前請確保ZooKeeper已正常啓動
11.1.nimbus節點啓動(無日誌)
bin/storm nimbus >/dev/null 2>&1 &
bin/storm ui >/dev/null 2>&1 &
supervisor節點啓動:
bin/storm supervisor >/dev/null 2>&1 &
11.2.nimbus節點啓動(保存日誌):
storm nimbus >nimbusInit.log 2>&1 &
storm ui >uiCoreInit.log 2>&1 &
supervisor節點啓動:
storm supervisor > superInit.log 2>&1 &
11.3.Storm啓動後相關進程
nimbus啓動後相應會產生如下進程:
core(對應Storm UI)
nimbus
supervisor啓動後相應會產生如下進程:
supervisor
提交storm任務後還會生成:
worker,LogWriter
11.4.Storm重啓
Storm沒有提高停止節點的命令,
需要先使用jps或者ps找到Storm所有進程,
再kill掉相應進程,重新啓動。
12.運行自帶測試用例
cd /home/storm/apache-storm-1.0.1/examples/storm-starter/
storm jar storm-starter-topologies-1.0.1.jar storm.starter.StatefulWindowingTopology wordcount
storm jar storm-starter-topologies-1.0.1.jar storm.starter.StatefulTopology StatefulTopologyNew3
停止拓撲任務wordcount:
storm deactivate wordcount
查看Storm後臺管理界面:
10.43.159.237:18080
查看Storm版本:
storm version
13.Storm OOM 內存溢出問題
需要設置的內存參數,以及增大任務的並行度,spout的獲取數據速度。
nimbus.childopts: "-Xmx1024m"
supervisor.childopts: "-Xmx1024m"
worker.childopts: "-Xmx1024m"
14.無法識別主機
提交storm任務時,其他節點supervisor節點無法下載jar包,不能執行任務:
message org.apache.storm.thrift.transport.TTransportException: java.net.UnknownHostException: zdh-237.site
無法識別zdh-237.site主機,刪除zdh-237.site的配置
10.43.159.237 zdh-237.site zdh-237
15.日誌查看配置
在任務中打印的日誌需要修改下面的log4j配置,才能看到結果
-Dlog4j.configurationFile=/home/storm/apache-storm-1.0.1/log4j2/worker.xml
日誌查看:
/home/storm/apache-storm-1.0.1/data/workers/2d60e758-3733-481a-a0b1-2e1e054127d8/artifacts/worker.log
-Dlog4j.configurationFile=/home/storm/apache-storm-1.0.1/log4j2/cluster.xml