继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Spark Streaming

蓝山帝景
关注TA
已关注
手记 482
粉丝 47
获赞 152

Spark treaming简介

Spark Streaming是Spark中的一个组件,具有高吞吐量,容错能力强的特点,基于Spark Core进行构建,也能够与Spark core.Spark SQL进行混合编程,用于对流式进行处理,类似于Storm.

Spark Streaming的输入和输出

webp

SS的输入输出

如上图所示,Spark Streming是流式数据的一个主要处理组件,左边是数据源的输入,右边是数据源的输出,此外,Spark Streaming也能和MLlib(机器学习)以及Graphx完美融合

DStream

Spark Streaming有一个针对流式计算的组件,叫DStream,正如Spark core的组件RDD,Saprk SQL的组件DataFrame和DataSet.

webp

DStream的源码

在源码中DStream是通过HashMap来保存他所管理的数据流的。K是RDD中数据流的时间,V是包含数据流的RDD。

webp

数据传输示意图

DStream采用微批次架构处理,它是由一堆RDD组成的集合,它的工作原理是将输入的数据切割成一个个单位时间内的RDD,于是每个单位时间内都有一个RDD,然后每一个RDD又会通过Saprk

Core处理成新的流.,因此Spark Streaming输出的是单位时间内一节一节的流,然后递给Saprk

Core后,它输出的也是一节一节的流(RDD组成的序列)

Streaming的输入数据源

Streaming的数据源分为三种方式:文件数据源 / 自定义数据源 / RDD队列

文件数据源: Spark Streaming会监控一个目录,这个目录会是HDFS的目录,这个目录下面一旦有文件进入,Streaming就会处理这个文件的信息.,前提是这些文件具有相同的格式,可以通过移动来实现文件进入

自定义数据源:

自定义数据源通过继承Receiver,实现onStart.onStop方法来自定义数据源采集,具体步骤如下:

1. 新建一个class去继承Receiver,并给Receiver传入一个类型的参数,该类型参数是你需要接收的数据的类型.

2.重写Receiver的方法,onStart方法(在Receiver启动的时候调用的方法). onStop方法(在Receiver正常体制的情况下调用的方法)

3.在程序中通过streamingContext.receiverStream(new CustomeReceiver)来调用你的定制化Receiver.

webp

代码

webp

webp

代码写好后,打成jar包,在hadoop下启动发射语句 nc -lk 9999,再在spark下启动那个jar,就OK了

RDD队列

RDD队列是streamingContext()的实例,调用queuestream(RDD),里面传入一个RDD队列,代码如下:

webp

RDD队列数据源

Streaming和Kafka的对接

数据进入kafka输入端,形成一个kafka队列,队列依次进入streaming里,通过streaming的处理,在通过kafka的输出端输出来

先启动zookeeper,再启动kafka  bin/kafka-server-start.sh-daemon ./config/server.properties

下次补充..

Streaming和Flume的对接

下次补充..



作者:终生学习丶
链接:https://www.jianshu.com/p/fa906e8d692c


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP