Topology 负责整个计算图
每个节点是一个component,每个节点可以有1到多个 stream,每个stream内部是tuple(可以有多个字段,需要declare字段名字)
节点之间的关系可以通过componentid或者streamid来关联
有些数据的shuffle需要制定使用tuple中的某几个field,作为partition key
一个节点在提交任务的时候,可以设置并发度,比如使用多少个task来并行执行
整体提交的是topology,
一般一个实时流的模式,需要在某些节点内存(或者一个外部数据库,比如redis)保存一个临时变量 做一些统计使用,
每过一段时间,需要把这个临时变量清空,并输出分段的统计结果,比如按天统计某个指标
不能一直在内存中存着,否则会爆的
但是需要确保的是,输入数据是按顺序来的,而不是无序的,否则,对于storm计算来说,必须得等到整个停止,才能计算出最终结果了
所以,storm的输入数据 需要 保证是有序的,或者大的粒度上是有序的,比如,两天的数据是有序的,但是同一天内的数据不需要有序,这样,可以做按天统计;
参考数据:《storm源码分析》
网友评论