Spark学习笔记:Spark Streaming工作原理

目录

 

Spark Streaming概述

一、Apache Spark

Spark Core

Spark SQL

Spark Streaming

二、Spark Streaming处理数据的流程

1.数据源

2.数据处理

3.存储结果

三、Spark Streaming工作原理


Spark Streaming概述

目前对于流式数据实时处理方案主要有两种:

一条一条数据的处理,它的实时性很高,亚秒级别,延迟性非常的低,比如:Storm、JStorm
一批次一批次数据的处理,按时间间隔进行划分,时间间隔比较短,运行延迟性在毫秒到秒级别,比如SparkStreaming

一、Apache Spark

集批处理、交互式处理和流式处理,一栈式大数据解决方案

Spark Core

Spark Core主要是作为离线批处理(Batch Processing),每次处理的数据都是一个固定的数据集,而不是变化的

相关概念

RDD:弹性分布式数据集
Spark Context:Spark的上下文,它负责与程序和spark集群进行交互,包括申请集群资源、创建RDD、accumulators及广播变量等。

Spark SQL

Spark SQL用于交互式处理(interactive Processing),同样的,每次处理的数据都是一个固定的数据集,而不是变化的

相关概念

DataFrame=RDD+Schema
DataSet:相当于一个Row类型的DataFrame,在Spark 2.x之后推荐使用DataSet
SQLContext:SQL的上下文

Spark Streaming

Spark Streaming是一个流式数据处理(Stream Processing)的框架,要处理的数据就像流水一样源源不断的产生,就需要实时处理。在Spark Streaming中,对于Spark Core进行了API的封装和扩展,将流式的数据切分为小批次(batch,称之为微批,按照时间间隔切分)进行处理,可以用于进行大规模、高吞吐量、容错的实时数据流的处理。
支持从很多种数据源中读取数据,使用算子来进行数据处理,处理后的数据可以被保存到文件系统、数据库等存储中

相关概念

DStream:离散流,相当于是一个数据的集合
StreamingContext:在创建StreamingContext的时候,会自动的创建SparkContext对象

对于电商来说,每时每刻都会产生数据(如订单,网页的浏览数据等),这些数据就需要实时的数据处理


将源源不断产生的数据实时收集并实时计算,尽可能快的得到计算结果并展示

二、Spark Streaming处理数据的流程

1.数据源

大多情况从Kafka中获取数据,还可以从Flume中直接获取,还能从TCP Socket中获取数据(一般用于开发测试)

2.数据处理

主要通过DStream针对不同的业务需求使用不同的方法(算子)对数据进行相关操作,企业中最多的两种类型统计:实时累加统计(如统计某电商销售额)会用到DStream中的算子updateStateBykey、实时统计某段时间内的数据(如对趋势进行统计分析,实时查看最近20分钟内各个省份用户点击广告的流量统计)会用到reduceByKeyAndWindow这个算子。

3.存储结果

调用RDD中的API将数据进行存储,因为Spark Streaming是将数据分为微批处理的,所以每一批次就相当于一个RDD,可以把结果存储到Console(控制台打印,开发测试)、Redis(基于内存的分布式Key-Value数据库)、HBase(分布式列式数据库)、RDBMS(关系型数据库,如MySQL,通过JDBC)

三、Spark Streaming工作原理

Spark Streaming的工作原理是,先接收实时输入的数据流,然后将数据拆分成多个batch(批),比如每收集1秒的数据封装为一个batch,然后将每个batch交给Spark的计算引擎进行处理,最后会生产出一个结果数据流,其中的数据,也是由一个一个的batch所组成的

 

展开阅读全文

没有更多推荐了,返回首页