分布式系统
当数据量大,且增长量很快时,把一个任务分给多个计算机去共同完成的计算机系统叫分布式系统。对外屏蔽多机的细节,只留一个对外接口

Storm原理
Storm是一套分布式的、可靠的,可容错的用于处理流式数据的系统。处理工作会被委派给不同类型的组件,每个组件负责一项简单的、特定的处理任务。Storm集群的输入流由名为spout的组件负责。Spout将数据传递给名为bolt的组件,后者将以某种方式处理这些数据。例如bolt以某种存储方式持久化这些数据,或者将它们传递给另外的bolt。你可以把一个storm集群想象成一条由bolt组件组成的链,每个bolt对spout暴露出来的数据做某种方式的处理。
storm 组件
结构:主从结构

主从结构:简单,高效,但主节点存在单点问题
对称结构:复杂,效率较低,但是不存在单点问题,更加可靠
Nimbus:主节点,分配任务不具体干活,挂掉重启即可,只要运算节点没问题就不影响大局;
Supervisor:从节点,管理干活的worker,没有数据计算和传输。
DRPC:完成分布式的RPC,DRPC提供了集群中处理功能的访问接口.

技术架构
在storm集群中,结点被一个持续运行的主结点管理。
Storm集群中有两种结点:主结点和工作结点。主结点运行一个叫做Nimbus的守护进程,它负责在集群内分发代码,为每个工作结点指派任务和监控失败的任务,这个很类似于Hadoop中的Job Tracker。工作结点运行一个叫做Supervisor的守护进程,每个工作节点都是topology中一个子集的实现。Storm中的topology运行在不同机器的许多工作结点上。
zookeeper是完成nimbus和supervisor之间协调的服务。
关键组件
- **Topology(拓扑) **:storm中运行的一个实时应用程序,因为各个组件间的消息流动形成逻辑上的一个拓扑结构。 Topolog是y一组由Spouts(数据源)和Bolts(数据操作)通过Stream Groupings进行连接组成的图。
- ** Spout** :从来源处读取数据并放入topology。Spout分成可靠和不可靠两种;当Storm接收失败时,可靠的Spout会对tuple(元组,数据项组成的列表)进行重发;而不可靠的Spout不会考虑接收成功与否只发射一次。而Spout中最主要的方法就是nextTuple(),该方法会发射一个新的tuple到topology,如果没有新tuple发射则会简单的返回。
- ** Bolt** :Topology中所有的处理都由Bolt完成。Bolt可以完成任何事,比如:连接的过滤、聚合、访问文件、数据库等等。Bolt从Spout中接收数据并进行处理,如果遇到复杂流的处理也可能将tuple发送给另一个Bolt进行处理。而Bolt中最重要的方法是execute(),以新的tuple作为参数接收。不管是Spout还是Bolt,如果将tuple发射成多个流,这些流都可以通过declareStream()来声明。
消息
1.Tuple:一次消息传递的基本单元。本来应该是一个key-value的map,但是由于各个组件间传递的tuple的字段名称已经事先定义好,所以tuple中只要按序填入各个value就行了,所以就是一个value list.
2.Stream:以tuple为单位组成的一条有向无界的数据流。
网友评论