对strom的理解
1.什么是strom:
- storm是一个分布式实时计算系统,用户只需要提供自己的插件(例如一个jar包,其中编写用户自己的逻辑代码),然后将它部署到storm服务器上,storm的master服务器就会为我们自动将jar包分配到slave服务器的进程中,然后在slave服务器中运行。(注意:master服务器只会接受用户提供的插件(也称之为拓扑,如果是java语言编写的插件可以说一个jar包就是一个拓扑),然后分配代码到slave服务器,在slave服务器上真正运行我们的代码)。
2.系统角色:
- Nimbus:存在于master服务器,主要帮助分配拓扑到slave服务器中。
- Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。
- Worker:运行拓扑的进程。
3.系统组件:
- spout:发送数据源的一个组件(在我们提供的拓扑中,实现此接口后在对应方法中获取要处理的数据,比如一个log文件内容,然后发送到所关联bolt进行具体数据内容的处理)。
- bolt:接受由spout发送过来的数据进行处理。(bolt主要做数据处理,我们的具体的业务逻辑都写在在此接口的实现类中)。
- 补充:Task:worker中每一个 Spout /bolt的线程称为一个task. 在 Storm 0.8之后,task不再与物理线程对应,同一个 Spout /bolt的task可能会共享一个物理线程,该线程称为executor。
4.系统原理图:
5.