JStorm 是参考 Apache Storm 实现的实时流式计算框架,在网络IO、线程模型、资源调度、可用性及稳定性上做了持续改进,已被越来越多企业使用。
从应用的角度,JStorm应用是一种遵守某种编程规范的分布式应用。从系统角度, JStorm是一套类似MapReduce的调度系统。 从数据的角度,JStorm是一套基于流水线的消息处理机制。
实时计算现在是大数据领域中最火爆的一个方向,因为人们对数据的要求越来越高,实时性要求也越来越快,传统的Hadoop MapReduce,逐渐满足不了需求,因此在这个领域需求不断。
Jstorm 集群安装
1、系统环境准备
<span style="color: #57a64a;font-style: italic;line-height: 26px"># OS: CentOS 6.8 mininal</span>
<span style="color: #57a64a;font-style: italic;line-height: 26px"># host.ip: 10.1.1.78 aniutv-1</span>
<span style="color: #57a64a;font-style: italic;line-height: 26px"># host.ip: 10.1.1.80 aniutv-2</span>
<span style="color: #57a64a;font-style: italic;line-height: 26px"># host.ip: 10.1.1.97 aniutv-5</span>
2、安装目录自定义
jstorm : /opt/jstorm (源码安装);
zookeeper : /opt/zookeeper(源码安装);
java : /usr/java/jdk1.7.0_79 (rpm包安装)
3、zookeeper 集群安装
4、zeromq 安装
zeromq下载地址:http://zeromq.org/area:download/
下载zeromq-4.2.1.tar.gz 到/usr/local/src
<span style="color: #4ec9b0;line-height: 26px">cd</span> /usr/<span style="color: #4ec9b0;line-height: 26px">local</span>/src && tar -zxf zeromq-4.2.1.tar.gz -C /opt
cd /opt/zeromq-4.2.1 && ./configure && make && sudo make install && sudo ldconfig
5、jzmq安装
<span style="color: #4ec9b0;line-height: 26px">cd</span> /opt && git <span style="color: #4ec9b0;line-height: 26px">clone</span> https://github.com/nathanmarz/jzmq.git
./autogen.sh && ./configure && make && make install
6、JStorm安装
wget https://github.com/alibaba/jstorm/releases/download/2.1.1/jstorm-2.1.1.zip -P /usr/<span style="color: #4ec9b0;line-height: 26px">local</span>/src
<span style="color: #4ec9b0;line-height: 26px">cd</span> /usr/<span style="color: #4ec9b0;line-height: 26px">local</span>/src && unzip jstorm-2.1.1.zip -d /opt
<span style="color: #4ec9b0;line-height: 26px">cd</span> /opt && mv jstorm-2.1.1 jstorm
<span style="color: #57a64a;font-style: italic;line-height: 26px"># mkdir /opt/jstorm/jstorm_data</span>
<span style="color: #4ec9b0;line-height: 26px">echo</span> <span style="color: #d69d85;line-height: 26px">'# jstorm env'</span> >> ~/.bashrc
<span style="color: #4ec9b0;line-height: 26px">echo</span> <span style="color: #d69d85;line-height: 26px">'export JSTORM_HOME=/opt/jstorm'</span> >> ~/.bashrc
<span style="color: #4ec9b0;line-height: 26px">echo</span> <span style="color: #d69d85;line-height: 26px">'export PATH=$PATH:$JSTORM_HOME/bin'</span> >> ~/.bashrc
<span style="color: #4ec9b0;line-height: 26px">source</span> ~/.bashrc
# JStorm 配置
sed -i /<span style="color: #d69d85;line-height: 26px">'storm.zookeeper.servers:/a\ - "10.1.1.78"'</span> /opt/jstorm/conf/storm.yaml
sed -i /<span style="color: #d69d85;line-height: 26px">'storm.zookeeper.servers:/a\ - "10.1.1.80"'</span> /opt/jstorm/conf/storm.yaml
sed -i /<span style="color: #d69d85;line-height: 26px">'storm.zookeeper.servers:/a\ - "10.1.1.97"'</span> /opt/jstorm/conf/storm.yaml
sed -i /<span style="color: #d69d85;line-height: 26px">'storm.zookeeper.root/a\ nimbus.host: "10.1.1.78"'</span> /opt/jstorm/conf/storm.yaml
配置项:
storm.zookeeper.servers: 表示zookeeper 的地址;
nimbus.host: 表示nimbus的地址;
storm.zookeeper.root: 表示JStorm在zookeeper中的根目录,当多个JStorm共享一个zookeeper时,需要设置该选项,默认即为“/jstorm”;
storm.local.dir: 表示JStorm临时数据存放目录,需要保证JStorm程序对该目录有写权限;
java.library.path: Zeromq 和java zeromq library的安装目录,默认”/usr/local/lib:/opt/local/lib:/usr/lib”;
supervisor.slots.ports: 表示Supervisor 提供的端口Slot列表,注意不要和其他端口发生冲突,默认是68xx,而Storm的是67xx;
topology.enable.classloader: false, 默认关闭classloader,如果应用的jar与JStorm的依赖的jar发生冲突,比如应用使用thrift9,但jstorm使用thrift7时,就需要打开classloader。建议在集群级别上默认关闭,在具体需要隔离的topology上打开这个选项。
# 下面命令只需要在安装 jstorm_ui 和提交jar节点的机器上面执行即可
mkdir ~/.jstorm
cp -f <span style="color: #bd63c5;line-height: 26px">$JSTORM_HOME</span>/conf/storm.yaml ~/.jstorm
7、安装JStorm Web UI
强制使用tomcat7.0或以上版本,切记拷贝**~/.jstorm/storm.yaml,** Web UI 可以和Nimbus在同一个节点上
mkdir ~/.jstorm
cp -f <span style="color: #bd63c5;line-height: 26px">$JSTORM_HOME</span>/conf/storm.yaml ~/.jstorm
下载tomcat 7.x (以apache-tomcat-7.0.37 为例)
tar -xzf apache-tomcat-7.0.75.tar.gz
<span style="color: #4ec9b0;line-height: 26px">cd</span> apache-tomcat-7.0.75
<span style="color: #4ec9b0;line-height: 26px">cd</span> webapps
cp <span style="color: #bd63c5;line-height: 26px">$JSTORM_HOME</span>/jstorm-ui-2.1.1.war ./
mv ROOT ROOT.old
ln -s jstorm-ui-2.1.1 ROOT
<span style="color: #57a64a;font-style: italic;line-height: 26px"># 另外不是 ln -s jstorm-ui-2.1.1.war ROOT 这个要小心</span>
<span style="color: #4ec9b0;line-height: 26px">cd</span> ../bin
./startup.sh
8、JStorm启动
1.在nimbus 节点(10.1.1.78)上执行 “nohup jstorm nimbus &”, 查看$JSTORM_HOME/logs/nimbus.log检查有无错误
2.在supervisor节点(10.1.1.78,10.1.1.80,10.1.1.97)上执行 “nohup jstorm supervisor &”, 查看$JSTORM_HOME/logs/supervisor.log检查有无错误
9、JStorm Web UI
JStorm集群启动成功截图如下:
CentOS 6.8 实战部署JStorm集群CentOS 6.8 实战部署JStorm集群
# JStorm 集群安装问题总结
1、注意/etc/hosts设置,添加相对应的ip hostname
2、设置ssh免密操作(此步骤在zookeeper集群完成)
3、注意各服务的环境变量设置