第 13 章 Spark Streaming 概述

13.1 Spark Streaming是什么

Spark Streaming 是 Spark 核心 API 的扩展, 用于构建弹性, 高吞吐量, 容错的在线数据流的流式处理程序. 总之一句话: Spark Streaming 用于流式数据的处理

数据可以来源于多种数据源: Kafka, Flume, Kinesis, 或者 TCP 套接字. 接收到的数据可以使用 Spark 的负责元语来处理, 尤其是那些高阶函数像: map, reduce, join, 和window.

最终, 被处理的数据可以发布到 FS, 数据库或者在线dashboards.

另外Spark Streaming也能和MLlib(机器学习)以及Graphx完美融合.


在 Spark Streaming 中,处理数据的单位是一批而不是单条,而数据采集却是逐条进行的,因此 Spark Streaming 系统需要设置间隔使得数据汇总到一定的量后再一并操作,这个间隔就是批处理间隔。批处理间隔是 Spark Streaming 的核心概念和关键参数,它决定了 Spark Streaming 提交作业的频率和数据处理的延迟,同时也影响着数据处理的吞吐量和性能。


Spark Streaming 提供了一个高级抽象: discretized stream(SStream), DStream 表示一个连续的数据流.

DStream 可以由来自数据源的输入数据流来创建, 也可以通过在其他的 DStream 上应用一些高阶操作来得到.

在内部, 一个 DSteam 是由一个 RDD 序列来表示的.


13.2 Spark Streaming特点

易用

通过高阶函数来构建应用

容错

易整合到 Spark 体系中

缺点

Spark Streaming 是一种"微量批处理"架构, 和其他基于"一次处理一条记录"架构的系统相比, 它的延迟会相对高一些.


13.3 SparkStreaming 架构

背压机制

Spark 1.5以前版本,用户如果要限制 Receiver 的数据接收速率,可以通过设置静态配制参数spark.streaming.receiver.maxRate的值来实现,此举虽然可以通过限制接收速率,来适配当前的处理能力,防止内存溢出,但也会引入其它问题。比如:producer数据生产高于maxRate,当前集群处理能力也高于maxRate,这就会造成资源利用率下降等问题。

为了更好的协调数据接收速率与资源处理能力,1.5版本开始 Spark Streaming 可以动态控制数据接收速率来适配集群数据处理能力。背压机制(即Spark Streaming Backpressure): 根据 JobScheduler 反馈作业的执行信息来动态调整 Receiver 数据接收率。

通过属性spark.streaming.backpressure.enabled来控制是否启用backpressure机制,默认值false,即不启用。

Copyright © 尚硅谷大数据 2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2019-05-07 15:55:26

results matching ""

    No results matching ""