1、安装一个zookeeper集群
2、上传storm的安装包,解压
3、修改配置文件storm.yaml
#所使用的zookeeper集群主机(横线和主机名之间要有空格)
storm.zookeeper.servers:
- "weekend05"
- "weekend06"
- "weekend07"
#nimbus所在的主机名
nimbus.host: "weekend05"
//配置几个端口就启动几个进程,也就是几个work,因为每个进程占用一个端口(横线和端口之间要有空格)
supervisor.slots.ports:
- 6701
- 6702
- 6703
- 6704
- 6705
启动storm
在nimbus主机上
nohup ./storm nimbus 1>/dev/null 2>&1 &
nohup ./storm ui 1>/dev/null 2>&1 &
在supervisor主机上
默认一个从节点上面可以启动4个worker进程,参数是supervisor.slots.port。在storm配置文件中已经配置过了,默认是在strom-core.jar包中的defaults.yaml中配置的有。
默认一个strom项目只使用一个worker进程,可以通过代码来设置使用多个worker进程。
通过config.setNumWorkers(workers)设置
通过conf.setNumAckers(0);可以取消acker任务
最好一台机器上的一个topology只使用一个worker,主要原因是减少了worker之间的数据传输
如果worker使用完的话再提交topology就不会执行,会处于等待状态
executor
默认情况下一个executor运行一个task,可以通过在代码中设置
builder.setSpout(id, spout, parallelism_hint);
builder.setBolt(id, bolt, parallelism_hint);
task
通过boltDeclarer.setNumTasks(num);来设置实例的个数
executor的数量会小于等于task的数量(为了rebalance)
deactive:未激活(暂停)
deactive:未激活(暂停)
emitted: emitted tuple数
transferred: transferred tuple数,
与emitted的区别:如果一个task,emitted一个tuple到2个task中,则 transferred tuple数是emitted tuple数的两倍
complete latency: spout emitting 一个tuple到spout ack这个tuple的平均时间
process latency: bolt收到一个tuple到bolt ack这个tuple的平均时间
execute latency:bolt处理一个tuple的平均时间,不包含ack操作。
2、上传storm的安装包,解压
3、修改配置文件storm.yaml
#所使用的zookeeper集群主机(横线和主机名之间要有空格)
storm.zookeeper.servers:
- "weekend05"
- "weekend06"
- "weekend07"
#nimbus所在的主机名
nimbus.host: "weekend05"
//配置几个端口就启动几个进程,也就是几个work,因为每个进程占用一个端口(横线和端口之间要有空格)
supervisor.slots.ports:
- 6701
- 6702
- 6703
- 6704
- 6705
storm1.0.1配置:
至少完成以下3处的配置,
storm.zookeeper.servers:
- "centos1"
- "centos2"
- "centos3"
storm.local.dir: "/opt/apache-storm-1.0.0/data"
nimbus.seeds: ["centos1"](nimbus所在的节点)
其中storm.zookeeper.servers,表示Zookeeper集群地址。如果Zookeeper集群使用的不是默认端口,那么还需要配置storm.zookeeper.port。storm.local.dir用于配置Storm存储少量文件的路径。nimbus.seeds用于配置主控节点的地址,可以配置多个。
启动storm
在nimbus主机上
nohup ./storm nimbus 1>/dev/null 2>&1 &
nohup ./storm ui 1>/dev/null 2>&1 &
在supervisor主机上
nohup ./storm supervisor 1>/dev/null 2>&1 &
验证 在nimbus主机上打开页面访问8080端口
storm 提交任务
在storm_home/bin目录下
./storm jar xxx.jar mainclass
xxx.jar表示打包好的jar包,mainclass换成主函数类的全路径名称
停止任务
./storm kill demotopo
stormdemo是任务的名称,代码中提交任务时设定的
StormSubmitter.submitTopology("demotopo",conf,stormTopology);
storm并行
worker(slots)默认一个从节点上面可以启动4个worker进程,参数是supervisor.slots.port。在storm配置文件中已经配置过了,默认是在strom-core.jar包中的defaults.yaml中配置的有。
默认一个strom项目只使用一个worker进程,可以通过代码来设置使用多个worker进程。
通过config.setNumWorkers(workers)设置
通过conf.setNumAckers(0);可以取消acker任务
最好一台机器上的一个topology只使用一个worker,主要原因是减少了worker之间的数据传输
如果worker使用完的话再提交topology就不会执行,会处于等待状态
executor
默认情况下一个executor运行一个task,可以通过在代码中设置
builder.setSpout(id, spout, parallelism_hint);
builder.setBolt(id, bolt, parallelism_hint);
task
通过boltDeclarer.setNumTasks(num);来设置实例的个数
executor的数量会小于等于task的数量(为了rebalance)
Strom UI
emitted: emitted tuple数
transferred: transferred tuple数,
与emitted的区别:如果一个task,emitted一个tuple到2个task中,则 transferred tuple数是emitted tuple数的两倍
complete latency: spout emitting 一个tuple到spout ack这个tuple的平均时间
process latency: bolt收到一个tuple到bolt ack这个tuple的平均时间
execute latency:bolt处理一个tuple的平均时间,不包含ack操作。