SparkStreaming是什么?
Spark Streaming用于流式数据的处理。Spark Streaming支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字等等。数据输入后可以用Spark的高度抽象原语如:map、reduce、join、window等进行运算。而结果也能保存在很多地方,如HDFS,数据库等。
它的这种输入->处理->输出模型可以类比RDD的计算模型;只不过,相比于RDD,它的数据源是实时的。
Spark Streaming使用离散化流(discretized stream)作为抽象表示,叫作DStream。DStream 是随时间推移而收到的数据的序列。在内部,每个时间区间收到的数据都作为 RDD 存在,而DStream是由这些RDD所组成的序列(因此得名“离散化”)。
SparkStreaming架构
架构图1
架构图2
1)数据流被接收器接收,封装成DStream,传递给driver;接收器是一个executor,是一个长期长期运行的线程。
2)driver把任务进行分解,分发给其他executor执行;底层还是利用SparkContext和RDD来实现的。
3)以批次为单位输出结果。