Jstorm 是由阿里巴巴的研发团队,在 Storm 的基础上进一步开发完成的。Storm 最早是由 Twitter 的研发团队开发。
Storm 的组件
Storm的组件包括:Nimbus,Supervisor,Spout,Bolt,Task,Worker,Tuple。
- nimbus是整个storm任务的管理者,并不实际进行工作。负责在集群中分发代码,对节点分配任务,并监视主机故障。
- supervisor是实际进行工作的节点,负责监听工作节点上已经分配的主机作业,启动和停止Nimbus已经分配的工作进程。
- Worker是具体处理Spout/Bolt逻辑的进程,worker数量由拓扑中的conf.setNumWorkers来定义,storm会在每个Worker上均匀分配任务,一个Worker只能执行一个topology,但是可以执行其中的多个任务线程。
- 一个worker是一个进程,里面可以同时运行多个线程,这些线程就是task
更详细的参考资料见这篇博客
Storm程序的基本流程
一个简单的storm程序的基本流程是:spout作为数据源(可以来自hdfs,hbase等,也可以自发产生数据,比如wordcount这个例子)传送给bolt,bolt对数据进行处理,传给其它bolt或者直接输出。他们之间传送的数据是Tuple,可以成为数据元组。
Storm运行模式
- 本地模式(Local Mode): 即Topology(相当于一个任务,后续会详细讲解) 运行在本地机器的单一JVM上,这个模式主要用来开发、调试。
- 远程模式(Remote Mode):在这个模式,我们把我们的Topology提交到集群,在这个模式中,Storm的所有组件都是线程安全的,因为它们都会运行在不同的Jvm或物理机器上,这个模式就是正式的生产模式。