一.概述
实时获取来自不同数据源的海量数据经过实时分析处理,或的有价值的信息.
1.数据的处理流程
- 静态数据:数据不会发生变化,如数据仓库中的数据;
- 流数据:数据以大量,快速.时变的流形式持续到达.
2.流数据特征:
- 数据快速持续到达,潜在大小也许是无穷无尽的;
- 数据来源众多,格式复杂;
- 数据量大,但是不十分关注存储,一旦经过处理,要么被丢弃,要么被归档存储;
- 数据顺序颠倒,或者不完整,系统无法控制将要处理的新到达的数据元素的顺序;
3.数据的分析计算
4. 大数据的典型的三大计算框架
- Hadoop
- Spark
- Strom
5.流计算基本理念
- 数据的价值随着时间的流逝而降低;
- 当事件出现时就应该进行处理,儿不是缓存起来进行批处理;
- 低延迟,高可靠,可扩展;
6.流计算系统要求:高性能,海量式,实时性,分布式,易用性,可靠性;
二.流计算处理流程
1.数据实时采集:通常采集多个数据源的海量数据需要保证实时性,低延迟与稳定可靠;
2.数据采集系统的基本架构
3.数据实时计算
4.实时查询服务
5.流处理系统和传统的数据处理系统的区别
三.流计算的应用
-
电子商务
-
实时交通
四.开源流计算框架Storm
1.Storm 简介
1.1 优点:
- 可以简单,高效,可靠地处理流数据,支持多种编程语言,处理非常灵活;
- 可以非常方便的与现有数据库系统产品进行融合,从而开发出非常强大的实时计算系统;
1.2 特点
- 整合性,简易的API;
- 可扩展性;
- 可靠的消息处理;
- 支持各种编程语言;
- 快速部署;
- 免费开源;
2.Storm 设计思想
2.1 Storm 将流数据Stream 描述成无限的Tuple 序列,这些Tuple 序列会以分布式的方式并行地创建和处理;
2.2 Spout
2.3 Bolt
2.4 Topology
2.5 Stream Groupings
3.Storm 框架设计
3.1 Storm 与Hadoop 类似;
3.2 Storm 集群采用"Master-Worker"的节点方式.
3.3 Strom 集群架构图
3.4 Worker 进程
3.5 Storm 工作流程
四.Spark Streaming,Samza流计算框架及其比较
4.1 Spark Streaming
- 面向批处理的实时计算框架,独特的RDD 设计方式;
4.2 Spark Streaming 的设计
- 可以整合多种数据源,如Kafka,Flume,HDFS,TCP套接字;
- 处理后的数据可以存储至文件系统,数据库,或显示在仪表盘里;
4.3 执行流程
-
Spark Streaming 的基本原理是将实时输入数据流以时间片(秒级)为单位进行拆分,然后经Spark 引擎以类似批处理的方式处理每个时间片数据;
-
DStream 操作示意图
-
数据流的建模:
4.4 Spark Streaming 与Storm 的对比
4.5 Samza
-
基本概念:
-
作业:
-
分区:每一个分区都是一个消息队列;
-
任务:
-
数据流图:
-
-
Samza 架构:
- 流数据层:负责数据流的收集分发,流处理层和执行层都被设计成可插拔的,开发人员可以使用其他框架来替代YARN 和Kafka;
- 执行层;
- 处理层;
-
对比:
-
Storm Spark Streaming和Samza的对比