- 本系列历史文章
- 流计算
- 流计算简介
- 数据的处理模型
- 流计算概念的概念与典型框架
- 流计算处理流程
- 传统数据处理流程
- 流数据处理流程
- 数据实时计算
- 实时查询服务
- 流计算的应用
- Storm——开源流计算框架
- Storm简介
- Storm主要术语
- Storm框架设计
- Storm工作流程
- Spark Streaming
- Spark Streaming与Storm的对比
- Storm的安装
大数据技术原理与应用学习笔记(一)
大数据技术原理与应用学习笔记(二)
大数据技术原理与应用学习笔记(三)
大数据技术原理与应用学习笔记(四)
大数据技术原理与应用学习笔记(五)
大数据技术原理与应用学习笔记(六)
大数据技术原理与应用学习笔记(七)
大数据技术原理与应用学习笔记(八)
大数据技术原理与应用学习笔记(九)
大数据技术原理与应用学习笔记(十)
流数据具有以下特征:
- 数据快速持续到达,潜在大小无穷无尽
- 数据来源众多,格式复杂
- 数据量大,但不十分关注存储,一旦经过处理,要么被丢弃,要么被归档存储
- 注重数据的整体价值,不过分关注个别数据
- 数据顺序颠倒或者不完整,系统无法控制将要处理的新到达的数据元素的顺序。
典型的三大框架:
- Hadoop
- Spark
- Storm
流计算概念:实时获取来自不同数据源的海量数据进行实时处理,从中获取有价值的信息。
基本理念:
- 数据价值随时间流逝而降低
- 需实时处理
流系统计算要求:
- 高性能
- 海量式
- 实时性
- 分布性
- 易用性
- 可靠性
用户查询→数据管理模块→得出result
两个前提:
- 存储数据是旧的
- 需用户主动查询
如下图所示:
数据实时采集系统基本架构分为 Agent、Collector、Store 三个部分,其关系如下图所示:
Agent:主动采集数据,把数据推到Collector
Collector:接收多个Agent数据并实现有序、可靠、高性能的转发
Store:存储Collector转发过来的数据(对于流计算不存储数据)
数据实时计算阶段对采集的数据进行实时的分析和计算,并反馈实时结果
经流处理系统处理后的数据,可视情况进行存储,以便之后再进行分析计算。在时效性要求较高的场景中,处理之后的数据也可以直接丢弃
实时查询服务:经由流计算框架得出的结果可供用户进行实时查询、展示或储存
传统的数据处理流程,用户需要主动发出查询才能获得想要的结果。而在流处理流程中,实时查询服务可以不断更新结果,并将用户所需的结果实时推送给用户
虽然通过对传统的数据处理系统进行定时查询,也可以实现不断地更新结果和结果推送,但通过这样的方式获取的结果,仍然是根据过去某一时刻的数据得到的结果,与实时结果有着本质的区别
- 实时分析
- 实时处理
Storm特点:
- 整合性
- 简易API
- 可扩展性
- 容错性
- 可靠的消息处理
- 支持各种编程语言
- 快速部署
- 免费、开源
Streams: 流数据,是一个无限的Tuple序列。
Spouts: 每个Stream的源头抽象为Spouts,Spouts会从外部读取流数据并持续发出Tuple。
Bolts: Storm将Stream的状态转换过程抽象为Bolts。
Topology: Storm将Spouts和Bolts组成的网络抽象成Topology。最高层次的抽象概念,可以被提交到Storm集群执行。
Stream Groupings: 用于告知Topology如何在两个组件间进行Tuple传送。
Storm和Hadoop架构组件功能对应关系
| Hadoop | Storm | |
|---|---|---|
| 应用名称 | Job | Topology |
| 系统角色 | JobTracker | Nimbus |
| 系统角色 | TasTracker | Supervisor |
| 组件接口 | Map/Reduce | Spot/Bolt |
工作流程如下图所示:
Spark Streaming可整合多种输入数据源,如Kafka、Flume、HDFS,甚至是普通的TCP套接字。经处理后的数据可存储至文件系统、数据库,或显示在仪表盘里。
Spark Streaming的执行流程如图所示:
Spark Streaming和Storm最大的区别在于,Spark Streaming无法实现毫秒级的流计算,而Storm可以实现毫秒级响应。
Storm的安装关于Storm的安装可参考厦大数据库博客:Storm安装教程_CentOS6.4/Storm0.9.6



