spark-steaming的exactly-once
spark实时计算中会存在数据丢失和数据重复计算的场景,
在receiver收到数据且通过driver的调度executor开始计算数据的时候如果driver突然崩溃,则此时executor就会被杀掉,executor中的数据就会丢失,为了防止executor中的数据丢失,此时要通过WAL的方式让所有的数据通过例如hdfs的方式进行安全性容错处理,executor重启之后可以通过WAL进行恢复。这么做也会存在弊端,WAL会极大损伤spark steaming的receiver接收数据的性能,因为WAL也要容错性处理。第二个kafka本身是有副本的,receiver接收的时候也做了容错的副本,相当于容错了2次,造成资源的浪费。
receiver收到数据之后,进行了容错性处理,但是还没有来得及提交offset,此时receiver崩溃了,重启后通过管理kafka中元数据再次重启读取数据,但是此时spark认为读取成功了,kafka认为没有成功(offset没有提交),此时就会再读一次,而之前失败的数据因为spark.task.maxFallures的值,如果大于1,会再次重试计算,如果计算成功了,就会计算2次,造成重复计算.
direct的方式是从kafka消费完数据之后直接封装成partition的数据提供给作业使用,而receiver是将消费到数据按照blockInterval切分成block,保存到blockManager中,在使用时会根据blockId获取该数据。
另外direct的方式rdd的partition与topic的partition是一一对应的,如果某个topic只有一个partition就不好了。而receiver的partition是根据blockInterval切分出来的,blockInterval的默认值是200ms
spark-steaming的exactly-once的更多相关文章
- Spark Steaming消费kafka数据条数变少问题
对于基于Receiver 形式,我们可以通过配置 spark.streaming.receiver.maxRate 参数来限制每个 receiver 每秒最大可以接收的记录的数据:对于 Direct ...
- spark streaming 实战
最近在学习spark的相关知识, 重点在看spark streaming 和spark mllib相关的内容. 关于spark的配置: http://www.powerxing.com/spark-q ...
- Spark Streaming连接TCP Socket
1.Spark Streaming是什么 Spark Streaming是在Spark上建立的可扩展的高吞吐量实时处理流数据的框架,数据可以是来自多种不同的源,例如kafka,Flume,Twitte ...
- 六、spark常见问题总结(转载)
问题导读 1.当前集群的可用资源不能满足应用程序的需求,怎么解决? 2.内存里堆的东西太多了,有什么好办法吗? 1.WARN TaskSchedulerImpl: Initial jo ...
- Spark入门实战
星星之火,可以燎原 Spark简介 Spark是一个开源的计算框架平台,使用该平台,数据分析程序可自动分发到集群中的不同机器中,以解决大规模数据快速计算的问题,同时它还向上提供一个优雅的编程范式,使得 ...
- 使用 Kafka 和 Spark Streaming 构建实时数据处理系统
使用 Kafka 和 Spark Streaming 构建实时数据处理系统 来源:https://www.ibm.com/developerworks,这篇文章转载自微信里文章,正好解决了我项目中的技 ...
- Spark面试相关
Spark Core面试篇01 随着Spark技术在企业中应用越来越广泛,Spark成为大数据开发必须掌握的技能.前期分享了很多关于Spark的学习视频和文章,为了进一步巩固和掌握Spark,在原有s ...
- Spark大数据针对性问题。
1.海量日志数据,提取出某日访问百度次数最多的那个IP. 解决方案:首先是将这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中.注意到IP是32位的,最多有个2^32个IP.同样可以采 ...
- Spark学习之概念了解
Spark简介: Spark是一个快速且通用的集群计算模型: 1.Spark是快速的:快速是指处理几T到几批数据量的时候,他的处理时间是几秒钟或几分钟,相对于hadoop的几分钟到几小时是非常快速的, ...
- Hadoop概念学习系列之Hadoop、Spark学习路线(很值得推荐)(十八)
不多说,直接上干货! 说在前面的话 此笔,对于仅对于Hadoop和Spark初中学者.高手请忽略! 1 Java基础: 视频方面: 推荐<毕向东JAVA基础视频教程>.学 ...
随机推荐
- 当 Go struct 遇上 Mutex
struct 是我们写 Go 必然会用到的关键字, 不过当 struct 遇上一些比较特殊类型的时候, 你注意过你的程序是否正常吗 ? 一段代码 type URL struct { Ip string ...
- 记一次 .NET WPF布草管理系统 挂死分析
一:背景 1. 讲故事 这几天看的 dump 有点多,有点伤神伤脑,晚上做梦都是dump,今天早上头晕晕的到公司就听到背后同事抱怨他负责的WPF程序挂死了,然后测试的小姑娘也跟着抱怨...嗨,也不知道 ...
- sklearn.metrics【指标】
[分类指标] 1.accuracy_score(y_true,y_pre) : 精度 2.auc(x, y, reorder=False) : ROC曲线下的面积;较大的AUC代表了较好的perfor ...
- IE 兼容问题笔记
IE 兼容问题笔记 解决IE11兼容HTML5 设置 document.body的一些用法以及js中的常见问题 flex布局浏览器兼容处理 ie8, ie9 css3 media媒体查询器用法总结 c ...
- Android的so库注入
作者:Fly2015 Android平台的so库的注入是有Linux平台的进程注入移植来的.由于Android系统的底层实现是基于Linux系统的源码修改而来,因此很多Linux下的应用可以移植到An ...
- Python模块化编程
目录 模块化 自定义模块 模块的内置属性 导入模块 安装第三方模块 查看模块的属性和方法 模块化 在Python中,一个.py文件就称之为一个模块(Module),为了避免模块名冲突,Python又引 ...
- Shodan的使用
目录 Shodan Shodan工作原理 Shodan的使用 使用搜索过滤 Kali中安装 Shodan Kali中Shodan的使用 Shodan Shodan 是一个搜索引擎,但它与 Google ...
- Portswigger web security academy:HTTP request smuggling
HTTP request smuggling 目录 HTTP request smuggling HTTP request smuggling, basic CL.TE vulnerability H ...
- PHP 下载apk文件
方式一.public function downApkFile(){ $path = Env::get('root_path')."apk/"; //路径 $file_name = ...
- 使用TK框架中updateByPrimaryKey与updateByPrimaryKeySelective区别
int updateByPrimaryKey(T var1); int updateByPrimaryKeySelective(T var1); updateByPrimaryKeySelective ...