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基础视频教程>.学 ...
随机推荐
- 关于Maven中<packaging>产生的一些问题
关于Maven中产生的一些问题 一.项目的打包类型 jar 默认的打包格式 war 打包成需要部署的项目 pom 父类型为pom类型 二. pom 简单来说,一个多模块项目通过一个父POM 引用一个或 ...
- 1113 Integer Set Partition
Given a set of N (>) positive integers, you are supposed to partition them into two disjoint sets ...
- SpringAOP_设置注入实现
SpringAOP_设置注入实现 AOP_面向切面编程初步了解 让我们先想象一个场景,你正在编写一个项目,在开发过程中的多个模块都有某段重复的代码,于是你选择将其抽象成一个方法,然后在需要的地方调用这 ...
- php图片合成【png图片】
php 图片合成[png图片] 示例代码 <?php header("Content-type:text/html;charset=utf-8"); error_report ...
- 【多线程】Java线程池七个参数详解
/** * Creates a new {@code ThreadPoolExecutor} with the given initial * parameters. * * @param coreP ...
- 【Java集合】为什么HashMap的长度是2的N次幂?
这个问题应该倒过来思考,HashMap的长度是2的N次幂,有什么优势? 在HashMap的putVal()方法中,为了确定插入元素在table[]数组中的下标位置,使用的与(&)运算来计算 如 ...
- hdu4604 不错的子序列问题
题意: 给你一个栈,里面有n个数,和一个双头队列(空的),每次从栈里拿出一个数据,有三种选择,可以选择丢弃这个数字,也可以放到队头或者队尾,最后问你这个队列你面的最长连续非下降序列的长度. ...
- Java中常见的包
目录 JDK自带的包 第三方包 JDK自带的包 JAVA提供了强大的应用程序接口,既JAVA类库.他包含大量已经设计好的工具类,帮助程序员进行字符串处理.绘图.数学计算和网络应用等方面的工作.下面简单 ...
- 线程操作与进程挂起(Windows核心编程)
0x01 线程挂起与切换 对于挂起进程,挂起线程则比较简单,利用 ResumeThread 与 SuspendThread 即可,当线挂起时线程用户状态下的一切操作都会暂停 #include < ...
- Docker搭建开发环境(Nginx+MySQL+PHP)
注意事项 1.像MySQL配置文件.Nginx配置文件.网站根目录这种比较经常操作的需要先使用 docker cp 将文件从容器里复制到主机目录,docker run的时候直接挂载目录就可以了 2.d ...