SparkStreaming-概述

一、Spark Streaming概述

1.什么是Spark Streaming

        SparkStreaming类似于ApacheStorm,用于流式数据的处理。根据官方文档介绍,Spark Streaming有高吞吐量和容错能力强等特点。SparkSteaming支持的数据输入源很多,例如Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字等等。数据输入后可以用Spark的高度抽象源语如:map、reduce、join、window等进行运算。而结果也能保存在很多地方,如HDFS,数据库等。另外SparkStreaming也能和MLib(机器学习)以及Graphx完美融合。

        和Spark基于RDD的概念很相似,SparkStreaming使用离散化流(discretized stream)作为抽象表示,叫做DStream。Dstream是随时间推移而收到的数据的序列。在内部,每个时间区间收到的数据都作为RDD存在,而DStream是由这些RDD所组成的序列,因此得名“离散化”。

        DStream可以从各种输入源创建,比如Flume、Kafka或者HDFS。创建出来的DStream支持两种操作,一种是转化操作(transformation),会生成一个新的DStream,另一种是输出操作(outputoperation),可以把数据写入外部系统中。DStream提供了许多与RDD所支持的操作相类似的操作支持,还增加了与时间相关的新操作,比如滑动窗口。

2.底层抽象:

        SparkCore:RDD;  SparkSql:DataFrame、DataSet; SparkStreaming:DStream。

3.什么是DStream:

        DStream是封装的一个时间批次内的多个RDD

        SparkStreaming是以时间为驱动,达到时间批次再运行;Storm是以数据为驱动,来一条数据处理一条数据(吞吐量太低)。

4.SparkStreaming特点:

        1.易用;

         2.容错:

        3.易整合到Spark体系:

5.Spark与Storm区别:

  

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

社区活动度

212 contributor 上升阶段

Medium

937 contributor

High

216 contributor,活跃比较稳定

Medium

部署性

部署相对简单,只依赖JRE环境

Low

部署相对简单,只依赖JRE环境

Low

依赖JRE环境和ZK

High

  

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值