zoukankan      html  css  js  c++  java
  • 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()来手动结束流计算进程

    不忘初心,方得始终! 坚持!坚持!坚持!!
  • 相关阅读:
    学到了林海峰,武沛齐讲的Day20 装饰器
    学到了林海峰,武沛齐讲的Day19 迭代细讲
    学到了林海峰,武沛齐讲的Day18 迭代
    学到了林海峰,武沛齐讲的Day18-4 文件操作
    hdu1106 java字符串分割
    hdu1282 回文数猜想
    hud1047 java大数忽略空格
    hdu1018 阶乘位数的数学原理
    hdu1715 java解大菲波数
    hdu1316 java解高精度斐波数
  • 原文地址:https://www.cnblogs.com/sumboy/p/9367993.html
Copyright © 2011-2022 走看看