【Spark】SparkStreaming的容错机制】的更多相关文章

一. 容错机制 1.背景 要理解Spark Streaming提供的容错机制,先回忆一下Spark RDD的基础容错语义: 1.RDD,Ressilient Distributed Dataset,是不可变的.确定的.可重新计算的.分布式的数据集.每个RDD都会记住确定好的计算操作的血缘关系, (val lines = sc.textFile(hdfs file); val words = lines.flatMap(); val pairs = words.map(); val wordCou…
文章目录 检查点机制 驱动器程序容错 工作节点容错 接收器容错 处理保证 检查点机制 Metadata checkpointing -- 将定义流计算的信息存入容错的系统如HDFS. Data checkpointing -- 将产生的RDDs存入可靠的存储空间.代码实现如下图 val sparkContext = new SparkContext(new SparkConf()) val ssc = new StreamingText(sparkContext,duration) ssc.ch…
spark是迭代式的内存计算框架,具有很好的高可用性.sparkStreaming作为其模块之一,常被用于进行实时的流式计算.实时的流式处理系统必须是7*24运行的,同时可以从各种各样的系统错误中恢复. 在实际使用中,容错和数据无丢失显得尤为重要.最近看了官网和一些博文,整理了一下对Spark Streaming的容错和数据无丢失机制. checkPoint机制可保证其容错性.spark中的WAL用来改进恢复机制,保证数据的无丢失. checkPoint机制介绍 Spark Streaming需…
RDD的容错机制 RDD实现了基于Lineage的容错机制.RDD的转换关系,构成了compute chain,可以把这个compute chain认为是RDD之间演化的Lineage.在部分计算结果丢失时,只需要根据这个Lineage重算即可. 图1中,假如RDD2所在的计算作业先计算的话,那么计算完成后RDD1的结果就会被缓存起来.缓存起来的结果会被后续的计算使用.图中的示意是说RDD1的Partition2缓存丢失.如果现在计算RDD3所在的作业,那么它所依赖的Partition0.1.3…
引入 一般来说,分布式数据集的容错性有两种方式:数据检查点和记录数据的更新. 面向大规模数据分析,数据检查点操作成本很高,需要通过数据中心的网络连接在机器之间复制庞大的数据集,而网络带宽往往比内存带宽低得多,同时还需要消耗更多的存储资源. 因此,Spark选择记录更新的方式.但是,如果更新粒度太细太多,那么记录更新成本也不低.因此,RDD只支持粗粒度转换,即只记录单个块上执行的单个操作,然后将创建RDD的一系列变换序列(每个RDD都包含了他是如何由其他RDD变换过来的以及如何重建某一块数据的信息…
引入 一般来说,分布式数据集的容错性有两种方式:数据检查点和记录数据的更新. 面向大规模数据分析,数据检查点操作成本非常高,须要通过数据中心的网络连接在机器之间复制庞大的数据集,而网络带宽往往比内存带宽低得多,同一时候还须要消耗很多其它的存储资源. 因此,Spark选择记录更新的方式.可是,假设更新粒度太细太多,那么记录更新成本也不低.因此.RDD仅仅支持粗粒度转换,即仅仅记录单个块上运行的单个操作,然后将创建RDD的一系列变换序列(每一个RDD都包括了他是怎样由其它RDD变换过来的以及怎样重建…
分布式流处理是对无边界数据集进行连续不断的处理.聚合和分析.它跟MapReduce一样是一种通用计算,但我们期望延迟在毫秒或者秒级别.这类系统一般采用有向无环图(DAG). DAG是任务链的图形化表示,我们用它来描述流处理作业的拓扑.如下图,数据从sources流经处理任务链到sinks.单机可以运行DAG,但本篇文章主要聚焦在多台机器上运行DAG的情况. 关注点 当选择不同的流处理系统时,有以下几点需要注意的: 运行时和编程模型:平台框架提供的编程模型决定了许多特色功能,编程模型要足够处理各种…
Spark学习笔记总结 03. Spark cache和checkpoint机制 1. RDD cache缓存 当持久化某个RDD后,每一个节点都将把计算的分片结果保存在内存中,并在对此RDD或衍生出的RDD进行的其他动作中重用(不需要重新计算).这使得后续的动作变得更加迅速.RDD相关的持久化和缓存,是Spark最重要的特征之一. val rdd = sc.textFile("hdfs://172.23.27.19:9000/wrd/wc/srcdata/").flatMap(_.s…
一.Spark RDD容错原理 RDD不同的依赖关系导致Spark对不同的依赖关系有不同的处理方式. 对于宽依赖而言,由于宽依赖实质是指父RDD的一个分区会对应一个子RDD的多个分区,在此情况下出现部分计算结果丢失,单一计算丢失的数据无法达到效果,便采用重新计算该步骤中的所有数据,从而会导致计算数据重复:对于窄依赖而言,由于窄依赖实质是指父RDD的分区最多被一个子RDD使用,在此情况下出现部分计算的错误,由于计算结果的数据只与依赖的父RDD的相关数据有关,所以不需要重新计算所有数据,只重新计算出…
Flink 作为新一代基于事件流的.真正意义上的流批一体的大数据处理引擎,正在逐渐得到广大开发者们的青睐.就从我自身的视角看,最近也是在数据团队把一些原本由 Flume.SparkStreaming.Storm 编写的流式作业往 Flink 迁移,它们之间的优劣对比本篇暂不讨论. 近期会总结一些 Flink 的使用经验和原理的理解,本篇先谈谈 Flink 中的状态和容错机制,这也是 Flink 核心能力之一,它支撑着 Flink Failover,甚至在较新的版本中,Flink 的 Querya…