當(dāng)topology發(fā)布時(shí),所有的bolt和spout組件首先會(huì)進(jìn)行序列化,然后通過(guò)網(wǎng)絡(luò)發(fā)送到集群中.如果spout和bolt在序列化之前(比如在構(gòu)造函數(shù)中生成)實(shí)例化了任何無(wú)法序列化的實(shí)例變量,在進(jìn)行序列化時(shí)會(huì)拋出NotSerializableException異常.
storm集群在并發(fā)運(yùn)行時(shí),有以下四個(gè)組成部分:
Node(服務(wù)器) storm集群中的一臺(tái)服務(wù)器,會(huì)運(yùn)行topology中的一部分運(yùn)算.一個(gè)集群會(huì)包括一個(gè)或者多個(gè)node. worker(jvm虛擬機(jī)) 指一個(gè)node上相互獨(dú)立運(yùn)行的jvm進(jìn)程.每個(gè)node可以配置運(yùn)行一個(gè)或者多個(gè)worker. executer(線程) 指一個(gè)worker的jvm進(jìn)程中運(yùn)行的java線程.多個(gè)task可以指派給同一個(gè)executer執(zhí)行.除非是明確指定,storm默認(rèn)會(huì)給每個(gè)executor分配一個(gè)task. task(bolt/spout實(shí)例) task是spout和bolt實(shí)例,它們的nextTuple()和execute()方法會(huì)被executor執(zhí)行.一個(gè)或多個(gè)woker執(zhí)行一個(gè)topology,一個(gè)executer執(zhí)行一個(gè)task.
storm的task實(shí)際上可以認(rèn)為是一個(gè)實(shí)例,executor只是一個(gè)實(shí)際的執(zhí)行體.
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注