概述
Spark Streaming是Spark的一个子框架,但我们也可以把它看作是一个在Spark Core应用程序。
SparkStreaming在启动时运行了几个的job,并且job之间相互配合。
Spark core上面有4个流行的框架:SparkSQL、SparkSreaming、MLlib、GraphX;SparkSreaming是第一个出现的框架。
除了流计算,其他的框架大多都是在SparkCore上对一些算法或者接口进行了高层的封装;例如SparkSQL 封装了SQL语法,主要功能就是将SQL语法解析成SparkCore的底层API。而机器学习则是封装了很多的数学向量及算法。GraphX目前则没有太大的更新。
从图中可以看出DStreamGraph是RDD Graph的模板。
时空理解
SparkStreaming需要提供如下的功能:
· 逻辑管理: DStreamGraph, 它是RDD DAG的模板
· 时间管理:需要基于时间的job控制器
· 输入和输出:需要InputStream和OutputStream代表数据的输入和输出
· 容错:将具体的job提交到Spark Cluster上,因为SparkStreaming是不断的在运行job,更容易出现问题,所以容错就至关重要(单个job的容错是基于Spark core的,SparkStreaming还要提供自己框架的容错功能)。
· 事务处理,数据一定会被处理,并且只会被处理一次。也就是说每次处理数据的时候,要知道数据的边界;特别是处理过程中出现问题的情况下。