Storm架构详解
Storm架构
类似于Hadoop的架构,主从(Master/Slave)
Nimbus: 主
集群的主节点,负责任务(task)的指派和分发、资源的分配
Supervisor: 从
可以启动多个Worker,具体几个呢?可以通过配置来指定(后面笔记整理)
一个Topo可以运行在多个Worker之上,也可以通过配置来指定
集群的从节点,(负责干活的),负责执行任务的具体部分
启动和停止自己管理的Worker进程
无状态,在他们上面的信息(元数据)会存储在ZK中
Worker: 运行具体组件逻辑(Spout/Bolt)的进程
task:
Spout和Bolt
Worker中每一个Spout和Bolt的线程称为一个Task
executor: spout和bolt可能会共享一个线程
(并行度笔记会有对worker、task、executor的整理)
架构图解
Storm单机部署
官方链接
http://storm.apache.org/releases/1.2.2/Setting-up-a-Storm-cluster.html
Storm部署的前置条件
jdk7+
python2.6.6+(python3.x也是可以的;但是有些测试用例是会出错的)
Storm部署
下载
解压到~/app
添加到系统环境变量:~/.bash_profile
export STORM_HOME=/home/hadoop/app/apache-storm-1.1.1
export PATH=$STORM_HOME/bin:$PATH
使其生效: source ~/.bash_profile
目录结构
bin
examples
conf
lib
Storm启动
$STORM_HOME/bin/storm 如何使用 执行storm就能看到很多详细的命令
dev-zookeeper 启动zk(storm自带zk)
storm dev-zookeeper -->前台启动
nohup sh storm dev-zookeeper & -->后台启动
jps : dev_zookeeper
nimbus 启动主节点
nohup sh storm nimbus &
supervisor 启动从节点
nohup sh storm supervisor &
ui 启动UI界面
nohup sh storm ui & //默认8080端口
logviewer 启动日志查看服务
nohup sh storm logviewer &
storm的ui
supervisor 启动后
注意事项
1) 为什么是4个slot (默认)
2) 为什么有2个Nimbus(1.X之后就解决了单点故障问题;所以会默认有两个nimbus)
改写Storm作业并提交到Storm单节点集群运行
官方链接:
http://storm.apache.org/releases/1.2.2/Running-topologies-on-a-production-cluster.html
主要是main方法里的
import org.apache.storm.Config;
import org.apache.storm.LocalCluster;
import org.apache.storm.StormSubmitter;
import org.apache.storm.generated.AlreadyAliveException;
import org.apache.storm.generated.AuthorizationException;