您现在的位置是: 首页 > Storm架构及单机、集群部署


Storm架构及单机、集群部署

纯真年代 2018-11-13 11:29:40 1 605人围观

架构图示例

单机环境配置

集群环境配置

架构图示例



Nimbus:集群中的主节点,负责任务(task)的指派和分发、资源分配

Supervisor:集群中的从节点(干活的),负责执行任务的具体部分,启动和停止自己管理的Worker进程。
它是无状态的,在它们上面的元数据信息都会存储到zookeeper中。
它可以启动多个Worker(配置),一个Topo可以运行在多个Worker之上(配置)。

Worker:运行具体组件(Spout/Bolt)逻辑的进程

Task:Worker中的每一个Spout和Bolt的线程称为task

executor:spout和bolt可能会共享一个线程


单机版部署

1)下载及解压

ssh https://www-us.apache.org/dist/storm/apache-storm-1.2.2/apache-storm-1.2.2.tar.gz
tar -zxvf apache-storm-1.2.2.tar.gz -C /root/app

2)export STORM_HOME

export STORM_HOME=/root/app/apache-storm-1.2.2
export PATH=$PATH:$STORM_HOME/bin



3)配置conf/storm-env.sh中的JAVA_HOME,如果环境中export了javahome,这里可以不用配置,为了保险,配一个吧



4)启动(cd $STOEM_HOME/bin),这里以后台启动进程,Storm命令行直达车

storm需要zookeeper支持,启动

nohup sh storm dev-zookeeper &

主节点nimbus进程

nohup sh storm nimbus &

从节点进程

nohup sh storm supervisor &

ui进程,可以查看storm的信息,默认端口时8080

nohup sh storm ui &

logviewer进程,可以查看日志信息

nohup sh storm logviewer &



5)登录hostname:8080就可以查看



6)提交一个作业到storm上运行,代码直达车

启动命令格式

storm jar path/to/allmycode.jar org.me.MyTopology arg1 arg2 arg3

1)修改提交代码网示例直达车,启动,我的例子

(定义拓扑->使用StormSubmitter将拓扑提交到集群),和本地测试有点区别

2)打包上传,运行(cd $STORM_HOME/bin)

storm jar /root/lib/storm-1.0.jar com.blog.storm.example.cluster.ClusterDoubleAndTripleBoltApp



3)UI上查看信息(我们可以看到有一个supervisor,一个supervisor四个worker(默认)。3个Executor,我们提交jar包总的spout和bolt各一个,还有一个其实是ack/fail机制占用的。nimbus有主备)。



我们还可以看到处理时输出的日志信息(在$STORM_HOME/logs里面也可以看到日志信息)



集群部署

部署规划:

hadoop000: zk nimbus supervisor
hadoop001: zk supervisor
hadoop002: zk supervisor

hadoopxxx是hostname,

注意修改每台机器的host映射,/etc/hosts

1)安装zookeeper集群,直达车

1.1)下载,解压,路径自定义

wget https://archive.cloudera.com/cdh5/cdh/5/zookeeper-3.4.5-cdh5.9.3.tar.gz
tar -zxvf zookeeper-3.4.5-cdh5.9.3.tar.gz -C /root/app

配置ZK_HOME,跳过

1.2)配置(cd $ZK_HOME/conf),将zoo_sample.cfg复制一份成zoo.cfg后再编辑zoo.cfg

dataDir=/root/app/tmp/zookeeper

# the port at which the clients will connect
clientPort=2181

server.1=hadoop000:2888:3888
server.2=hadoop001:2888:3888
server.3=hadoop002:2888:3888



1.3)在hadoop000的zookeeper的dataDir(/root/app/tmp/zookeeper)路径下创建myid文件,内容为1

将一台机器(hadoop000)配置好的zookeeper scp到hadoop001,002,包括export环境的信息

scp -r ~/app/zookeeper-3.4.5-cdh5.9.3/ root@hadoop001:~/app
scp -r ~/.bash_profile root@hadoop001:~/

hadoop002同理

在hadoop001的zookeeper的dataDir(/root/app/tmp/zookeeper)路径下创建myid文件,内容为2

在hadoop002的zookeeper的dataDir(/root/app/tmp/zookeeper)路径下创建myid文件,内容为3 


1.4)启动zookeeper集群,每一台都要在bin里面执行 ./zkServer.sh start 命令,效果如下(leader是随机分配的):





2)Storm集群安装,直达车  

单机版我们只配置了一个java_home就可以跑起来了,

2.1)编辑conf/storm.yaml注意yaml编辑格式,默认的配置是default.yaml,storm.yaml配置优先级大于default.yaml

storm.zookeeper.servers:这是Storm集群的Zookeeper集群中的主机列表  

storm.zookeeper.servers:
- "hadoop000"
- "hadoop001"
- "hadoop002"

storm.local.dir:Nimbus和Supervisor守护进程需要本地磁盘上的目录来存储少量状态(如jar,confs和类似的东西)。您应该在每台计算机上创建该目录,为其提供适当的权限  

storm.local.dir: "/root/app/tmp/storm"

supervisor.slots.ports(这就是为什么我们单机版上有四个slot):对于每个工作者计算机,您可以使用此配置配置在该计算机上运行的工作程序数。每个工作人员使用单个端口接收消息,此设置定义哪些端口可以使用。如果您在此处定义了五个端口,那么Storm将分配最多五个Worker在此计算机上运行。如果定义三个端口,Storm最多只能运行三个端口。默认情况下,此设置配置为在端口6700,6701,6702和6703上运行4个工作程序。  


和zookeeper集群配置一样,将一台机器(hadoop000)配置好的storm scp到hadoop001,002,包括export环境的信息  。

scp -r ~/app/apache-storm-1.2.2/ root@hadoop001:~/app
scp -r ~/.bash_profile root@hadoop001:~/

hadoop002同理

2.2)启动storm集群,启动规划:

hadoop000: zk nimbus supervisor(ui,logviewer)

nohup sh storm nimbus &
nohup sh storm supervisor &
nohup sh storm ui &
nohup sh storm logviewer &

hadoop001: zk supervisor(logviewer)

nohup sh storm supervisor &
nohup sh storm logviewer &

hadoop002: zk supervisor(logviewer)

nohup sh storm supervisor &
nohup sh storm logviewer &

2.3 UI效果如下:







全部评论