流计算学习笔记

流数据的特征:

1.数据快速持续到达;

2.来源众多,格式复杂;

3.数据量大,但不十分注重存储,经过处理后要么丢弃要么归档;

4.注重数据整体价值而非个体价值;

5.新到达的数据顺序无法控制;

6.随着时间的流逝而价值降低。

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

实时查询服务与传统查询服务的区别在于,传统查询服务是用户主动查询,而实时查询服务是在数据更新后,主动将更新后的查询数据推送给用户。

Storm

streams,无限的Tuple序列,每个Tuple是一堆任何类型的值,每个值有自己的名字,Tuple序列以会面式的方式并行地创建和处理。Tuple本质上是一个由K-V对数据集组成的Map,只是Tuple值的名字已经预先在发送方和接收方约定好,所以Tuple只需要写入名字对应的value即可。

Spout,数据源头,将外部数据读取进来,封装成Tuple,发送到stream。Spout会主动的,不断的调用nextTuple函数,以封装和传递Tuple。

Bolt,处理引擎,负责数据处理。对到达的Tuple进行数据处理,然后发送给其它Bolt或作为结果输出。它可以进行过滤、函数操作、join等操作。它属于被动操作,在接收到Tuple后,用户可调用execute方法来执行数据处理逻辑。

Tolology,可以理解成为MR里的Job,是一系列Spout和Bolt组成的数据处理流程。Tolology里的组件都是并行执行的。Bolt里的操作也可以分为若干Task去并行执行。甚至可以设定组件间的并行度。

Stream Groupings,对任务进行分组,将任务分配给Bolt的task。支持随机分组(ShuffleGrouping)、按字段分组(FieldsGrouping,相同字段值的Tuple分配到同一Task)、广播分组(AllGrouping,每个Task都收到全部的Tuple)、全局分组(GlobalGrouping,所有的Tuple分到一个Task里)、不分组(NonGrouping)和直接分组(DirectiGrouping,指定Task执行)。

Storm集群采用Master-Worker节点方式部署,Tolology相当于Hadoop中的Job,NimBus相当于JobTracker负责任务调度和分配、SuperVisor类似于TaskTracker负责任务跟踪和监控、Spout和Bolt相当于Map和Reduce。在运行过程中,Tolology会无终止的运行,直至人为停止。NimBus和SuperVisor之间通过ZooKeeper进行信息交互,可保证其稳定性。

在进行Tolology任务提交时,Storm会将Spout和Bolt程序进行序列化,并生成相应的实例,再将实例通过网络分发到执行任务的节点上去。

每个Worker进程属性唯一一个Tolology,第个Worker进程中运行一个可多个executor线程,每个executor线程运行一个或多个Task,实际的处理过程是由Task完成的。在运行过程中,Task的数量是固定的(在设计时已经设定好),但executor的数量是不定的。

Spark Streaming

Spark Streaming对输入的数据按照时间片(如1秒)对数据进行分片,然后将数据段转换为RDD,再进行批处理操作。Spark Streaming将数据抽象为DStream连续而又离散化的数据流。

Spark Streaming比Storm的容错性强,可以兼容批量和(准)实时数据分析,但无法做到毫秒级的数据分析。

 

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