Spark版本定制第4天:Exactly Once的事务处理

本期内容:

1 Exactly once 容错

2 数据输出不重复

  一切不能进行实时流处理的数据都是无效的数据。在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下。

  Spark Streaming运行时与其说是Spark Core上的一个流式处理框架,不如说是Spark Core上的一个最复杂的应用程序。如果可以掌握Spark streaming这个复杂的应用程序,那么其他的再复杂的应用程序都不在话下了。这里选择Spark Streaming作为版本定制的切入点也是大势所趋。

  

  我们都知道事务处理中如何保证能够处理且只能处理一次,数据能够输出且只能输出一次这点至关重要。那么Spark如何保证这一点呢,本节将讨论具体的可能出现问题的场景,并提供解决方案

  一:Exactly once

  

  1事务处理的数据源安全性

  从Executor出发,当Receiver接收来自Kafka数据首先通过BlockManager写入内存(或者磁盘)或者通过WAL来保证数据的安全性,同时Executor会通过Replication完成后产生Ack信号;

   从Kafka出发,当确定收信息并读取下一条数据,Kafka才会进行updateOffsets操作 ;

   从WAL机制出发,WAL机制会让所有的数据通过类似HDFS的方式进行安全性容错处理,从而解决Executor挂掉导致的数据丢失

  2事务处理完的输出安全性

  从上图看出,解决Driver端数据输出安全性主要是两点:

  一是基于checkpoint的容错

  二是基于lineage(血统)的容错

  3 Spark Exactly的事务处理

  鉴于以上两点,我们知道了要想保证数据零丢失,必须有可靠的数据来源和可靠的数据接受这,且整个应用程序必须进行checkpoint,且需通过WAL来保证数据安全。为此次Spark Streaming的为了避免WAL的性能损失和实现Exactly Once而提供了Kafka Direct API,把Kafka作为文件存储系统,这么做兼具有流式处理的优势和文件系统的优势,所有的Executors直接通过kafka Direct Api直接消费数据,直接管理Offset,不会消耗性能也不会重复消费数据。

  二:数据输出不重复

  输出不重复也是生产环境中的重要问题。

  1 产生数据重复输出的原因?

  Task重试

   慢任务推测

   Stage重复

   Job重试

  2 解决方案

  2.1 关于Job,Stage和Task的重试问题,一个任务失败就是job的 失败,我们可以设置spark.task.maxFailures次数为1;

  2.2 设置spark.speculation为关闭慢任务推测状态

  2.3 如果Spark Streamingk是结合kafka的话,job失败后可以设置kafka的auto.offset.reset为largest。

最后总结

  可以通过transform和foreachRDD基于业务逻辑代码进行逻辑控制来实现数据不重复消费和输出不重复!这二个方法类似于Spark Streaming的后门,可以做任意想象的控制操作!

时间: 2024-10-25 21:31:24

Spark版本定制第4天:Exactly Once的事务处理的相关文章

Spark版本定制第3天:通过案例对SparkStreaming透彻理解之三

本期内容: 1 解密Spark Streaming Job架构和运行机制 2 解密Spark Streaming 容错架构和运行机制 一切不能进行实时流处理的数据都是无效的数据.在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下. Spark Streaming运行时与其说是Spark Core上的一个流式处理框架,不如说是Spark Core上的一个最复杂的应

Spark版本定制第2天:通过案例对SparkStreaming透彻理解之二

本期内容: 1 解密Spark Streaming运行机制 2 解密Spark Streaming架构 一切不能进行实时流处理的数据都是无效的数据.在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下. Spark Streaming运行时与其说是Spark Core上的一个流式处理框架,不如说是Spark Core上的一个最复杂的应用程序.如果可以掌握Spark

Spark版本定制第1天:通过案例对SparkStreaming透彻理解之一

本期内容: 1 Spark Streaming另类在线实验 2 瞬间理解Spark Streaming本质 在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下.这里选择Spark Streaming作为版本定制的切入点也是大势所趋. 小技巧:将Batch interval放大,相当于看到了Streaming的慢放版本,可以更清楚它的各个环节,这里以黑名单过滤程序

Spark版本定制第13天:Driver容错

本期内容 1.ReceivedBlockTracker容错安全性 2.DStreamGraph和JobGenerator容错安全性 一切不能进行实时流处理的数据都是无效的数据.在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下. Spark Streaming运行时与其说是Spark Core上的一个流式处理框架,不如说是Spark Core上的一个最复杂的应用

Spark版本定制第5天:案列解析Spark Streaming运行源码

本期内容: 1 在线动态计算分类最热门商品案例回顾与演示 2 基于案例贯通Spark Streaming的运行源码 一切不能进行实时流处理的数据都是无效的数据.在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下. Spark Streaming运行时与其说是Spark Core上的一个流式处理框架,不如说是Spark Core上的一个最复杂的应用程序.如果可以掌

spark版本定制课程-第1课

1.学习本课程可以自己动手改进spark,或者给spark增加功能.增加某些官方没有提供的功能,通过本课程希望早就一些顶级spark专家,根据整个社会的需要对spark进行扩展或者定制.2.通过前三课就可以对spark streaming透彻理解3.为什么要对spark streaming为切入点对spark进行定制? #spark最开始并没有streaming等其他框架,最开始就是很原始的spark core,要做自己源码定制版本,以streaming作为切入点,透过对此框架的研究,就可以掌握

Spark版本定制第7天:JobScheduler内幕实现和深度思考

本期内容: 1 JobScheduler内幕实现 2 深度思考 一切不能进行实时流处理的数据都是无效的数据.在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下. Spark Streaming运行时与其说是Spark Core上的一个流式处理框架,不如说是Spark Core上的一个最复杂的应用程序.如果可以掌握Spark streaming这个复杂的应用程序,

Spark版本定制第6天:Job动态生成和深度思考

本期内容: 1 Job动态生成 2 深度思考 一切不能进行实时流处理的数据都是无效的数据.在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下. Spark Streaming运行时与其说是Spark Core上的一个流式处理框架,不如说是Spark Core上的一个最复杂的应用程序.如果可以掌握Spark streaming这个复杂的应用程序,那么其他的再复杂的

Spark版本定制第9天:Receiver在Driver的精妙实现全生命周期彻底研究和思考

本期内容: 1 Receiver生命周期 2 深度思考 一切不能进行实时流处理的数据都是无效的数据.在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下. Spark Streaming运行时与其说是Spark Core上的一个流式处理框架,不如说是Spark Core上的一个最复杂的应用程序.如果可以掌握Spark streaming这个复杂的应用程序,那么其他