当topology发布时,所有的bolt和spout组件首先会进行序列化,然后通过网络发送到集群中.如果spout和bolt在序列化之前(比如在构造函数中生成)实例化了任何无法序列化的实例变量,在进行序列化时会抛出NotSerializableException异常.
storm集群在并发运行时,有以下四个组成部分:
Node(服务器) storm集群中的一台服务器,会运行topology中的一部分运算.一个集群会包括一个或者多个node. worker(jvm虚拟机) 指一个node上相互独立运行的jvm进程.每个node可以配置运行一个或者多个worker. executer(线程) 指一个worker的jvm进程中运行的java线程.多个task可以指派给同一个executer执行.除非是明确指定,storm默认会给每个executor分配一个task. task(bolt/spout实例) task是spout和bolt实例,它们的nextTuple()和execute()方法会被executor执行.一个或多个woker执行一个topology,一个executer执行一个task.
storm的task实际上可以认为是一个实例,executor只是一个实际的执行体.
新闻热点
疑难解答