本节书摘来自华章计算机《storm企业级应用:实战、运维和调优》一书中的第3章,第3.6节,作者:马延辉 陈书美 雷葆华著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
task是运行spout或bolt的单元,每一个spout/bolt的线程称为一个task。
在storm 0.8及之后的版本中,task不再与物理线程对应,同一个spout/bolt的task可能会共享一个物理线程,该线程称为executor。
实际的数据处理由task完成,在topology的生命周期中,每个组件的task数量不会变化,而executor的数量却不一定。在一般情况下,线程数小于等于task数量。默认task的数量等于executor线程数量,即一个executor线程只运行一个task。executor线程在执行期间会调用该task的nexttuple或execute方法。
每个spout或bolt都是通过集群中的许多任务来执行的。每个任务相当于一个执行线程,可以通过topologybuilder的setspout方法和setbolt方法为每个spout或bolt设置并行数,即任务数。