SparkStreaming
SparkStreaming
是什么
是Spark的一个模块,用于构建高吞吐高容错的分布式流式计算程序
-
特点
-
简单易用
SparkStreaming包含并扩展了SparkCore的算子操作
可以使用类似RDD的操作来对流式数据进行处理 -
高容错
SparkStreaming提供与SparkCore类似的容错机制
可以保证在高速的流式计算中,每条数据恰好执行一次
还通过窗口机制,允许为同一个流设置多个批间隔 -
兼容Spark的其他模块
SparkStreaming兼容RDD和DF、DSapi
可以在同一个程序中融合流式计算、批处理和结构化运算
-
离线计算和流式计算
离线计算 | 流式计算 | |
---|---|---|
别名 | 批处理 | 实时计算 |
处理延迟 | 高 | 低(毫秒级、秒级) |
常用框架 | MR、SaprkCore、SparkSQL | Storm、SparkStreaming、Flink |
-
Storm是Hadoop生态流式计算框架的鼻祖
-
Storm将计算任务抽象为一个topology
-
topology包含两类组件
-
spout :从数据源读取数据,并将每条数据封装为一个tuple发送给下游的bolt
-
bolt :接到上游的tuple,将tuple中的数据处理完,将结果封装为另一个tuple发送到下游bolt
-
Storm的开发流程
- 编写Spout类
- 编写Bolt类
- 编写主程序用于组装组件
-
TopologyBuilder
.setSpout(new 自定义spout)
.setBolt(new 自定义Bolt).(设置接收的数据上游)
.setBolt(new 自定义Bolt).(设置接收的数据上游)
...
提交topology到集群
对比流式计算框架
Storm | SparkStreaming | Flink | |
---|---|---|---|
缓存 | 基于内存 | 基于内存和磁盘 | 基于内存和磁盘 |
实时性 | 毫秒级 | 秒级 | 毫秒级 |
原理 | 基于tuple的流式计算 | 微批处理 | 流式计算 |
吞吐量 | 百万级 | 无穷大 | 无穷大 |
编程语言 | clojure,java | java,scala,python | java,scala |