zoukankan      html  css  js  c++  java
  • Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming

    Spark Streaming揭秘 Day29

    深入理解Spark2.x中的Structured Streaming

    在Spark2.x中,Spark Streaming获得了比较全面的升级,称为Structured Streaming,和之前的很不同,功能更强大,效率更高,跟其他的组件整合性也更好。

    连续应用程序continuous application

    首先,也是最重要的,在2.x中,提出了一个叫做continuous applications连续应用程序的概念。
    如下图所示,数据从Kafka中流进来,通过ETL操作进行数据清洗,清洗出来作为目标数据进行进一步处理,可能是机器学习,也可能是交互式查询,也有可能直接把数据存在数据库或者其他外部存储设备,也有可能是直接交给已有的应用程序。也就是说SparkStreaming从获得数据后,能把全部处理环节串联起来,称之为端到端(End to end)处理!!!
    Snip20160618_15
    举个例子:如果要将货物进行海运,大致会下面这些阶段:
    货物从仓库运出-->出来之后装上车-->到车开动-->车在马路上行驶-->到了码头停下来-->货物从车上卸下来-->从陆地上弄到船上。
    这些阶段一环扣一环,每一环都有责任,都会有风险。
    continuous application的模型就与这个类似,在充分应对风险的前提下,可以串联业务的全部过程!!!

    无边界表unbounded table

    对SparkStreaming来说,Continuous还有另一层含义,即运行在DataSet和Dataframe之上。
    基本观点是把数据看成一张表,默认情况下DataSet和Dataframe中的表是有边界的,而在流处理中是无边界的。对于SparkStreaming来说,是将数据抽象为了一个没有边界的表!!!

    这个做法有一个非常大的好处,我们知道,目前SparkStreaming是直接依赖RDD,优化需要自己完成,使用DataSet和Dataframe就可以利用Tungsten引擎来进行优化。把Tungsten等优化技术轻而易举的应用起来,可以说是在技术的运用上促进化学反应的发生。

    Snip20160618_20

    新加入的Planner就类似路由器,我们在使用时,可以按照时间说明,由planner确定每次读取的位置,在运行时动态绑定位置。在这种模式下,没有数据收集再处理的概念,认为数据一直在那儿,直接拿了处理就行。这可以极大的简化对流处理的理解。

    Snip20160618_21

    增量输出模式delta output

    在2.x中,增加了很多输出模式,delta output是其中的一种最重要的一种。
    增量更新,也就是说有需要更新数据的才会更新,其他的不变。Trigger会不断检测输入数据,在不断的进行处理之后,输出结果只更新需要更新的内容,这个更符合我们应用程序的处理场景。

    Snip20160618_19

    API简化

    在API方面,引入和流函数的封装。
    这边举个例子:Kafka中读取的数据,通过stream方法形成流,就可以直接与jdbc中读取的数据在DataSet层面就进行Join,不用使用transform或者foreachRDD方法。
    stream方法底层依赖Dataset和Dataframe,集成了SparkSql和Dataset几乎所有的功能,把流处理的代码编写一下子简化了很多。

    Snip20160618_18

    其他改进

    2.x同时也解决了DStream的很多问题。

    1. 增加了eventTime的概念,在原有基于mini batch处理的基础上,学习了Storm基于每个record的事件处理机制。
    2. serve using JDBC,可以把SparkStreaming抽象成一个数据库,直接通过jdbc访问数据。
    3. change queries,在运行时可以变更query,并支持多个query并行运行。

    Snip20160618_16

    小结

    从2.x的设计来看,从更根本上,是为了满足更快Faster、完全容错fault-tolerant、完全的语义一致性exactly的要求。
    通过实现有状态流处理,让我们的功能更强大。而基于DataSet和Dataframe处理,让我们忘记流的概念,使用将会越来越简单。

    欲知后事如何,且听下回分解!

    DT大数据每天晚上20:00YY频道现场授课频道68917580

  • 相关阅读:
    盒子垂直水平居中
    Sahi (2) —— https/SSL配置(102 Tutorial)
    Sahi (1) —— 快速入门(101 Tutorial)
    组织分析(1)——介绍
    Java Servlet (1) —— Filter过滤请求与响应
    CAS (8) —— Mac下配置CAS到JBoss EAP 6.4(6.x)的Standalone模式(服务端)
    JBoss Wildfly (1) —— 7.2.0.Final编译
    CAS (7) —— Mac下配置CAS 4.x的JPATicketRegistry(服务端)
    CAS (6) —— Nginx代理模式下浏览器访问CAS服务器网络顺序图详解
    CAS (5) —— Nginx代理模式下浏览器访问CAS服务器配置详解
  • 原文地址:https://www.cnblogs.com/dt-zhw/p/5597353.html
Copyright © 2011-2022 走看看