以下代码基于storm1.0.1
首先我们知道,执行一个Topology时,Supervisor将从Nimbus上下载三个文件,分别是stormconf.ser,stormcoe.ser和stormjar.jar。其中stormcore.ser即是该topology的序列化文件。Worker会从supervisor目录下读取该文件。时序图:
同时,在get-task-object中还有shellBolt和JavaObject两种类型。这两种类型都是提供给NONE-JVM DML使用的。其中的JavaObject是Thrift对象,供其他语言调用原生的Java对象使用(如在python中调用Java编写的spout)。其本质与序列化的Java对象不同。