资讯专栏INFORMATION COLUMN

spark Dstreams-基本内容

IT那活儿 / 1356人阅读
spark Dstreams-基本内容

点击上方“IT那活儿”,关注后了解更多内容,不管IT什么活儿,干就完了!!!

简  介
Spark Streaming是spark core的延伸,支持实时数据流的可伸缩、高吞吐量、容错机制,支持的数据源有kafka、Kinesis、TCP等),且可以使用复杂的算法(map,reduce,join,window等)处理数据,最后可以将处理后的数据推送到文件系统、数据库或仪表盘。如下图您也可以再数据流上应用spark的机器学习和图形算法。 )


01


在内部,spark streaming接受实时数据流并且将数据流切割成一个个的小批次,然后由spark引擎进行处理,以批量生成最终结果流。

Spark streaming提供一个高级抽象叫做离散化数据流Dstreams,他代表一个连续的数据流,可以从kafka,kinesis等源输入创建数据流,也可以通过对其他数据流应用高级操作来创建数据流。

在内部,一个Dstreams代表一系列的RDD。


02


具体步骤:
批处理间隔必须根据应用程序和可用集群资源进行设置,ssc也可以通过SparkContext创建:
val ssc = new StreamingContext(sc, Seconds(1))
创建ssc之后,按照下面步骤进行:
  1. 通过输入数据源创建Dstreams。
  2. 对数据流进行转换和输出操作。
  3. 使用ssc.start()启动应用程序。
  4. 使用ssc.awaitTermination()等待停止处理。(手动或由于任何错误)
  5. 使用ssc.stop()手动停止应用程序。
举例演示:
使用spark-streaming前提是添加依赖:
如果数据源为kafka,由于spark core中无kafka依赖,需要额外添加依赖:
StreamingContext是流功能的入口,我们创建一个本地StreamingContext,两个执行线程,批处理间隔为1秒。
val conf = new SparkConf().setMaster("local[2]").setAppName("Dstreams")
master是spark,Mesos,Kubernetes,或者YARN集群URL,或者本地模式运行的特殊local[*]字符串。
实际上,在集群上运行时,你不希望在程序中写死master,而是在使用spark-submit启动应用程序时在那里接收master。


03


离散化数据流(Dstreams)

Dstreams是spark streaming提供的基本抽象,它代表一个连续的数据流,不管是输入源创建的Dsteam还是通过转换生成的输入流,在内部Dstream代表一系列连续的RDD,每个RDD都是特定时间间隔的数据。
应用于数据流的任何操作都转化为底层RDD的操作,例如在之前的例子中,对用数据流中每个RDD应用flatMap操作,如图:
这些底层RDD转换由spark引擎计算,Dstream操作隐藏了大部分这些细节,并为开发人员提供了更高级别的API。

04


输入数据流(Input Dstreams)表示从源接受的输入数据流。
在上面的例子中,lines就是输入数据流(Input DStreams),代表从TCP socket接收的数据。
每个输入数据流(Input DStreams)除了文件流都与接收器对象关联,该对象从源接受的数据并将其在spark的内存中进行处理。
Spark streaming提供两类内置streaming源:
  1. 基本source:在StreamingContext中可以直接用的基本source,像file source,socket source。
  2. 高级source:像kafka,Kinesis等,需要添加额外依赖。

注意:

  1. 一旦StreamingContext启动,就不能设置或添加新的流计算。
  2. StreamingContext一旦停止就不能重启。
  3. 一个JVM中只能同时只能有一个StreamingContext,ssc.stop()也会停止SparkContext,如果仅停止streamingContext,需要ssc.stop(false)。
  4. 只要在创建下一个StreamingContext之前停止上一个StreamingContext而不停止SparkContext,就可以重新用于创建StreamingContetx。
  5. 如果希望在应用程序中并行接受多个数据流,则可以创建多个输入数据流,这将同时创建接受多个输入数据流的多个接收器,Spark worker/executor是一个长期运行的任务,因此它占用分配给Spark流应用程序的一个核心。
    因此,务必记住,Spark Streaming应用程序需要分配足够的内核(或线程,如果在本地运行)来处理接收到的数据,以及运行接收器。
  6. 在本地运行spark streaming应用程序时,不要将master设置成local[1]或local,这两种情况意味着只有一个线程用于本地运行任务,如果您使用的是基于接收器的输入数据流(例如套接字,kafka等),则使用单个线程运行接收器,就没有其他线程处理数据了。
  7. 在集群上运行时,分配给spark streaming应用程序的内核数必须大于接收器数,否则应用只能接受数据而无法处理数据。



本文作者:潘宗昊

本文来源:IT那活儿(上海新炬王翦团队)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129640.html

相关文章

  • SparkStreaming概述

    摘要:但在企业中存在很多实时性处理的需求,例如双十一的京东阿里,通常会做一个实时的数据大屏,显示实时订单。这种情况下,对数据实时性要求较高,仅仅能够容忍到延迟分钟或几秒钟。1 Spark Streaming是什么它是一个可扩展,高吞吐具有容错性的流式计算框架吞吐量:单位时间内成功传输数据的数量之前我们接触的spark-core和spark-sql都是处理属于离线批处理任务,数据一般都是在固定位置上...

    Tecode 评论0 收藏0
  • Spark Streaming学习笔记

    摘要:输入和接收器输入代表从某种流式数据源流入的数据流。文件数据流可以从任何兼容包括等的文件系统,创建方式如下将监视该目录,并处理该目录下任何新建的文件目前还不支持嵌套目录。会被一个个依次推入队列,而则会依次以数据流形式处理这些的数据。 特点: Spark Streaming能够实现对实时数据流的流式处理,并具有很好的可扩展性、高吞吐量和容错性。 Spark Streaming支持从多种数...

    陆斌 评论0 收藏0
  • 大数据入门指南(GitHub开源项目)

    摘要:项目地址前言大数据技术栈思维导图大数据常用软件安装指南一分布式文件存储系统分布式计算框架集群资源管理器单机伪集群环境搭建集群环境搭建常用命令的使用基于搭建高可用集群二简介及核心概念环境下的安装部署和命令行的基本使用常用操作分区表和分桶表视图 项目GitHub地址:https://github.com/heibaiying... 前 言 大数据技术栈思维导图 大数据常用软件安装指...

    guyan0319 评论0 收藏0
  • Spark 』2. spark 基本概念解析

    摘要:原文基本概念解析写在前面本系列是综合了自己在学习过程中的理解记录对参考文章中的一些理解个人实践过程中的一些心得而来。是项目组设计用来表示数据集的一种数据结构。 原文:『 Spark 』2. spark 基本概念解析 写在前面 本系列是综合了自己在学习spark过程中的理解记录 + 对参考文章中的一些理解 + 个人实践spark过程中的一些心得而来。写这样一个系列仅仅是为了梳理个人学习...

    Luosunce 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<