因爲工作需要,需要使用jstorm 現在把jstorm的安裝過程和大家分享一下,我是參照https://github.com/alibaba/jstorm 上面和百度進行安裝的.
安裝jstorm前 需要安裝jdk zookeeper 建議較新版本 我用的是3.4.6 參考其他日誌,這裏不再贅述
八臺服務器 CentOS 7
1.python
python 需要至少2.6版本以上,
python -v查看版本
2.安裝zeromq
wget http://download.zeromq.org/zeromq-2.1.7.tar.gz
tar zxf zeromq-2.1.7.tar.gz
cd zeromq-2.1.7
./configure
make
sudo make install
sudo ldconfig
這裏遇到了一個uuid未安裝的問題
configure: error: cannot link with -luuid, install uuid-dev.
百度了一下,解決辦法
yum install libuuid-devel
3.安裝jzmq
git clone git://github.com/nathanmarz/jzmq.git
cd jzmq
./autogen.sh
./configure
make
make install
這裏遇到了兩個問題
具體的make 錯誤信息:
make[1]: *** No rule to make target`classdist_noinst.stamp',needed by `org/zeromq/ZMQ.class'.Stop.
解決方法:手動創建classdist_noinst.stamp 空文件。
touch src/classdist_noinst.stamp
具體的make 錯誤信息:
error: cannot access org.zeromq.ZMQ class file fororg.zeromq.ZMQ not found
javadoc: error - Class org.zeromq.ZMQ not found.
解決方法:手動編譯,然後重新make 即可通過。
cd src
javac -d . org/zeromq/*.java
cd ..
3.安裝jstorm
這裏 以 jstorm-0.9.6.2.zip 爲例
複製到/usr/local下
unzip jstorm-0.9.6.2.zip
配置環境變量
vi /etc/profile
exprot JSTOM_HOME=/usr/local/jstorm-0.9.62
export PATH=$JSTORM_HOME/bin:$PATH
vi $JSTORM_HOME/conf/storm.yaml
配置 zookeeper節點
storm.zookeeper.servers:
- “xxx.xxx.xxx.xxx”
- “xxx.xxx.xxx.xxx”
- “xxx.xxx.xxx.xxx”
配置主節點
nimbus.host : “xxx.xxx.xxx.xxx”
在主節點 使用 nohup jstorm nimbus & 命令啓動
在從節點 使用 nohup jstorm supervisor & 命令啓動
這裏遇到一個問題: 配置nimbus.host 時 : 與 “xxx.xxx.xxx.xxx” 要有空格否則報錯
4.啓動JStorm UI
mkdir ~/.jstorm
cp -f $JSTORM_HOME/conf/storm.yaml ~/.jstorm
這部要注意 在哪個節點上提交storm任務 就要在哪個節點進行復制操作
下載tomcat 7.x (以apache-tomcat-7.0.37 爲例)
tar -xzf apache-tomcat-7.0.37.tar.gz
cd apache-tomcat-7.0.37
cd webapps
cp $JSTORM_HOME/jstorm-ui-0.9.6.2.war ./
mv ROOT ROOT.old
ln -s jstorm-ui-0.9.6.2 ROOT
這個地方可能變化,是根據你的jstorm版本來確定,比如當0.9.6.1時,是ln -s jstorm-0.9.6.1 ROOT
另外不是 ln -s jstorm-ui-0.9.6.2.war ROOT 這個要小心
cd ../bin
./startup.sh
這裏遇到一個問題 python 佔用了 8080 在tomcat/bin下的 server.xml 修改端口即可
5.關於操作命令
啓動一個topology
bin/jstorm jar xxxx.jar com.xxxxx.jstorm.xxx .TestTopology parameter
注: jar包名 你的包名+類名 parameter爲參數
查看一個topology
jstorm list | grep “wordcount”
kill掉一個topology
jstorm kill XXXXXX
XXXXXX爲topology提交時的name