[大数据技术原理与应用笔记]第11讲. 流计算

11.1 流计算概念

流计算: 实时获取来自不同数据源的海量数据经过实时处理获得有价值的信息

11.4 Storm

基本术语
Streams: 流数据,无界的tuple序列。

Storm将流数据strams描述成一个无界的tuple序列,这些Tuple序列会以分布式的方式并行的创建和处理。

每个tuple是一堆值,每个值有一个名字且每个值可以是任意类型,但发送方和接收方对tuple的字段都已经约定好了,因此不需要填入key,所以tuple是一个value-list

spouts: 产生数据的接口.

Storm认为每个Stream都有一个源头,将其抽象为Spout.
通常Spout会从外部数据源(数据库,队列等)读取数据,然后封装成tuple形式,发送到Stream中.
Stream是一个主动角色,接口内部有一个nextTuple的函数,Storm会不停地调用该函数,产生Tuple数据,从而形成stream流数据。

Bolts: 处理数据的接口.

Storm将Stream的状态转换过程(其实就是处理数据)抽象为Bolt
Bolt可以处理Tuple,也可以将处理后的Tuple作为新的Streams,发送给其他Bolt
Bolt可以执行过滤,函数操作,join,操作数据库等等
Bolt是一个被动角色,其接口内部有一个execute函数(Tupel作为输入),在接收到消息(Tuple)后会调用该函数,完成用户定义的处理逻辑.
整个流处理线上是由很多Bolt串起来的.

Topology: stream处理的计算图

[大数据技术原理与应用笔记]第11讲. 流计算_第1张图片

  • Topology里每个组件都是并行的
    每个Bolt分布在不同的集群上,每个Bolt的任务可以分为多个Task,每个Task又可以在不同的机器节点上并行的运行.
  • Topology指定每个组件(Bolt,Spout)并行度
  • 通过Thrift(高性能二进制通信中间件)定义Topology的结构
Stream Groupings:Streams的分发方式

[大数据技术原理与应用笔记]第11讲. 流计算_第2张图片

[大数据技术原理与应用笔记]第11讲. 流计算_第3张图片

根据不同的任务选择不同的分发方式

Storm 架构设计

Storm集群采用"Master-Worker"的节点方式

Nimbus

Master节点运行“Nimbus”的后台程序(类似于MapReduce中的JobTracker),负责在集群范围内分发代码,为Worker分配任务和监测故障。

Supervisor

Worker节点运行"Supervisor"的后台程序,负责监听分配给他的所在机器的工作,即根据Nimbus分配的任务来决定启动或停止worker进程,一个worker节点上同时运行多个worker进程

[大数据技术原理与应用笔记]第11讲. 流计算_第4张图片

借助于Zookeeper,若Nimbus进程或Supervisor进程意外终止,重启时也能读取、恢复之前的状态并继续工作,使得Storm极其稳定

[大数据技术原理与应用笔记]第11讲. 流计算_第5张图片
并行度即Task的数目,设置好以后不会变化,但Executor的数目会发生改变,但一般默认情况下Executor数目=Task数目

Storm 工作流程

[大数据技术原理与应用笔记]第11讲. 流计算_第6张图片

你可能感兴趣的:(大数据)