Storm
nimbus :Master,负责集群管理、任务分配
supervisor : Slave,完成计算,每个 supervisor 启动多个 worker 进程,每个 worker 上运行多个 task,而 task 就是 spout 或者 bolt。
zookeepr:supervisor 和 nimbus 通过 ZooKeeper 完成任务分配、心跳检测等操作。
Flink
Flink 运行时的执行引擎是相同的,只是数据源不同,支持流式和批量处理,如果数据源是hdfs文件,则初始化批处理执行环境,如果是流式数据源,则初始化流执行环境,跟spark streaming差不多,也是进行数据分批。
Flink 的架构和 Hadoop 1 或者 Yarn 看起来也很像,JobManager 是 Flink 集群的管理者,Flink 程序提交给 JobManager 后,JobManager 检查集群中所有 TaskManager 的资源利用状况,如果有空闲 TaskSlot(任务槽),就将计算任务分配给它执行。
Spark Streaming
Spark Streaming 负责根据分段的时间间隔,将流数据转换成小的批数据,剩下的就可以交给 Spark 去做了。