基于Spark的机器学习资料35、SparkStreaming介绍.pdf

上传人:l*** 文档编号:74074039 上传时间:2023-02-24 格式:PDF 页数:2 大小:255.62KB
返回 下载 相关 举报
基于Spark的机器学习资料35、SparkStreaming介绍.pdf_第1页
第1页 / 共2页
基于Spark的机器学习资料35、SparkStreaming介绍.pdf_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于Spark的机器学习资料35、SparkStreaming介绍.pdf》由会员分享,可在线阅读,更多相关《基于Spark的机器学习资料35、SparkStreaming介绍.pdf(2页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Spark Streaming 一、介绍 Spark Streaming 是 Spark 核心 API 的一个扩展,可以实现高吞吐量的、具备容错机制的实时流数据的处理。支持从多种数据源获取数据,包括 kafka、flume、twitter 等。Spark 的各个子框架核心都是 Spark Core。Spark Streaming 内部处理机制是:接受实时流的数据,并根据一定的时间间隔拆分成一批批的数据,然后通过 Spark Engine 处理这批数据,最终得到处理后的一批批结果数据。对应的批数据,在 Spark内核对应一个 RDD 实例,因此,对应流数据的 DStream 可以看成是一组 RD

2、Ds,即 RDD 的一个序列。Spark Streaming 的基本原理是将输入数据流以时间片(秒级)为单位进行拆分,然后以类似批处理的方式处理每个时间片数据,基本原理图如下:首先,Spark Streaming 把实时输入数据流以时间片t(如 1 秒)为单位切分成块。Spark Streaming 会把每块数据作为一个 RDD,并使用 RDD 操作处理每一小块数据。每个块都会生成一个 Spark Job 处理,最终结果也返回多块。二、容错 DStream 基于 RDD 组成,RDD 的容错性依旧有效,我们首先回忆一下 SparkRDD 的基本特性。1、RDD 是一个不可变的、确定性的可重复计

3、算的分布式数据集。RDD 的某些 partition 丢失了,可以通过血统(lineage)信息重新计算恢复;2、如果 RDD 任何分区因 worker 节点故障而丢失,那么这个分区可以从原来依赖的容错数据集中恢复;3、由于 Spark 中所有的数据的转换操作都是基于 RDD 的,即使集群出现故障,只要输入数据集存在,所有的中间结果都是可以被计算的。Spark Streaming 是可以从 HDFS 和 S3 这样的文件系统读取数据的,这种情况下所有的数据都可以被重新计算,不用担心数据的丢失。但是在大多数情况下,Spark Streaming 是基于网络来接受数据的,此时为了实现相同的容错处理

4、,在接受网络的数据时会在集群的多个 Worker 节点间进行数据的复制(默认的复制数是 2),这导致产生在出现故障时被处理的两种类型的数据:1)Data received and replicated:一旦一个 Worker 节点失效,系统会从另一份还存在的数据中重新计算。2)Data received but buffered for replication:一旦数据丢失,可以通过 RDD 之间的依赖关系,从 HDFS这样的外部文件系统读取数据。三、构建 Spark Streaming 作为构建于 Spark 之上的应用框架,Spark Streaming 承袭了 Spark 的编程风格,对

5、于已经了解 Spark的用户来说能够快速地上手。接下来以Spark Streaming官方提供的WordCount代码为例来介绍Spark Streaming 的使用方式。val conf=new SparkConf().setMaster(local2).setAppName(NetworkWordCount)val ssc=new StreamingContext(conf,Seconds(1)/Create a DStream that will connect to hostname:port,like localhost:9999 val lines=ssc.socketTextSt

6、ream(localhost,9999)/Split each line into words val words=lines.flatMap(_.split()import org.apache.spark.streaming.StreamingContext._/Count each word in each batch val pairs=words.map(word=(word,1)val wordCounts=pairs.reduceByKey(_+_)/Print the first ten elements of each RDD generated in this DStrea

7、m to the console wordCounts.print()ssc.start()/Start the computation ssc.awaitTermination()/Wait for the computation 1.创建 StreamingContext 对象 同 Spark 初始化需要创建 SparkContext 对象一样,使用 Spark Streaming 就需要创建 StreamingContext 对象。创建 StreamingContext 对象所需的参数与 SparkContext 基本一致,包括指明 Master,设定名称(如 NetworkWordCo

8、unt)。需要注意的是参数 Seconds(1),Spark Streaming 需要指定处理数据的时间间隔,如上例所示的 1s,那么 Spark Streaming 会以 1s 为时间窗口进行数据处理。此参数需要根据用户的需求和集群的处理能力进行适当的设置;2.创建 InputDStream 如同 Storm 的 Spout,Spark Streaming 需要指明数据源。如上例所示的socketTextStream,Spark Streaming 以 socket 连接作为数据源读取数据。当然 Spark Streaming 支持多种不同的数据源,包括 Kafka、Flume、HDFS/S

9、3、Kinesis 和 Twitter 等数据源;同样包括自己重写 Receiver方法来实现自己的消息处理例如 metaq。3.操作 DStream 对于从数据源得到的 DStream,用户可以在其基础上进行各种操作,如上例所示的操作就是一个典型的 WordCount 执行流程:对于当前时间窗口内从数据源得到的数据首先进行分割,然后利用 Map 和 ReduceByKey 方法进行计算,当然最后还有使用 print()方法输出结果;4.启动 Spark Streaming 之前所作的所有步骤只是创建了执行流程,程序没有真正连接上数据源,也没有对数据进行任何操作,只是设定好了所有的执行计划,当 ssc.start()启动后程序才真正进行所有预期的操作。四、DStream 的输入源 在 Spark Streaming 中所有的操作都是基于流的,而输入源是这一系列操作的起点。输入 DStreams 和 DStreams 接收的流都代表输入数据流的来源,在 Spark Streaming 提供两种内置数据流来源:基础来源 在 StreamingContext API 中直接可用的来源。例如:文件系统、Socket(套接字)连接和 Akka actors;高级来源 如 Kafka、Flume、Kinesis、Twitter 等

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁