本文共 1337 字,大约阅读时间需要 4 分钟。
流计算
- 流数据:数据以大量、快速、时变为主要特点
- 需要实时的处理
- 流式数据->点击流数据->实时跟踪分析->迅速给出相关分析
- 特征:快速,无尽、来源众多、数据量大、注重数据整体价值、数据颠倒不完整等
- 静态数据:例如数据仓库中的数据
- 动态数据:(流数据)
概念
- 流计算:实时获取来自不同数据源的海量数据经过实时分析处理获取有价值信息
- 数据的价值随时间的推迟而降低
- 系统要求
- 开源六计算框架
处理流程
- 数据实时采集->数据实时计算->实时查询服务
- 分布式日志采集:
- 采集系统基本框架
- Agent:主动采集数据,把数据推出送到Collector
- Collector:接受多个Agent数据并进行有序可靠高性能的转发
- Store:存储Collector转发过来的数据
- 数据实时计算是对采集数据进行实时分析和计算并反馈实时结果
应用
- 传统的应用分析:用户主动发起查询,延时导致很难保证结果实时性
- 实时交通
- 广告推送
- …
Storm
- 支持多种编程语言
- 方便于现有的数据库产品
- 特点
- 整合性:
- 具有简易API
- 可扩展性
- 可靠的消息处理
- 支持各种编程语言
- 快速部署
- 免费开源
设计思想
- Stream
- 流数据Stream描述成为一个无界的Tuple序列
- Tuple:Key-Value的Map
- Spout
- Stream的源头
- 从外部数据源读取数据,然后封装成Tuple发送到Stream
- Bolt:处理Tuple,创建新Stream(被动)
- 将Streams的状态过程抽象为Bolt
- 处理Tuple、处理后的Tuple作为新的Stream发送给其他Bolt
- 可以执行过滤操作、函数操作、Join、操作数据等任何操作
- Topology
- Spout->Bolt->Bolt<-Bolt<-Spout->Bolt->Bolt
- 图,比如描述上面的关系
- 分组方式
- ShuffleGrouping:随机分组,随即分发Stream中Tuple,保证每个Bolt的Task接受Tuple数据大量大致相同
- FieldsGrouping:按照字段分组
- GlobalGrouping:全局分组,所有Tuple都发送到tongyigeTask
- DirectGrouping:直接分组,直接指定由某个Task来执行Tuple的处理
- NonGrouping:不分组
- AllGroup:广播发送
框架设计
Storm
Spark Streaming
- 批处理的实时计算框架
- 独特的RDD设计方式
- 可以整合多种数据源:Kafka…
- 对较短时间的时间片进行批处理
- 离散化数据流,模拟连续不断的数据流
Samze
- 作业:输入流进行处理转化
- 分区:是一条条消息,每一个流都会被分成多个分区
三种框架对比
-
Samza
-
具体
实际操作
转载地址:http://veoh.baihongyu.com/