Flink| 状态一致性

Flink端到端状态一致性 状态一致性级别 AT-MOST-ONCE (最多一次):当任务故障时,最简单的做法是什么都不干,既不恢复丢失的状态,也不重 播丢失的数据。At-most-once 语义的含义是最多处理一次事件。 AT-LEAST-ONCE (至少一次):在大多数的真实应用场景,我们希望不丢失事件。这种类型的保障称为at- least-once,意思是所有的事件都得到了处理,而一些事件还可能被处理多次。 EXACTLY-ONCE (精确一次):恰好处理一次是最严格的保证,也是最难实现的。恰好处理一次语义不仅仅 意 阅读详情

 

 

 

1. 状态一致性

 有状态的流处理,内部每个算子任务都可以有自己的状态;

对于流处理器内部(没有接入sink)来说,所谓的状态一致性,其实就是我们所说的计算结果要保证准确;

一条数据不应该丢失,也不应该重复计算;

在遇到故障时可以恢复状态,恢复以后的重新计算,结果应该也是完全正常的;

状态一致性分类:

AT_MOST_ONCE(最多一次),当任务故障时最简单做法是什么都不干,既不恢复丢失状态,也不重播丢失数据。At-most-once语义的含义是最多处理一次事件。
AT_LEAST_ONCE(至少一次),在大多数真实应用场景,我们希望不丢失数据。这种类型的保障称为at-least-once,意思是所有的事件都得到了处理,而一些事件还可能被处理多次。
EXACTLY_ONCE(精确一次),恰好处理一次是最严格的的保证,也是最难实现的。恰好处理一次语义不仅仅意味着没有事件丢失,还意味着针对每一个数据,内部状态仅仅更新一次。


一致性检查点(Checkpoints)

Flink使用了一种轻量级快照机制 --- 检查点(Checkpoint)来保证exactly-one语义;

有状态流应用的一致检查点,其实就是:所有任务的状态,在某个时间点的一份拷贝(一份快照)。而这个时间点,应该是所有任务都恰好处理完一个相同的输入数据的时候。

应用状态的一致性检查点,是Flink故障恢复机制的核心。

 

 端到端(end-to-end)状态一致性

目前我们看到的一致性保证都是由流处理器实现的,也就是说都是在Flink流处理内部保证的;而在真实应用中,流处理应用除了流处理器以外还包含了数据源(例如kafka)和输出到持久化系统;

端到端的一致性保证,意味着结果的正确性贯穿了整个流处理应用的始终,每个组件都保证了它自己的一致性;

整个端到端的一致性级别取决于所有组件中一致性最弱的组件;

 端到端exactly-once

内部保证 --- checkpoint

source端 --- 可重设数据的读取位置;可重新读取偏移量

sink端 -- 从故障恢复时,数据不会重复写入外部系统:幂等写入和事务写入;

幂等写入(Idempotent Writes):

   幂等操作即一个操作可以重复执行很多次,但只导致一次结果更改,也就是说,后面再重复执行就不起作用了;

   

 它的原理不是不重复写入而是重复写完之后结果还是一样;它的瑕疵是不能做到完全意义上exactly-once(在故障恢复时,突然把外部系统写入操作跳到之前的某个状态然后继续往里边写,故障之前发生的那一段的状态变化又重演了直到最后发生故障那一刻追上就正常了;假如中间这段又被读取了就可能会有些问题);

 事务写入(Transactional Writes):

 事务Transactional Writes

  • 应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤销;
  • 具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。

实现思想:构建的事务对应着checkpoint,等到checkpoint真正完成的时候,才把所有对应的结果写入sink系统中。

实现方式:预习日志和两阶段提交

预习日志(Write-Ahead-Log,WAL)

把结果数据先当成状态保存,然后在收到checkpoint完成的通知时,一次性写入sink系统;

简单易于实现,由于数据提前在状态后端中做了缓存,所以无论什么sink系统,都能用这种方式一批搞定;

DataStream API提供了一个模板类:GenericWriteAheadSink,来实现这种事务性sink;

瑕疵:A. sink系统没说它支持事务,有可能出现一部分写进去了一部分没写进去(如果算失败,再写一次就写了两次了);

           B. checkpoint做完了sink才去真正写入(但其实得等sink都写完checkpoint才能生效,所以WAL这个机制jobmanager确定它写完还不算真正写完,还得有一个外部系统已经确认完成的checkpoint)

两阶段提交(Two--Phase--Commit,2PC)-- 真正能够实现exactly-once

对于每个checkpoint,sink任务会启动一个事务,并将接下来所有接收的数据添加到事务里;

然后将这些数据写入外部sink系统,但不提交他们 -- 这时只是预提交;

当它收到checkpoint完成时的通知,它才正式提交事务,实现结果的真正写入;

这种方式真正实现了exactly-once,它需要一个提供事务支持的外部sink系统,Flink提供了TwoPhaseCommitSinkFunction接口。

2PC对外部sink的要求

外部sink系统必须事务支持,或者sink任务必须能够模拟外部系统上的事务;

在checkpoint的间隔期间里,必须能够开启一个事务,并接受数据写入;

在收到checkpoint完成的通知之前,事务必须是“等待提交”的状态,在故障恢复的情况下,这可能需要一些时间。如果这个时候sink系统关闭事务(例如超时了),那么未提交的数据就会丢失;

sink任务必须能够在进程失败后恢复事务;

提交事务必须是幂等操作;

不同Source和sink的一致性保证:

 

 Flink+kafka端到端状态一致性的保证

Flink和kafka天生就是一对,用kafka做为source,用kafka做完sink  <===>  实现端到端的一致性

    内部 -- 利用checkpoint机制,把状态存盘,发生故障的时候可以恢复,保证内部的状态一致性;

    source -- kafka consumer作为source,可以将偏移量保存下来,如果后续任务出现了故障,恢复的时候可以由连接器重置偏移量,重新消费数据,保证一致性;

    sink -- kafka producer作为sink,采用两阶段提交sink,需要实现一个TwoPhaseCommitSinkFunction

 

 

 

 

 

 默认是AT_LEAST_ONCE

Exactly-once两阶段提交

 

 JobManager协调各个TaskManager进行checkpoint存储;

checkpoint保存在StateBackend中,默认StateBackend是内存级的,也可以改为文件级的进行持久化保存;

 

 当checkpoint启动时,JobManager会将检查点分界线(barrier)注入数据流;

 barrier会在算子间传递下去;

 

 

 每个算子会对当前的状态做个快照,保存到状态后端;

checkpoint机制可以保证内部的状态一致性;

 

 每个内部的transform任务遇到barrier时,都会把状态存到checkpoint里;

sink任务首先把数据写入外部kafka,这些数据都属于预提交的事务;遇到barrier时,把状态保存到状态后端,并开启新的预提交事务(以barrier为界之前的数据属于上一个事务,之后的数据属于下一个新的事务);

 当所有算子任务的快照完成,也就是这次的checkpoint完成时,JobManager会向所有任务发通知,确认这次checkpoint完成;

sink任务收到确认通知,正式提交之前的事务,kafka中未确认数据改完“已确认”;

Exactly-once两阶段提交步骤:

  第一条数据来在之后,开启一个kafka的事务(transaction),正常写入kafka分区日志但标记为未提交,这就是“预提交”;

 JobManagere触发checkpoint操作,barrier从source开始向下传递,遇到barrier的算子将状态存入状态后端,并通知JobManagere;

 sink连接器接收到barrier,保存当前状态,存入checkpoint,通知JobManager并开启下一阶段的事务,用于提交下个检查点的数据;

 JobManager收到所有任务的通知,发出确认信息,表示checkpoint完成;

 sink任务收到JobManager的确认信息,正式提交这段时间的数据;

  外部kafka关闭事务,提交的数据可以正常消费了。

 

在代码中真正实现flink和kafak的端到端exactly-once语义:

 

A. 这里需要配置下,因为它默认的是AT_LEAST_ONCE;

B. 对于外部kafka读取的消费者的隔离级别,默认是read_on_commited,如果默认是可以读未提交的数据,就相当于整个一致性还没得到保证(未提交的数据没有最终确认那边就可以读了,相当于那边已经消费数据了,事务就是假的了)  所以需要修改kafka的隔离级别;

C. timeout超时问题,flink和kafka 默认sink是超时1h,而kafak集群中配置的tranctraction事务的默认超时时间是15min,flink-kafak这边的连接器的时间长,这边还在等着做操作 ,kafak那边等checkpoint等的时间太长直接关闭了。所以两边的超时时间最起码前边要比后边的小。

 

分类: Flink

好文要顶 关注我 收藏该文  

kris12
关注 - 50
粉丝 - 203

+加关注

0

0

« 上一篇: Flink| 容错机制
» 下一篇: Flink| 实时需要分析

Flink-状态一致性 | 状态一致性分类 | 端到端状态一致性 | 幂等写入 | 事务写入 | WAL | 2PC 状态一致性 当在分布式系统中引入状态时,自然也引入了一致性问题。一致性实际上是"正确性级别"的另一种说法,也就是说在成功处理故障并恢复之后得到的结果,与没有发生任何故障时得到的结果相比,前者到底有多正确?举例来说,假设要对最近一小时登录的用户计数。在系统经历故障之后,计数结果是多少?如果有偏差,是有漏掉的计数还是重复计数? 什么是状态一致性 有状态的流处理,内部每个算子任务都可以有自己的状态 对于流处理器内部来说,所谓的状态一致性,其实就是我们所说的计算结果要保证准确。 一条数据不应该丢失,也不应该重复计 阅读详情

相关推荐

Flink 状态一致性

Flink 状态一致性

congge_study的博客 4668

Flink的状态一致性

1 状态的一致性 1.1 一致性级别   流处理操作一般分为at-most-once,at-least-once和exactly-once这3个级别。   at-most-once:至多一次,发生故障恢复后数据可能丢失   at-least-once:至少一次,发生故障恢复后数据可能多算,绝对不会少算   exactly-once:精确一次,发生故障恢复后数据不会丢失也不会多算 1.2 端到端的状态一致性 1.2.1 Spark Streaming的exactly-once   对于 Spark Strea

fighting 2024

【Flink】介绍Flink中状态一致性的保证

1.概述 转载:介绍Flink中状态一致性的保证 再次温习了这篇文章有了不一样的收货。侵权可删,这里是方便自己找到。 1. 一致性1.1 介绍状态一致性 有状态的流处理,内部每个算子任务都可以有自己的状态 对于流处理器内部来说,所谓的状态一致性,其实就是我们所说的要保证计算结果准确,一条数据有也不丢失,也不会重复计算数据 在程序遇到故障时可以恢复任务状态,恢复以后的任务重新计算数据,计算完的结果也应该是完全正确的 1.2 性级别有哪些在流处理中,一致性可以分为 3 .

九师兄 1017

Flink 之状态一致性浅述

1. 概念 有状态的流处理,内部每个算子任务都可以有自己的状态 对于流处理器内部来说,所谓的状态一致性,其实就是我们所说的计算结果要保证准确。 一条数据不应该丢失,也不应该重复计算 在遇到故障时可以恢复状态,恢复以后的重新计算,结果应该也是完全正确的。 2. 分类 AT-MOST-ONCE(最多一次) 当任务故障时,最简单的做法是什么都不干,既不恢复丢失的状态,也不重播丢失的数据。At-most-once AT-LEAST-ONCE(至少一次) 在大多数的真实应用场景,我们希望不丢失事件。这种类

Doctor_96的博客 538

Unity - gamma space下还原linear space效果

还有头发之后的 (头发没有处理完整,因为使用 ASE 连连看练出来的,使用 surface shader,虽然可以生成一下 vert, frag 的方式在修改,但是我懒得去修改了,这样就是 PBR 的 BRDF 里面的部分曲线是不一样的,所以可以看到头发有一些差异)其实上面的代码判断 是否有分量 > 1.0f 的方式来判断是否 HDR 是不太合理的,因为不同的贴图格式的编码方式不同。还有比较隐蔽的一些颜色相关的常量值 (比如PBR中的 绝缘体的 F0 常量值,等等)

Jave.Lin 的学习笔记 2830

蓝牙Mesh协议一基本概念

前言 蓝牙SIG联盟在2017年发布了蓝牙Mesh1.0的协议规格,基于低功耗广播包来实现的多对多的通信技术,Mesh协议建立在BLE的物理层和链路层上,所以也可以和BLE的蓝牙进行通信 本章主要介绍蓝牙Mesh的基本概念和协议中的层级结构,也是参考网上的资料,如有异议,欢迎留言指正 基本概念 广播和洪泛 蓝牙Mesh技术是基于BLE的广播报文来实现的,是一种洪泛的消息传输机制,Mesh网络的节点间通过3个广播信道进行通信。当蓝牙Mesh网络中的节点收到消息后会转发这条消息,大大增加了网络的覆盖范围;但

9744

数据库事务和一致性状态详解

分析事务的ACID属性和保证一致性状态的方法

weixin_44917334的博客 2039

Rockchip平台Android相机HAL3开发实战:从配置到调试全流程解析

本文深入解析了Rockchip平台Android相机HAL3的开发全流程。从理解AAL与PSL核心架构、解析关键配置文件(如camera3_profiles.xml和Tuning文件),到搭建编译环境、进行增量部署,并提供了系统日志分析、V4L2调试等高级问题排查技巧,为开发者提供了一套从配置到调试的实战指南。

docker7nomad的博客 844

flink中使用GenericWriteAheadSink的优缺点

GenericWriteAheadSink的优缺点

lixia0417mul2的博客 767

无耳科技 Solon v3.0.8 发布,Java 企业级应用开发框架

Solon 是新一代,Java 企业级应用开发框架。是杭州无耳科技有限公司的“根级”开源项目(最近“杭州六小龙”很火啊,我们也是杭州的哦)。从零开始构建(No Spring、No Java-EE、No Servlet),有灵活的接口规范与开放生态。采用对商用友好的 Apache 2.0 开源协议。

向往自由的少年!(我是一个少年!!!) 1700

从零到一:用STM32 FOC算法驯服无刷电机的艺术

本文详细介绍了如何使用STM32和FOC算法实现无刷电机的高性能控制。从硬件搭建、参数识别到闭环调节,一步步解析FOC算法的核心原理与调优技巧,帮助开发者掌握电机控制的关键技术,实现从零到一的精准驯服。

kkk56的博客 920

GenericWriteAheadSink每次checkpoint后事务是否必须成功

GenericWriteAheadSink检查点成功后对应事务是否必须成功

lixia0417mul2的博客 358

5分钟搞定PaddleOCR PP-OCRv5环境搭建:从安装到第一个识别Demo

本文提供了一份详细的PaddleOCR PP-OCRv5环境搭建与快速入门指南。通过清晰的步骤,指导读者在5分钟内完成从创建Python虚拟环境、安装PaddlePaddle框架和PaddleOCR库,到编写并运行第一个OCR识别Demo的全过程,帮助开发者快速体验最新的PP-OCRv5模型的文字识别能力。

sprite的博客 1271

Flink状态一致性保证

一个Flink作业由一系列算子构成,每个算子可以有多个并行实例,这些实例被称为 subTask,每个subTask运行在不同的进程或物理机上,以实现作业的并行处理。在这个复杂的分布式场景中,任何一个节点故障都有可能导致 Flink 作业宕机,Flink 状态本地化虽然可以实现极致的访问速度,但是节点故障后的状态恢复问题也是Flink必须要解决的。

程序员小潘 1710

医疗AI知识库更新慢?提示工程架构师用Agentic AI自动更新的策略

我们的目标是用Agentic AI替代传统更新流程中的“重复劳动”,让医疗知识库(以知识图谱为例)能自动跟踪最新医学进展,把“更新周期从数月缩短到数天”。从PubMed/指南数据库自动抓取新文献;用提示工程从文本中提取结构化医学知识;自动校验新知识与旧知识的冲突;将通过校验的知识写入知识图谱。拆问题:先讲医疗知识库更新慢的3大根源;给方案:用Agentic AI设计4个“小助手”解决问题;讲原理:每个小助手的工作逻辑+提示工程技巧;做实战。

AI 原生应用开发的博客 1062

Onnxruntime之YOLOP部署过程记录

魔改YoloP部署过程记录

如果想成为中心,那么就到中心去吧。 1929

Flink状态一致性

一、状态一致性分类 (1)最多一次(at most once) 当故障发生,什么都不干,既不恢复丢失状态,也不重播丢失的数据。 (2)至少一次(at least once) 所有事件都处理了,有的事件可能被处理多次 (3)精确一次(exactly once) 所有事件仅仅被处理一次 二、端到端的状态一致性 (1)内部保证(checkpoint) (2)source端(可重设数据的...

勇心在馨 874

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Flink 状态一致性:端到端状态一致性的保证

Flink 状态一致性:端到端状态一致性的保证

凌桓丶的博客 1451

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【Flink系列六】Flink里面的状态一致性

目前我们看到的一致性保证都是由流处理实现的,也就是说都是在Flink流处理内部保证的;有状态的流处理,内部每个算子任务都可以有自己的状态,对于流处理器内部来说,所谓的状态一致性,其实就是我们所说的计算结果要保证准确。当一个任务在运行过程中出现故障时,可以根据 Checkpoint 的信息恢复到故障之前的某一状态,然后从该状态恢复任务的运行。(比如上篇文章说的,处理到数据6,7的时候任务挂了,从checkpoint=5恢复,会重新消费6、7的数据,端到端的状态一致性保证,并不意味着不重复处理数据)

qq_33592535的博客 1535

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Flink学习之容错机制和状态一致性

☀️在前天的学习中,我们学习了flink中的几个重要概念:时间、水位线和状态,今天我们继续学习flink中的两个重要机制:容错机制和状态一致性保证。对往期内容感兴趣的同学可以参考👇: 链接: Flink学习中之time、watermark、state. 链接: Flink实战之电商用户行为实时分析. 链接: Flink学习之flink sql. 链接: Flink学习之Table API(python版本). 链接: Flink学习之DataStream API(python版本). 🌰flink的容错

柳小葱的博客 3307

Flink+kafka端到端状态一致性保证

Flink+kafka端到端状态一致性保证 什么是状态一致性 有状态的流处理,内部每个算子任务都有自己的状态 对于流处理器内部来说,所谓的状态一致性,其实就是我们所说的计算结果要保证准确 一条数据不用改丢失,也不应该重复计算 在遇到故障时可以恢复状态,恢复以后的重新计算,结果也是完全正确的 Flink内部状态一致性分类 AT-LEAST-ONCE(至少一次) 大多数真是应用场景,我们希望不...

shufangreal的博客 3709

大话Flink之十-Flink 的状态一致性

Flink 的状态一致性 1 状态一致性 1.1 什么是状态一致性 • 有状态的流处理,内部每个算子任务都可以有自己的状态。 • 对于流处理器内部来说,所谓的状态一致性,其实就是我们所说的计算结果要保证准确。 • 一条数据不应该丢失,也不应该重复计算。 • 在遇到故障时可以恢复状态,恢复以后的重新计算,结果应该也是完全正确的。 1.2状态一致性分类 • AT-MOST-ONCE(最多一次) ➢ 当任务故障时,最简单的做法是什么都不干,既不恢复丢失的状态,也不重播丢失的数据。At-most-o.

youhaitao_do的博客 601

Flink中的状态一致性

1 状态一致性的分级 at most once :故障发生之后,计数结果可能丢失 at least once :表示计数结果可能大于正确值,但绝不会小于正确值。也就是说,计数程序在发生故障后可能多算,但是绝不会少算。 exactly once :这指的是系统保证在发生故障后得到的计数结果与正确值一致。 2 端到端状态一致性 端到端的一致性保证,意味着结果的正确性贯穿了整个流处理应用的始终;每一个组件都保证了它自己的一致性,整个端到端的一致性级别取决于所有组件中一致性最弱的组件。 具体可以划分如.

weixin_41655296的博客 1067

Flink - 状态一致性

Flink - 状态一致性 什么是状态一致性 有状态的流处理,内部每个算子任务都可以有自己的状态 对于流处理器内部来说,所谓的状态一致性,其实就是我们所说的计算结果要保证准备。 一条数据不应该丢失,也不应该重复计算 在遇到故障时可以恢复状态,恢复以后的重新计算,结果应该也是完全正确的。 状态一致性分类 AT-MOST-ONCE(最多一次) 当任务故障时,最简单的做法是什么都不干,即不恢复丢失的状态,也不重播丢失的数据。At-most-once语义的含义是最多处理一次事件。 AT-LEAST-O

qq_29342297的博客 354
上一篇: KafkaConsumer实现精确一次消费
下一篇: KafkaConsumer使用介绍、参数配置
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值