远程模式
将本地测试好的Topology发布到远程Storm集群里,并启动
环境
准备三台CentOS机器,如下:
nimbus主节点
192.168.217.201
supervisor工作节点
192.168.217.202
192.168.217.203
安装软件和文件配置
对服务器和组件进行安装或配置
安装工具软件
三台机器都要
yum -y install vim lrzsz bash-completion
安装时钟同步
三台机器都要
yum -y install chrony
systemctl start chronyd
systemctl enable chronyd
systemctl status chronyd
chronyc sources
关闭防火墙和安全认证
三台机器都要
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
配置HOSTS
三台机器都要
cat >> /etc/hosts << EOF
192.168.217.201 storm1 # nimbus主节点
192.168.217.202 storm2 # supervisor工作节点
192.168.217.203 storm3 # supervisor工作节点
EOF
安装JDK
三台机器都要下载JDK
链接:https://pan.baidu.com/s/1lZpObdGpscpjQrfTdVu8TQ
提取码:izk1
--来自百度网盘超级会员V4的分享
上传到/usr/local/src目录下
cd /usr/local/src
#解压文件,并将文件移动到/usr/local目录下
tar -xvf jdk-8u341-linux-x64.tar.gz && mv jdk1.8.0_341 ../jdk
#先导出jdk环境
export PATH=$PATH:/usr/local/jdk/bin/
#在/etc/profile里配置环境变量
PATH=$PATH:/usr/local/jdk/bin/
#激活环境变量
source /etc/profile
安装Zookeeper
在两台supervisor工作节点安装Zookeeper,并将Zookeeper下载到/usr/local/src目录下
cd /usr/local/src
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz \
--no-check-certificate
#将zookeeper解压文件移动到/usr/local目录下
tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz && mv apache-zookeeper-3.7.1-bin ../zookeeper
#进入zookeeper目录下创建data和logs目录用于存放后期文件
cd /usr/local/zookeeper && mkdir data logs
#修改zookeeper配置文件
cd /usr/local/zookeeper/conf && cp zoo_sample.cfg zoo.cfg
#将修改后的zookeeper配置文件zoo.cfg挂载到zookeeper中
sed -i 's/dataDir=.*/dataDir=\/usr\/local\/zookeeper\/data/g' /usr/local/zookeeper/conf/zoo.cfg
#配置挂载Storm节点到Zookeeper上
cat >> /usr/local/zookeeper/conf/zoo.cfg << EOF
dataLogDir=/usr/local/zookeeper/logs
server.1=storm1:2881:3881
server.2=storm2:2881:3881
server.3=storm3:2881:3881
EOF
#修改zookeeper端口
echo "admin.serverPort=8800" >> /usr/local/zookeeper/conf/zoo.cfg
#先暴露环境变量
export PATH=$PATH:/usr/local/zookeeper/bin/
#将环境变量添加到/etc/profile里
PATH=$PATH:/usr/local/zookeeper/bin/
#启动Zookeeper
zkServer.sh start [status restart stop]
添加节点表示
分别在storm1,storm2,storm3上配置
storm1
echo 1 >/usr/local/zookeeper/data/myid
storm2
echo 2 >/usr/local/zookeeper/data/myid
storm3
echo 3 >/usr/local/zookeeper/data/myid
安装Storm
三台机器都要
#如果没有Python,需要安装
apt install python-is-python3
#将Storm下载到/usr/local/src目录下
cd /usr/local/src
wget https://dlcdn.apache.org/storm/apache-storm-2.4.0/apache-storm-2.4.0.tar.gz \
--no-check-certificate
#将解压缩的storm移动到/usr/local目录下
tar -zxvf apache-storm-2.4.0.tar.gz && mv apache-storm-2.4.0 ../storm
配置Storm
进入解压缩的Storm的conf目录下修改storm.yaml配置文件
cd /usr/local/storm/conf
cat >> storm.yaml << EOF
storm.zookeeper.servers:
- "storm1"
- "storm2"
- "storm3"
storm.local.dir: "/usr/local/storm/data"
nimbus.seeds: ["storm1", "storm2"]
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
EOF
配置Storm环境变量
#先暴露环境变量
export PATH=$PATH:/usr/local/storm/bin/
#将环境变量配置到/etc/profile里
PATH=$PATH:/usr/local/storm/bin/
#激活环境变量
source /etc/profile
启动Storm集群
在nimbus主节点启动
nohup storm nimbus > nohup.out 2>&1 &
nohup storm ui > nohup.out 2>&1 &
在supervisor工作节点启动
nohup storm supervisor > nohup.out 2>&1 &
nohup storm logviewer > nohup.out 2>&1 &
如果nimbus或supervisor启动后自动退出,重启zookeeper,确保zookeeper已经起来了
发布项目到Storm集群
过程:
- 修改项目配置
- 打包项目
- 上传项目jar包到nimbus服务器/usr/local/storm2.4目录下
- 执行启动项目命令
打包项目
项目启动入口中,将本地模式改成远程模式
//线上集群-生产
StormSubmitter.submitTopology("topo", config, topologyBuilder.createTopology());
Maven打包
运行package打包命令
生成打包文件
上传文件
这里上传到/usr/local/storm目录下,注意:上传目录没有要求,因为配置了Storm的环境变量,在哪里都可以运行storm启动项目命令
在Storm集群里启动项目,实现远程部署
只在nimbus主节点执行
storm jar stormcalllog-1.0-SNAPSHOT.jar com.zj.storm.App stormcalllog
说明:
-
storm jar: 固定写法
-
stormcalllog-1.0-SNAPSHOT.jar:上传的项目jar包
-
com.zj.storm.App:项目主类路径
-
stormcalllog:Topology名称
启动效果
后台
登录UI查看