spark-streaming

一、spark Streaming是基于spark的流式批处理引擎

原理:将实时输入数据流以时间片为单位进行拆分,然后经过spark引擎以类似批处理的方式处理每个时间片数据

二、sparkStreaming作业流程

1.客户端提交作业后启动Driver(Driver是spark作业的Master);
2.每个作业包含多个Executor,每个Executor以线程的方式运行task,Spark Streaming至少包含一个receiver task;
3.Receiver接收数据后生成Block,并把BlockId汇报给Driver,然后备份到另外一个Executor上;
4.ReceiverTracker维护Reciver汇报的BlockId;
5.Driver定时启动JobGenerator,根据Dstream的关系生成逻辑RDD,然后创建Jobset,交给JobScheduler;
6.JobScheduler负责调度Jobset,交给DAGScheduler,DAGScheduler根据逻辑RDD,生成相应的Stages,每个stage包含一到多个task;
7.TaskScheduler负责把task调度到Executor上,并维护task的运行状态;
8.当tasks、stages、jobset完成后,单个batch才算完成。

三、流式系统的特点:
1.低延迟。秒级或更短时间的响应
2.高性能
3.分布式
4.可扩展。伴随着业务的发展,数据量、计算量可能会越来越大,所以要求系统是可扩展的
5.容错。分布式系统中的通用问题,一个节点挂了不能影响应用

四、Spark Streaming 与 Strom

1、同一套系统,安装spark之后就一切都有了
2、spark较强的容错能力;strom使用较广、更稳定
3、storm是用Clojure语言去写的,它的很多扩展都是使用java完成的
4、任务执行方面和strom的区别是:
spark steaming数据进来是一小段时间的RDD,数据进来之后切成一小块一小块进行批处理
storm是基于record形式来的,进来的是一个tuple,一条进来就处理一下
5、中间过程实质上就是spark引擎,只不过sparkstreaming在spark之后引擎之上动了一点手脚:对进入spark引擎之前的数据进行了一个封装,方便进行基于时间片的小批量作业,交给spark进行计算

Streaming 程序基本步骤

1、创建输入DStream来定义输入源

2、通过对DStream应用转换操作和输出操作来定义流计算

3、用streamingContext.start()来开始接收数据和处理流程;start之后不能再添加业务逻辑。

4、通过streamingContext.awaitTermination()方法来等待处理结束(手动结束或因为错误而结束)

5、可以通过streamingContext.stop()来手动结束流计算进程

posted @ 2018-07-25 19:53  火丶日月明  阅读(174)  评论(0编辑  收藏  举报