Spark学习 Spark Streaming
Posted cheng5350
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark学习 Spark Streaming相关的知识,希望对你有一定的参考价值。
什么是Spark Streaming
Spark Streaming类似于Apache Storm,用于流式数据的处理
Spark Streaming有高吞吐量和容错能力强等特点。Spark Streaming支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字等等
数据输入后可以用Spark的高度抽象原语如:map、reduce、join、window等进行运算。而结果也能保存在很多地方,如HDFS,数据库等
Spark Streaming也能和MLlib(机器学习)以及Graphx完美融合
和Spark基于RDD的概念很相似,Spark Streaming使用离散化流(discretized stream)作为抽象表示,叫作DStream。DStream 是随时间推移而收到的数据的序列
DStream 可以从各种输入源创建,比如 Flume、Kafka 或者 HDFS。创建出来的DStream 支持两种操作,一种是转化操作(transformation),会生成一个新的DStream,
另一种是输出操作(output operation),可以把数据写入外部系统中。DStream 提供了许多与 RDD 所支持的操作相类似的操作支持,还增加了与时间相关的新操作,比如滑动窗口
目前流行的三种实时框架对比
Apache
|
Flink
|
SparkSteaming
|
Storm
|
架构
|
架构介于spark和storm之间,主从结构与sparkStreaming相似,DataFlow Grpah与storm相似,数据流可以被表示为一个有向图,每个顶点是一个定义的运算,每向边表示数据的流动
Native
|
架构依赖Spark,主从模式,每个batch批次处理都依赖driver主,可以理解为时间维度上的spark DAG
Micro-Batch
|
主从模式,且依赖ZK,处理过程中对主的依赖不大
Native
|
容错
|
基于Ghandy-Lamport distributed snapshots checkpoint机制
Medium
|
WAL及RDD血统机制
High(高)
|
Records Ack
Medium(一般)
|
处理模型与延时
|
单条时间处理
亚秒级低延时
|
一个事件窗口内的所有事件
秒级低延时
|
每次传入的一个事件
亚秒级低延时
|
吞吐量
|
High
|
High
|
Low(低)
|
数据处理保证
|
Exactly once
High
|
Exactly once(实现架用Chandy-Lamport算法,即marker-checkpoint)
High
|
At least once(实现架用record-level acknowledgments),Trident可以支持storm提供exactly once语义
Medium
|
高级API
|
Flink,栈中提供了很多高级API和满足不同场景的类库:机器学习、图分析、关系式数据处理
High
|
能够很容易的对接Spark生态圈里面的组件,同时额能够对接主流的消息传输组件及存储系统
High
|
应用需要按照特定的storm定义的规模编写
Low
|
易用性
|
支持SQL Streaming,Batch和Streaming采用统一编程框架
High
|
支持SQL Streaming,Batch和Streaming采用统一编程框架
High
|
不支持SQL Streaming
Medium
|
成熟性
|
新兴项目,处于发展阶段
Low
|
已经发展一段时间
Medium
|
相对较早的流系统,比较稳定
High
|
部署性
|
部署相对简单,只依赖JRE环境
Low
|
部署相对简单,只依赖JRE环境
Low
|
依赖JRE环境和ZK
High
|
|
|
|
|
以上是关于Spark学习 Spark Streaming的主要内容,如果未能解决你的问题,请参考以下文章
Spark学习笔记——Spark Streaming
Spark StreamingSpark Day11:Spark Streaming 学习笔记
Spark StreamingSpark Day11:Spark Streaming 学习笔记
Spark基础学习笔记32:Spark Streaming概述
Spark 学习笔记之 Streaming Window
Spark学习9 Spark Streaming流式数据处理组件学习