一、流量计算概要流量数据:实时生成的数据,实时不断流水般到达。
流数据的特点:
1、数据持续快速到达,潜在大小可能是无限的。
2、数据源多,格式复杂。
3、数据量大,但对存储不太关注,处理后会销毁或存储在归档存储中。
4、重视数据的整体价值,但不要过于关注个别数据。
5、数据顺序有时相反,有时不完整,系统不能控制要处理的新到达的数据元素的顺序。
数据类型:静态和流数据(动态计算)。
流量计算:从不同数据源实时获取的大量数据经过实时分析处理,获取有价值的信息。流计算基本理念:
1、数据的价值随时间的推移而下降。 例如,用户点击流程。
2、发生事件时,应该及时处理,而不是缓存批量处理。流计算系统要求:
1、高性能
2、散装式
3、实时性
4、方差
5、使用方便
6、可靠性
二、流计算处理流计算的处理流程:
1、数据实时采集阶段
通常,从多个数据源收集大量数据需要确保实时性、低延迟和稳定的可靠性。
开源分布式日志收集系统: scibe、kafka、flume。
2、数据实时计算
数据实时计算阶段对收集到的数据进行实时分析和计算,并反馈实时结果。 在数据流处理系统中处理的数据可以被转移到下一个阶段并继续处理,并且可以处理相关结果,然后被丢弃或存储在相关的存储系统中。
3、实时查询服务
流计算框架的结果允许用户查看和存储实时查询。 用户需要主动咨询,但流处理的计算结果会不断更新,不断实时推送给用户。
流处理系统和传统的数据处理系统有什么区别?
1 .流处理系统处理实时数据,而传统的数据处理系统处理预存的静态数据。
2 .用户在流处理系统中获取一般是实时结果,而传统的数据处理方式获取的是过去某个历史时刻的快照。
3、流处理系统不需要用户主动发出查询,将实时生成的查询结果推送给用户。
三. Storm 1、storm的特点
)1)一致性
)2)简单的API
)3)可扩展性
(4)可靠的消息处理
)5)支持各自的编程语言
)6)快速部署
(7)免费开源
2、storm的设计思想
storm的主要术语:
)1) stream )每个tuple是一堆值,每个值都有名称,每个值可以是任何类型。 tuple是值列表。
)2) spout :流的来源。 spout从外部数据源读取数据,封装为tuple格式,并将其发送到stream。 spout是主动角色,接口内部有nextTuple函数,storm框架不断调用此函数。
)3) bolt :将流的状态迁移过程抽象为bolt。 bolt可以处理tuple,也可以将处理后的tuple作为新的流发送到其他bolt。 bolt可以执行任何操作,包括过滤、函数操作、连接和操作数据库。 bolt是被动角色,接口具有execute(Tuple tuple )方法,接收消息后调用此函数,用户可以在此方法中执行自己的处理逻辑。
)4) topology )各组件并行工作。 bolt包含多个任务,可以在不同的计算机节点上并行处理。 在topology中,可以指定每个组件的并行度。
(5)流组:
3、storm框架设计
4、流工作流程
)1)所有拓扑任务的提交必须在storm客户端节点上进行,提交后nimbus节点分配给其他supervisor节点进行处理。
)2) nimbus节点首先将提交的topology分片,分成每个task,分配给相应的supervisor,并将task和supervisor的相关信息提交给zookeeper集群。
)3) supervisor通知zookeeper集群去接收自己的任务,并对自己的工作器进程进行任务的处理。