因为工作需要,需要使用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