搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
寸_铁
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
虚拟机安装win10教程(详细版)_虚拟机安装教程win10
2
低代码平台四大常见用例开发:简化企业数字化进程_低代码的开发管理
3
The project uses Gradle 4.1 which is incompatible with Java 11 or newer
4
科研学习|论文解读——大模型综述!一文带你理清全球AI巨头的大模型进化史_大模型综述论文
5
c++ 重置stringstream的状态,清空stringstream,改变读写位置_stringstream 重置
6
7. 全网最简单Lammps(Ubuntu)安装教程(你还在为安装Lammps而花钱吗?)_ubuntu安装lammps
7
codesensor:将代码转化为ast后再转化为文本向量
8
WPF绑定功能常用属性介绍
9
2022年软件测试——精选金融银行面试真题_银行软件测试面试题
10
初识分布式锁(一):分布式锁原理浅析及Mysql实现案例_mysql实现分布式锁原理
当前位置:
article
> 正文
大数据常见面试题之Spark Streaming_sparkstreaming 面试题
作者:寸_铁 | 2024-06-24 11:40:31
赞
踩
sparkstreaming 面试题
文章目录
一.SparkStreaming有哪几种方式消费kafka中的数据,他们之间的区别是什么?
1.基于Receiver的方式
2.基于Direct的方式
3.两者对比
二.Spark Streaming窗口函数的原理
三.spark streaming 容错原理
一.SparkStreaming有哪几种方式消费kafka中的数据,他们之间的区别是什么?
1.基于Receiver的方式
这种方式使用Receiver来获取数据.Receiver是使用kafka的高层次Consumer API来实现的.reveiver从kafka中获取的数据都是存储在spark executor的内存中的(如果突然数据暴增,大量batch堆积,很容易出现内存溢出的问题),然后spark streaming启动的job会去处理哪些数据
然而,在默认的配置下,这种方式可能会因为底层的失败而丢失数据,如果要启用高可用机制,让数据零丢失,就必须启用spark streaming的预写日志机制(Write Ahead Log,WAL).该机制会同步地将接收到的kafka数据写入分布式文件系统(比如hdfs)上的预写日志中.所以,即使底层节点出现了失败,也可以使用预写日志中的数据进行恢复
2.基于Direct的方式
这种不基于Receiver的直接方式,是在spark1.3中引入的,从而能够确保更加健壮的机制.替代掉使用Receiver来接收数据后,这种方式会周期性地查询kafka,来获得每个topic+partition的最新的offset,从而定义每个batch的offset的范围.当处理数据的job启动时,就会使用kafka的简单consumer api来获取kafka指定offset范围的数据
优点如下:
简化并行读取:如果要读取多个partition,不需要创建多个输入DStream然后对他们进行union操作.Spark会创建跟 kafka partition 一样多的RDD partition.并且会并行从kafka中读取数据.所以在kafka partition 和RDD partition之间,有一个一对一的映射关系
高性能:如果要保证零数据丢失,在基于receiver的方式中,需要开启WAL机制.这种方式其实效率低下,因为数据实际上被复制了两份,kafka自己本身就有高可靠机制,会对数据复制一份,而这里又会复制一份到WAL中.而基于direct的方式,不依赖Receiver,不需要开启WAL机制,只要kafka中做了数据的复制,那么就可以通过kafka的副本进行恢复
一次且仅一次的事务机制
3.两者对比
基于receiver的方式,是使用kafka的高阶API来在zookeeper中保存消费过的offset的,这是消费kafka数据的传统方式.这种方式配合着WAL机制可以保证数据零丢失的高可靠性,但是却无法保证数据被处理一次且仅一次,可能会处理两次.因为spark和zookeeper之间可能是不同步的
基于direct的方式,使用kafka的简单api,SparkStreaming自己就负责跟踪消费的offset,并保存在checkpoint.spark自己一定是同步的,因此可以保证数据是消费一次且仅消费一次
在实际生产环境中大都用Direct方式
二.Spark Streaming窗口函数的原理
窗口函数就是在原来定义的SparkStreaming计算批次大小的基础上再次进行封装,每次计算多个批次的数据,同时还需要传递一个滑动步长的参数,用来设置当次计算任务完成之后下一次从什么地方开始计算
图中time1就是SparkStreaming计算批次大小,虚线框以及实线大框就是窗口的大小,必须为批次的整数倍.虚线框到大实线框的距离(相隔多少批次),就是滑动步长
三.spark streaming 容错原理
spark streaming的一个特点就是高容错
首先spark rdd就有容错机制,每一个rdd都是不可变的分布式可重算的数据集,其记录这确定性的操作血统,所以只要输入数据是可容错的,那么任意一个rdd的分区出错或不可用,都是可以利用原始输入数据通过转换操作而重新计算的
预写日志通常被用于数据库和文件系统中,保证数据操作的持久性.预写日志通常是先将操作写入到一个持久可靠的日志文件中,然后才对数据施加该操作,当加入施加操作中出现了异常,可以通过读取日志文件并重新施加该操作
另外接收数据的正确性只在数据被预写到日志以后接收器才会确认,已经缓存但还没保存的数据可以在driver重新启动后由数据源再发送一次,这两个机制确保了零数据丢失,所有数据或从日志中恢复或者由数据源重发
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/寸_铁/article/detail/752675
推荐阅读
article
【概述】
spark
(
一
)
:
spark
特点、知识范畴、
spark
架构
、
任务
提交
流程、支持哪些
运行
环境_...
a.
spark
是继Hadoop的MapReduce之后,最具影响的大数据框架之一。与Hadoop相比,Spark基于M...
赞
踩
article
Spark
Core_
spark
自身是没有
集群
管理
工具
的, 但是如果想要
管理
数以千计
台机器的
集群
,...
Spark
CoreCreate Repository 全阶段目标理解
Spark
的特点和作用能够完成
Spark
...
赞
踩
article
Spark
集群
搭建
(完整)_
spark3.3
.4
集群
环境
搭建
...
如果要在 Yarn 中运行
Spark
程序, 首先会和 RM 交互, 开启 ApplicationMaster, 其中...
赞
踩
article
minikube
运行
spark
Pi_
minikube
spark
-
submit
...
spark
-on-k8s是
spark
执行任务的一种方式,当然还有
spark
-on-yarn等,本文讲述下
spark
-on...
赞
踩
article
spark
cache
(几种
缓存
方法)
_
spark
sql
的
cache
方法...
sql
语句中
cache
//
缓存
全表
sql
Context.
sql
("CACHE TABLE activity...
赞
踩
article
SPARK
SQL中
CTE
(
with
表达式
)会影响性能么?_
sparksql
with
...
背景及问题本文基于spark 3.1.2最近在排查spark sql问题的时候,出现了一系列的(
CTE
)
with
操作,导...
赞
踩
article
spark
sql
cache
...
1.几种缓存数据的方法例如有一张hive表叫做activity1.CACHE TABLE//缓存全表
sql
Context...
赞
踩
article
Spark
SQL利器:
cacheTable
/un
cacheTable
_
uncache
table
...
http://www.cnblogs.com/yurunmiao/p/4936583.html
Spark
相对于Hadoo...
赞
踩
article
Spark
SQL
源码分析之 In-Memory Columnar Storage 之
cache
...
Spark
SQL
缓存到内存中的数据的存储策略_
spark
cache
table
源码解析
spark
cache
tab...
赞
踩
article
spark
缓存
表的使用_
spark
cache
table
...
spark
几种
缓存
数据的方法1-
缓存
表2-
缓存
结果查看3-
缓存
参数设置1-
缓存
表1、
cache
table
//
缓存
...
赞
踩
article
Spark
SQL 源码分析之 In-
Memory
Columnar
Storage 之
cache
...
转子:http://blog.csdn.net/oopsoom/article/details/39525483 /**...
赞
踩
article
spark
sql
cache
table
_
spark
sql
cache
添加
name
...
Spark sql CachingThe shark.
cache
table
property no longer ex...
赞
踩
article
大
数据
-
计算
引擎-
Spark
(三)
:
RDD
编程【离线分析;替代
MapReduce
编程,使用
RDD
(弹...
大
数据
-
计算
引擎-
Spark
:
Spark
编程_
spark
离线分析
spark
离线分析 ...
赞
踩
article
SPark学习笔记:04-SPark RDD的
Transformations
和
Action
算子操作_...
Rdd的支持两种类型的算子操作,一类是
Transformations
,一类是
Action
算子。本文以代码结合文字的形式最...
赞
踩
article
spark
aggregate
函数...
aggregate
函数将每个分区里面的元素进行聚合,然后用combine函数将每个分区的结果和初始值(zeroValue...
赞
踩
article
Spark
RDD
(二)
RDD
的相关行为(
Action
)
操作
_
spark
rdd支持的行动(act...
Spark
RDD
(二)
RDD
的相关行为(
Action
)
操作
Action
操作
会真正触发转换逻辑(转换
操作
参见上一篇Sp...
赞
踩
article
Spark
RDD
的
Transformation
操作
_在
spark
中,对
rdd
的transforma...
https://blog.csdn.net/zzh118/article/details/519981631、创建RD...
赞
踩
article
Spark
RDD
操作
Transformation
/
Action
以及示例_
spark
rdd
...
目录前言一、
Transformation
Pair
RDD
二、
Action
操作Pair
RDD
三、WordCount统计...
赞
踩
article
【
分布式计算
框架】
Spark
RDD
五大属性剖析 |
Action
和 Transformation...
RDD
是只读的, 不允许任何形式的修改. 虽说不能因为
RDD
和 HDFS 是只读的, 就认为分布式存储系统必须设计...
赞
踩
article
Spark
(4)
RDD
编程中的
transformation
算子
和
action
算子
使用与区别详解_sp...
前言在上一篇文章中我们介绍了什么是
RDD
,以及
RDD
的属性、特征、依赖关系
和
缓存机制等等:
Spark
(3)架构原理、运行...
赞
踩
相关标签
spark
架构
大数据
服务器
cache
big data
sql
catalyst
spark sql
storage
缓存
Spark
RDD
Scala
学习
scala