當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只是一個實際的執行體.
新聞熱點
疑難解答