Spark Streaming

作者: 终生学习丶 | 来源:发表于2017-10-07 15:02 被阅读53次

    Spark treaming简介

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

    Spark Streaming的输入和输出

    SS的输入输出

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

    DStream

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

    DStream的源码

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

    数据传输示意图

    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.

    代码

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

    RDD队列

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

    RDD队列数据源

    Streaming和Kafka的对接

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

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

    下次补充..

    Streaming和Flume的对接

    下次补充..

    相关文章

      网友评论

        本文标题:Spark Streaming

        本文链接:https://www.haomeiwen.com/subject/fxpdsxtx.html