Spark Steaming Abstract

Spark Steaming Abstract

Spark Streaming 是 Spark Core API 的扩展,它支持弹性的,高吞吐的,容错的实时数据流的处理。
数据源支持:

  • Kafka
  • Flume
  • HDFS/S3
  • Kinesis
  • Twitter
  • TCP sockets

又可分为:

  1. Basic sources(基本来源): 在 StreamingContext API 中直接可用的源(source)。如文件系统(file systems)和 socket 连接(socket connections)。
  2. Advanced sources(高级来源): Kafka,Flume,Kinesis等通过额外的实体类来使用的来源, 需要连接额外的依赖。
Spark Steaming Abstract_第1张图片
image

原理:接收实时输入数据流并将数据切分成多个批数据,然后由Spark Engine 处理并分批生成 结果数据流。


Spark Steaming Abstract_第2张图片
image

Spark Streaming 提供了一个高层次的抽象叫做离散流(discretized stream)或者 DStream,它代表一个连续的数据流。DStream 可以通过来自数据源的输入数据流创建,例如 Kafka,Flume 以及 Kinesis,或者在其他 DStream 上进行高层次的操作创建。在内部,一个 DStream 是通过一系列的 RDD 来表示。

StreamingContext

初始化 Spark Streaming 程序,必须创建 StreamingContext 对象,它是所有的 Spark Streaming 功能的主入口点。

StreamingContext 定义之后:

  • 通过创建输入 DStreams 定义输入源。
  • 通过应用转换和输出操作 DStreams 定义流计算(streaming computations)。
  • 开始接收数据,并用 streamingContext.start() 处理它。
  • 等待处理被停止(手动停止或因任何错误停止)StreamingContext.awaitTermination() 。
  • 该处理可以使用 streamingContext.stop() 手动停止。

注意:

  • StreamingContext 一旦启动,将不会有新的数据流的计算可以被创建或者添加到它。
  • StreamingContext 一旦停止,它不会被重新启动。
  • 同一时间内在 JVM 中只有一个 StreamingContext 存活。
  • 在 StreamingContext 上的 stop() 同样也停止了 SparkContext 。若只停止 StreamingContext ,设置 stop() 的可选参数: stopSparkContext 为 false 。
  • SparkContext 可以被重新用于创建多个 StreamingContexts,只要前一个 StreamingContext 在下一个StreamingContext 被创建之前停止(不停止 SparkContext)。

DStream

Discretized Stream(离散化流)或者 DStream(离散流)是 Spark Streaming 提供的基本抽象。

DStream 代表了一个连续的数据流,无论是从源接收到的输入数据流,还是通过变换输入流所产生的处理过的数据流。

在内部,一个DStream表示一系列连续的 RDDs(RDD 是 Spark 分布式数据集的抽象)。在一个 DStream 中每个 RDD 包含来自一定时间间隔的数据。


Spark Steaming Abstract_第3张图片
image
  • 实时数据流处理

你可能感兴趣的:(Spark Steaming Abstract)