一、storm集群在风控系统中作用
在风控系统一:dtools规则引擎学习使用中描述了风控系统的做,比如说限制同一ip在固定时间内登录次数等,这个是需要实时计算的,由于数据量大,所一用storm集群来实时计算。
二、安装说明
storm和kafka集群安装是没有必然联系的,我将这两个写在一起,是因为他们都是由zookeeper进行管理的,也都依赖于JDK的环境,为了不重复再写一遍配置,所以我将这两个写在一起。若只需一个,只需挑选自己选择的阅读即可。
网上很多教程都是一步一步手动安装的,这样jdk、storm、kafka的版本都要互相有作用,下面我的安装是跟你局docker来安装的。
三、Zookeeper安装-伪分布式
-
下载Zookeeper镜像
-
zk部署目录
image.png -
配置文件准备
根据上面的规划图建立目录,目录建好后, 在每个data目录下 建立一个myid文件,并写入server id,具体做法如下:在zookeeper目录下, 执行下面命令: echo 1 > data_1/myid 回车 echo 2 > data_2/myid 回车 echo 3 > data_3/myid 回车 这三个命令是将server id 写入到对应目录的myid文件中。
将系统原来的zoo.cfg 复制为 zoo1.cfg ,修改对应内容如下图:
image.png
这里, dataDir 就是刚才建立的数据目录, dataLogDir是日志目录, 端口 2181, 在每个zoo.cfg文件中,都要添加想同的server.1 , server.2. server.3
同样复制到zoo2.cfg zoo3.cfg 修改对应配置如下图:
image.png
-
zk启动
启动这里,就提现了部署三套和部署一套的区别, 部署一套,要分别指定对应的配置文件。在zookeeper的bin目录下, 分别执行下面三个命令,启动zookeeper./zkServer.sh start zoo1.cfg
./zkServer.sh start zoo2.cfg
./zkServer.sh start zoo3.cfg
-
启动后,可以通过提供的脚本查看三个进程哪个是 leader,哪个是follower,具体命令为 ./zkServer.sh status xxx.cfg
image.png
四、kafka安装-伪分布式
- 下载压缩包
cd /opt/kafka/kafka_2.12-1.1.0/config #进入kafka配置目录
cp server.properties server.properties.bak #备份kafka默认配置文件
cp server.properties server-1.properties #创建kafka-1的broker
cp server.properties server-2.properties #创建kafka-2的broker
- 修改配置文件: 修改kafka的server配置文件:
cd /opt/kafka/kafka_2.12-1.1.0/config
vim server.properties #
broker.id=0 #broker的id
host.name=192.168.1.5 #本机名或者ip
port=9092 #每个id内Kakfa服务器监听的端口
log.dirs=/opt/kafka/kafka_2.12-1.1.0/logs/log-0 #日志存放路径
zookeeper.connect=192.168.1.5:2181 #zookeeper连接端口
- 启动kafka
/opt/kafka/kafka_2.12-1.1.0/bin/kafka-server-start.sh -daemon /opt/kafka/kafka_2.12-1.1.0/config/server.properties
/opt/kafka/kafka_2.12-1.1.0/bin/kafka-server-start.sh -daemon /opt/kafka/kafka_2.12-1.1.0/config/server-1.properties
/opt/kafka/kafka_2.12-1.1.0/bin/kafka-server-start.sh -daemon /opt/kafka/kafka_2.12-1.1.0/config/server-2.properties
:wq 保存退出
五、strom安装-伪分布式
下载storm文件后,进行解压缩后
- 配置环境 vi /etc/profile
export STORM_HOME=/usr/local/soft/storm
export PATH=PATH:${STORM_HOME}/bin
- 修改配置文件 vi strom/config/storm.yaml
storm.zookeeper.servers:
- "localhost"
nimbus.host: "localhost"
storm.local.dir: "/usr/local/soft/storm/stormlocaldir"
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
- 启动命令-zookeeper必须已经启动
启动的服务窗口不能关闭
storm nimbus &
storm supervisor &
启动storm web ui服务
storm ui &
启动storm log web服务
storm logviewer &
- 查看是否启动进程
image.pngjps
- ui界面查看-通过http://ip:8080
image.png
六、Storm常用操作命令
有许多简单且有用的命令可以用来管理拓扑,它们可以提交、杀死、禁用、再平衡拓扑。
-
查询已经启动storm项目
storm list -
提交任务命令格式:storm jar 【jar路径】 【拓扑包名.拓扑类名】 【拓扑名称】
bin/storm jar examples/storm-starter/storm-starter-topologies-0.9.6.jar storm.starter.WordCountTopology wordcount -
杀死任务命令格式:storm kill 【拓扑名称】 -w 10(执行kill命令时可以通过-w [等待秒数]指定拓扑停用以后的等待时间)
storm kill topology-name -w 10 -
停用任务命令格式:storm deactivte 【拓扑名称】
storm deactivte topology-name
我们能够挂起或停用运行中的拓扑。当停用拓扑时,所有已分发的元组都会得到处理,但是spouts的nextTuple方法不会被调用。销毁一个拓扑,可以使用kill命令。它会以一种安全的方式销毁一个拓扑,首先停用拓扑,在等待拓扑消息的时间段内允许拓扑完成当前的数据流。 -
启用任务命令格式:storm activate【拓扑名称】
storm activate topology-name -
重新部署任务命令格式:storm rebalance 【拓扑名称】
storm rebalance topology-name
再平衡使你重分配集群任务。这是个很强大的命令。比如,你向一个运行中的集群增加了节点。再平衡命令将会停用拓扑,然后在相应超时时间之后重分配工人,并重启拓扑。
网友评论