Spark Streaming实时计算框架

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: Spark Streaming实时计算框架

Spark Streaming实时计算框架

近年来,在Web应用、网络监控、传感监测、电信金融、生产制造等领域,增强了对数据实时处理的需求,而Spark中的Spark Streaming实时计算框架就是为实现对数据实时处理的需求而设计

1,什么是实时计算

在传统的数据处理流程(==离线计算==)中,复杂的业务处理流程会造成结果数据密集,结果数据密集则存在数据反馈不及时,若是在实时搜索的应用场景中,需要实时数据做决策,而传统的数据处理方式则并不能很好地解决问题,这就引出了一种新的数据计算——==实时计算==,它可以针对海量数据进行实时计算,无论是在数据采集还是数据处理中,都可以达到==秒级别==的处理要求。

2,Spark Streaming概述

  • Spark Streaming是一个构建在Spark之上,是Spark四大组件之一
  • 是Spark系统中用于处理流式数据的分布式流式处理框架
  • 具有可伸缩、高吞吐量、容错能力强等特点。
  • 能够和Spark SQL、MLlib、GraphX无缝集成
  • 处理的数据源可以来自Kafka,Flume,Twitter,ZeroMQ,Kinesis or TCP sockets
  • 不仅可以通过调用map,reduce,join和window等API函数来处理数据,也可- 以使用机器学习、图算法来处理数据
  • 最终结果可以保存在文件系统、数据库或者实时Dashboard展示

3,Spark Streaming运行原理

  • Spark Streaming的输入数据按照时间片(batch size)分成一段一段的数据,得到批数据(batch data),每一段数据都转换成Spark中的RDD,然后将Spark Streaming中对DStream的Transformation操作变为针对Spark中的RDD的Transformation操作,将RDD经过操作变成中间结果保存在内存中。整个流式计算根据业务的需求可以对中间的结果进行叠加或者存储到外部设备。
    运行原理

4,初步使用Spark Streaming(词频统计)

1,创建StreamingContext对象
2,创建InputDStream:Spark Streaming需要指明数据源,DStream输入源包括基础来源和高级来源,基础来源是在StreamingContext API中直接可用的来源,如文件系统、Socket连接和Akka actors。高级来源包括Kafka、Flume、Kinesis、Twitter等,高级来源可以通过额外的实用工具类创建
3,操作DStream:对于从数据源得到的DStream,用户可以在其基础上进行各种操作
3,启动Spark Streaming:之前的所有步骤只是创建了执行流程,程序没有真正连接上数据源,也没有对数据进行任何操作,只是设定好了所有的执行计划,当ssc.start()启动后程序才真正进行所有预期的操作

具体代码:

1,在slave1下载nc监听服务
yum -y install nc
2,在 master节点启动spark-shell

[hadoop@master spark]$ bin/spark-shell --master local[2]

spark-shell

3,编写代码:

scala> import org.apache.spark.streaming.StreamingContext
import org.apache.spark.streaming.StreamingContext

scala> import org.apache.spark.streaming.StreamingContext._
import org.apache.spark.streaming.StreamingContext._

scala> import org.apache.spark.streaming.dstream.DStream
import org.apache.spark.streaming.dstream.DStream

scala> import org.apache.spark.streaming.Duration
import org.apache.spark.streaming.Duration

scala> import org.apache.spark.streaming.Seconds
import org.apache.spark.streaming.Seconds

scala> sc.setLogLevel("WARN")

scala> val ssc = new StreamingContext(sc,Seconds(1))
ssc: org.apache.spark.streaming.StreamingContext = org.apache.spark.streaming.StreamingContext@664f49f

scala> val lines = ssc.socketTextStream("slave1",8888)
lines: org.apache.spark.streaming.dstream.ReceiverInputDStream[String] = org.apache.spark.streaming.dstream.SocketInputDStream@53432aef

scala> val words=lines.flatMap(_.split(" "))
words: org.apache.spark.streaming.dstream.DStream[String] = org.apache.spark.streaming.dstream.FlatMappedDStream@fd0e118

scala> val wordCounts = words.map(x => (x,1)).reduceByKey(_+_)
wordCounts: org.apache.spark.streaming.dstream.DStream[(String, Int)] = org.apache.spark.streaming.dstream.ShuffledDStream@22561412

scala> wordCounts.print()

scala> ssc.start()

4,在slave1启动nc

[hadoop@slave1 ~]$ nc -l 8888

5,在slave1输入内容,查看master
slave1
master

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
3月前
|
消息中间件 Kafka Apache
Apache Flink 是一个开源的分布式流处理框架
Apache Flink 是一个开源的分布式流处理框架
485 5
|
12天前
|
分布式计算 大数据 数据处理
【Flink】Flink跟Spark Streaming的区别?
【4月更文挑战第17天】【Flink】Flink跟Spark Streaming的区别?
|
16天前
|
运维 监控 Java
面经:Storm实时计算框架原理与应用场景
【4月更文挑战第11天】本文是关于Apache Storm实时流处理框架的面试攻略和核心原理解析。文章分享了面试常见主题,包括Storm的架构与核心概念(如Spout、Bolt、Topology、Tuple和Ack机制),编程模型与API,部署与运维,以及应用场景与最佳实践。通过代码示例展示了如何构建一个简单的WordCountTopology,强调理解和运用Storm的关键知识点对于面试和实际工作的重要性。
30 4
面经:Storm实时计算框架原理与应用场景
|
18天前
|
机器学习/深度学习 分布式计算 BI
Flink实时流处理框架原理与应用:面试经验与必备知识点解析
【4月更文挑战第9天】本文详尽探讨了Flink实时流处理框架的原理,包括运行时架构、数据流模型、状态管理和容错机制、资源调度与优化以及与外部系统的集成。此外,还介绍了Flink在实时数据管道、分析、数仓与BI、机器学习等领域的应用实践。同时,文章提供了面试经验与常见问题解析,如Flink与其他系统的对比、实际项目挑战及解决方案,并展望了Flink的未来发展趋势。附带Java DataStream API代码样例,为学习和面试准备提供了实用素材。
72 0
|
2月前
|
存储 分布式计算 Spark
实战|使用Spark Streaming写入Hudi
实战|使用Spark Streaming写入Hudi
47 0
|
2月前
|
SQL API 数据处理
新一代实时数据集成框架 Flink CDC 3.0 —— 核心技术架构解析
本文整理自阿里云开源大数据平台吕宴全关于新一代实时数据集成框架 Flink CDC 3.0 的核心技术架构解析。
749 0
新一代实时数据集成框架 Flink CDC 3.0 —— 核心技术架构解析
|
4月前
|
API Apache 数据库
Flink CDC 3.0 正式发布,详细解读新一代实时数据集成框架
Flink CDC 3.0 正式发布,详细解读新一代实时数据集成框架
218 0
|
4月前
|
分布式计算 监控 数据处理
Spark Streaming的容错性与高可用性
Spark Streaming的容错性与高可用性
|
4月前
|
分布式计算 数据处理 Apache
Spark Streaming与数据源连接:Kinesis、Flume等
Spark Streaming与数据源连接:Kinesis、Flume等
|
4月前
|
消息中间件 分布式计算 Kafka
使用Kafka与Spark Streaming进行流数据集成
使用Kafka与Spark Streaming进行流数据集成