storm学习2-storm生命周以及相关配置详解

Storm中的生命周期


了解Spout和bolt方法调用


Sqout方法调用顺序:
1.declareOutputFields() //声明发送字段信息,提交前执行
2.open() //提交集群后第一个执行
3.activate()            //激活数据
4.netTuple()           //循环调用
5.deactivate()         //执行完毕


Bolt方法调用
1.decareOutputFields() //声明检查信息,提交集群先
2.prepare()            //只执行一次
3.execute()            //不停被调用


可以在ui页面可以kill掉,刷新就移除了。

下面我们来看看storm的配置详解

配置项                                                                  详解

storm.zookeeper.server                                   zookeeper服务器列表

storm.zookeeper.port       zookeeper连接端口

storm.local.dir                                                   storm使用本地文件系统目录(必须存在并且storm进程可读写)

storm.cluster.mode                                         storm集群运行模式([distributed|local])

storm.local.mode.zmq                                    localhost模式下是否使用zeromq作消息系统,如果设置false则使用java消息系统,默认false

storm.zookeeper.root                                      zookeeper中storm的根目录位置

storm.zookeeper.session.timeout               客户端连接zookeeper超时时间

storm.id                                                             运行中拓扑的id,由storm name和一个唯一随机数组成

nimbus.host                                                     nimbus的服务器地址

nimbus.thrift.port                                             nimbus的thrift监听端口

nimbus.childopts                                            通过storm-deploy项目部署时制定给nimbus进程的jvm选项

nimbus.task.timeout.secs                            心跳超时时间,超时后nimbus会认为task死掉并重新分配给另外一个地址

nimbus.supervisor.timeout.secs                 supervisor的心跳时间,一旦超过nimbus会认为该supervisor死掉,并停止给它分发任务

nimbus.task.launch.secs                              task启动时的一个特殊超时设置,在第一次启动后第一次心跳前用该值来临时替代nimbus.task.timout.secs

nimbus.reassign                                             当发现task失败时nimbus是否重新分配执行。默认为真,不需要修改

nimbus.file.copy.expiration.secs                  nimbus判断上传/下载链接的超时时间,一旦超时nimbus会认为链接死掉并主动断开

ui.port                                                                storm ui 的服务端口 默认为8080

drpc.server                                                       DRPC服务器列表,以便DRPCSpout知道和谁通信

drpc.port                                                            stormDRPC的服务端口

supervisor.slots.ports                                     supervisor上能够运行workers的端口列表,每个worker占用一个端口,且每个端口只运行一个worker,通过这项配置可以调整每台                                                                              机器上运行的worker数(也就是调整slot数/每台机器)

supervisor.childopts                                        在storm-deploy项目中使用,用来配置supervisor守护进程的jvm选项

supervisor.worker.timeout.secs                    supervisor中的worker心跳超时时间,一旦超时supervisor会尝试重新启动worker进程

supervisor.worker.start.timeout                     supervisor初始启动时,worker的心跳超时时间,当超过这个时间时,supervisor会尝试重启worker进程,因为jvm初始启动和配置

                                                                              会带来额外的消耗,从而使得第一次心跳会超过supervisor.worker.timeout.secs的设置

supervisor.enable                                            supervisor是否应当运行分配给它的worker。默认为true,该选项用来进行storm的单元测试,一般不修改

supervisor.heartbeat.frequency.secs           supervisor心跳发送的频率(多长时间发送一次)

supervisor.monitor.frequency.eccs               supervisor检查worker心跳的频率

worker.childopts                                                supervisor启动worker时使用的jvm选项。所有的"%ID%“字串会被替换为对应的worker的标识符

worker.heartbeat.frequnency.secs                worker的心跳发送时间间隔

task.heartbeat.frequency.secs                       task汇报状态心跳时间间隔

task.refresh.poll.secs                                       task与其他task之间的链接同步的频率(如果task被重新分配,其他task向它发送消息需要刷新连接)一般来将重新分配其他task会得                                                                               到通知。该配置仅仅是为了防止未通知的情况

topology.debug                                                  如果设置为true。storm将记录发送的每条信息

topology.optimize                                              master是否在合适时机通过在单个线程内运行的多个task以达到优化topologies的目的

topology.worker                                                 执行该topology集群中应当的进程数量,每个进程内部将以线程方式执行行一定数量的tasks.topology的组件结合该参数和并行都提                                                                              示来优化性能

topology.ackers                                                topology中启动的acker任务数,Acker保存由spout发送的tuples的记录,并探测tuple何时被完全处理。当Acker探测到tuple被完全                                                                               处理完毕时会向spout发送确认信息。通常应当根据topology的吞吐量来确定acker的数据,但一般不需要太多。当设置为0时,相当                                                                               于 禁用了消息可靠性,storm会在spout发送tuples后立即进行确认

topology.message.timeout.secs                   topology中的spout发送消息的最大处理超时时间。如果一条消息在改时间窗口内未被成功ack,storm会告知spout这条消息失败。                                                                                而部分spout实现了失败的消息重播功能

topology.kryo.register                                        注册到kryo(storm地城序列化框架)的序列化方案列表,序列化方案可以是一个类名。或者是com.esotericsoftware.kryo.Serializer

                                                                                 的实现

topology.skip.missing.kryo.registrations        storm是否应该跳过它不能识别的kryo序列化方案,如果设置为false。task可能会装载失败或者在运行时抛出错误

topology.max.task.parallelism                          在一个topology中能允许的最大组件并行度,该项配置主要用在本地模式中的测试线程数限制

topology.max.spout。pending                           一个spout task中出于pending状态的最大的tuples数量,该配置应该用於单个task,而不是整个spout或者topology

topology.state.synchronization.timeout.secs   组件同步状态源的最大超时时间

topology.stats.samle.rate                                    用来产生task统计信息的tuples抽样百分比

topology.fall.back.on.java.serialization              topology中是否使用java的序列化方案

zmq.threads                                                           每个worker进程内zeromq通讯用到的线程数

zmq.linger.millis                                                   当连接关闭时,链接尝试重新发送消息到目标主机的持续时间长,这个是一个不常用的高级选项,基本可以忽略

java.library.path                                                     Jvm启动(如Nimbus,Supervisor和workers)时的java.library.path设置。该选项告诉jvm在哪些路径下定位本地库



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章