barriers / 阅读 / 详情

怎么把oracle数据移植到mysql?

2023-05-19 22:59:13
TAG: CLE cl MySQL
共4条回复
南yi

OGG全称为Oracle GoldenGate,是由Oracle官方提供的用于解决异构数据环境中数据复制的一个商业工具。相比于其它迁移工具OGG的优势在于可以直接解析源端Oracle的redo log,因此能够实现在不需要对原表结构做太多调整的前提下完成数据增量部分的迁移。本篇文章将重点介绍如何使用OGG实现Oracle到MySQL数据的平滑迁移,以及讲述个人在迁移过程中所碰到问题的解决方案。

(一)OGG逻辑架构

参照上图简单给大家介绍下OGG逻辑架构,让大家对OGG数据同步过程有个简单了解,后面章节会详细演示相关进程的配置方式,在OGG使用过程中主要涉及以下进程及文件:

  • Manager进程:需要源端跟目标端同时运行,主要作用是监控管理其它进程,报告错误,分配及清理数据存储空间,发布阈值报告等

  • Extract进程:运行在数据库源端,主要用于捕获数据的变化,负责全量、增量数据的抽取

  • Trails文件:临时存放在磁盘上的数据文件

  • Data Pump进程:运行在数据库源端,属于Extract进程的一个辅助进程,如果不配置Data Pump,Extract进程会将抽取的数据直接发送到目标端的Trail文件,如果配置了Data Pump,Extract进程会将数据抽取到本地Trail文件,然后通过Data Pump进程发送到目标端,配置Data Pump进程的主要好处是即使源端到目标端发生网络中断,Extract进程依然不会终止

  • Collector进程:接收源端传输过来的数据变化,并写入本地Trail文件中

  • Replicat进程:读取Trail文件中记录的数据变化,创建对应的DML语句并在目标端回放

  • 二、迁移方案

    (一)环境信息

    OGG版本    OGG 12.2.0.2.2 For Oracle    OGG 12.2.0.2.2 For MySQL    

    数据库版本    Oracle 11.2.0.4    MySQL 5.7.21    

    OGG_HOME    /home/oracle/ogg    /opt/ogg    

    (二)表结构迁移

    表结构迁移属于难度不高但内容比较繁琐的一步,我们在迁移表结构时使用了一个叫sqlines的开源工具,对于sqlines工具在MySQL端创建失败及不符合预期的表结构再进行特殊处理,以此来提高表结构转换的效率。

    注意:OGG在Oracle迁移MySQL的场景下不支持DDL语句同步,因此表结构迁移完成后到数据库切换前尽量不要再修改表结构。

    (三)数据迁移

    数据同步的操作均采用OGG工具进行,考虑数据全量和增量的衔接,OGG需要先将增量同步的抽取进程启动,抓取数据库的redo log,待全量抽取结束后开启增量数据回放,应用全量和增量这段期间产生的日志数据,OGG可基于参数配置进行重复数据处理,所以使用OGG时优先将增量进行配置并启用。此外,为了避免本章节篇幅过长,OGG参数将不再解释,有需要的朋友可以查看官方提供的Reference文档查询任何你不理解的参数。

    1.源端OGG配置

    (1)Oracle数据库配置

    针对Oracle数据库,OGG需要数据库开启归档模式及增加辅助补充日志、强制记录日志等来保障OGG可抓取到完整的日志信息

    查看当前环境是否满足要求,输出结果如下图所示:

    (2)Oracle数据库OGG用户创建

    OGG需要有一个用户有权限对数据库的相关对象做操作,以下为涉及的权限,该示例将创建一个用户名和密码均为ogg的Oracle数据库用户并授予以下权限

    (3)源端OGG 管理进程(MGR)配置

    (4)源端OGG 表级补全日志(trandata)配置

    表级补全日志需要在最小补全日志打开的情况下才起作用,之前只在数据库级开启了最小补全日志(alter database add supplemental log data;),redolog记录的信息还不够全面,必须再使用add trandata开启表级的补全日志以获得必要的信息。

    (5)源端OGG 抽取进程(extract)配置

    Extract进程运行在数据库源端,负责从源端数据表或日志中捕获数据。Extract进程利用其内在的checkpoint机制,周期性地检查并记录其读写的位置,通常是写入到本地的trail文件。这种机制是为了保证如果Extract进程终止或者操作系统宕机,我们重启Extract进程后,GoldenGate能够恢复到以前的状态,从上一个断点处继续往下运行,而不会有任何数据损失。

    (6)源端OGG 传输进程(pump)配置

    pump进程运行在数据库源端,其作用非常简单。如果源端的Extract抽取进程使用了本地trail文件,那么pump进程就会把trail文件以数据块的形式通过TCP/IP协议发送到目标端,Pump进程本质上是Extract进程的一种特殊形式,如果不使用trail文件,那么Extract进程在抽取完数据后,直接投递到目标端。

    补充:pump进程启动时需要与目标端的mgr进程进行连接,所以需要优先将目标端的mgr提前配置好,否则会报错连接被拒绝,无法传输抽取的日志文件到目标端对应目录下

    (7)源端OGG 异构mapping文件(defgen)生成

    该文件记录了源库需要复制的表的表结构定义信息,在源库生成该文件后需要拷贝到目标库的dirdef目录,当目标库的replica进程将传输过来的数据apply到目标库时需要读写该文件,同构的数据库不需要进行该操作。

    2.目标端OGG配置

    (1)目标端MySQL数据库配置

  • 确认MySQL端表结构已经存在

  • MySQL数据库OGG用户创建

  • mysql> create user "ogg"@"%" identified by "ogg";

  • mysql> grant all on *.* to "ogg"@"%";

  • #### 提前创建好ogg存放checkpoint表的数据库

  • mysql> create database ogg;

  • (2)目标端OGG 管理进程(MGR)配置

    目标端的MGR进程和源端配置一样,可直接将源端配置方式在目标端重复执行一次即可,该部分不在赘述

    (3)目标端OGG 检查点日志表(checkpoint)配置

    checkpoint表用来保障一个事务执行完成后,在MySQL数据库从有一张表记录当前的日志回放点,与MySQL复制记录binlog的GTID或position点类似。

    #### 切换至ogg软件目录并执行ggsci进入命令行终端

  • shell> cd $OGG_HOME

  • shell> ggsci

  • ggsci> edit param ./GLOBALS

  • checkpointtable ogg.ggs_checkpoint

  • ggsci> dblogin sourcedb ogg@17X.1X.84.121:3306 userid ogg

  • ggsci> add checkpointtable ogg.ggs_checkpoint

  • (4)目标端OGG 回放线程(replicat)配置

    Replicat进程运行在目标端,是数据投递的最后一站,负责读取目标端Trail文件中的内容,并将解析其解析为DML语句,然后应用到目标数据库中。

  • #### 切换至ogg软件目录并执行ggsci进入命令行终端

  • shell> cd $OGG_HOME

  • shell> ggsci

  • #### 添加一个回放线程并与源端pump进程传输过来的trail文件关联,并使用checkpoint表确保数据不丢失

  • ggsci> add replicat r_cms,exttrail /opt/ogg/dirdat/ms,checkpointtable ogg.ggs_checkpoint

  • #### 增加/编辑回放进程配置文件

  • ggsci> edit params r_cms

  • replicat r_cms

  • targetdb cms@17X.1X.84.121:3306,userid ogg,password ogg

  • sourcedefs /opt/ogg/dirdef/cms.def

  • discardfile /opt/ogg/dirrpt/r_cms.dsc,append,megabytes 1024

  • HANDLECOLLISIONS

  • MAP cms.*,target cms.*;

  • 注意:replicat进程只需配置完成,无需启动,待全量抽取完成后再启动。

    至此源端环境配置完成 

    待全量数据抽取完毕后启动目标端回放进程即可完成数据准实时同步。

    3.全量同步配置

    全量数据同步为一次性操作,当OGG软件部署完成及增量抽取进程配置并启动后,可配置1个特殊的extract进程从表中抽取数据,将抽取的数据保存到目标端生成文件,目标端同时启动一个单次运行的replicat回放进程将数据解析并回放至目标数据库中。

    (1)源端OGG 全量抽取进程(extract)配置

  • #### 切换至ogg软件目录并执行ggsci进入命令行终端

  • shell> cd $OGG_HOME

  • shell> ggsci

  • #### 增加/编辑全量抽取进程配置文件

  • #### 其中RMTFILE指定抽取的数据直接传送到远端对应目录下

  • #### 注意:RMTFILE参数指定的文件只支持2位字符,如果超过replicat则无法识别

  • ggsci> edit params ei_cms

  • SOURCEISTABLE

  • SETENV (NLS_LANG = "AMERICAN_AMERICA.AL32UTF8")

  • SETENV (ORACLE_SID=cms)

  • SETENV (ORACLE_HOME=/data/oracle/11.2/db_1)

  • USERID ogg@appdb,PASSWORD ogg

  • RMTHOST 17X.1X.84.121,MGRPORT 7809

  • RMTFILE /opt/ogg/dirdat/ms,maxfiles 100,megabytes 1024,purge

  • TABLE cms.*;

  • #### 启动并查看抽取进程正常

  • shell> nohup ./extract paramfile ./dirprm/ei_cms.prm reportfile ./dirrpt/ei_cms.rpt &

  • ## 查看日志是否正常进行全量抽取

  • shell> tail -f ./dirrpt/ei_cms.rpt

  • (2)目标端OGG 全量回放进程(replicat)配置

  • #### 切换至ogg软件目录并执行ggsci进入命令行终端

  • shell> cd $OGG_HOME

  • shell> ggsci

  • ggsci> edit params ri_cms

  • SPECIALRUN

  • END RUNTIME

  • TARGETDB cms@17X.1X.84.121:3306,USERID ogg,PASSWORD ogg

  • EXTFILE /opt/ogg/dirdat/ms

  • DISCARDFILE ./dirrpt/ri_cms.dsc,purge

  • MAP cms.*,TARGET cms.*;

  • #### 启动并查看回放进程正常

  • shell> nohup ./replicat paramfile ./dirprm/ri_cms.prm reportfile ./dirrpt/ri_cms.rpt &

  • #### 查看日志是否正常进行全量回放

  • shell> tail -f ./dirrpt/ri_cms.rpt

  • 三、数据校验

    数据校验是数据迁移过程中必不可少的环节,本章节提供给几个数据校验的思路共大家参数,校验方式可以由以下几个角度去实现:

    1.通过OGG日志查看全量、增量过程中discards记录是否为0来判断是否丢失数据;

    2.通过对源端、目标端的表执行count判断数据量是否一致;

    3.编写类似于pt-table-checksum校验原理的程序,实现行级别一致性校验,这种方式优缺点特别明显,优点是能够完全准确对数据内容进行校验,缺点是需要遍历每一行数据,校验成本较高;

    4.相对折中的数据校验方式是通过业务角度,提前编写好数十个返回结果较快的SQL,从业务角度抽样校验。

    四、迁移问题处理

    本章节将讲述迁移过程中碰到的一些问题及相应的解决方式。

    (一)MySQL限制

    在Oracle到MySQL的表结构迁移过程中主要碰到以下两个限制:

    1. Oracle端的表结构因为最初设计不严谨,存在大量的列使用varchar(4000)数据类型,导致迁移到MySQL后超出行限制,表结构无法创建。由于MySQL本身数据结构的限制,一个16K的数据页最少要存储两行数据,因此单行数据不能超过65,535 bytes,因此针对这种情况有两种解决方式:

  • 根据实际存储数据的长度,对超长的varchar列进行收缩;

  • 对于无法收缩的列转换数据类型为text,但这在使用过程中可能导致一些性能问题;

  • 2. 与第一点类似,在Innodb存储引擎中,索引前缀长度限制是767 bytes,若使用DYNAMIC、COMPRESSED行格式且开启innodblargeprefix的场景下,这个限制是3072 bytes,即使用utf8mb4字符集时,最多只能对varchar(768)的列创建索引;

    3. 使用ogg全量初始化同步时,若存在外键约束,批量导入时由于各表的插入顺序不唯一,可能子表先插入数据而主表还未插入,导致报错子表依赖的记录不存在,因此建议数据迁移阶段禁用主外键约束,待迁移结束后再打开。

  • mysql>set global foreign_key_checks=off;

  • (二)全量与增量衔接

    HANDLECOLLISIONS参数是实现OGG全量数据与增量数据衔接的关键,其实现原理是在全量抽取前先开启增量抽取进程,抓去全量应用期间产生的redo log,当全量应用完成后,开启增量回放进程,应用全量期间的增量数据。使用该参数后增量回放DML语句时主要有以下场景及处理逻辑:

  • 目标端不存在delete语句的记录,忽略该问题并不记录到discardfile

  • 目标端丢失update记录

    - 更新的是主键值,update转换成insert

    - 更新的键值是非主键,忽略该问题并不记录到discardfile

  • 目标端重复insert已存在的主键值,这将被replicat进程转换为UPDATE现有主键值的行

  • (三)OGG版本选择

    在OGG版本选择上我们也根据用户的场景多次更换了OGG版本,最初因为客户的Oracle 数据库版本为11.2.0.4,因此我们在选择OGG版本时优先选择使用了11版本,但是使用过程中发现,每次数据抽取生成的trail文件达到2G左右时,OGG报错连接中断,查看RMTFILE参数详细说明了解到trail文件默认限制为2G,后来我们替换OGG版本为12.3,使用MAXFILES参数控制生成多个指定大小的trail文件,回放时Replicat进程也能自动轮转读取Trail文件,最终解决该问题。但是如果不幸Oracle环境使用了Linux 5版本的系统,那么你的OGG需要再降一个小版本,最高只能使用OGG 12.2。

    (四)无主键表处理

    在迁移过程中还碰到一个比较难搞的问题就是当前Oracle端存在大量表没有主键。在MySQL中的表没有主键这几乎是不被允许的,因为很容易导致性能问题和主从延迟。同时在OGG迁移过程中表没有主键也会产生一些隐患,比如对于没有主键的表,OGG默认是将这个一行数据中所有的列拼凑起来作为唯一键,但实际还是可能存在重复数据导致数据同步异常,Oracle官方对此也提供了一个解决方案,通过对无主键表添加GUID列来作为行唯一标示,具体操作方式可以搜索MOS文档ID 1271578.1进行查看。

    (五)OGG安全规则

  • 报错信息

  • 2019-03-08 06:15:22  ERROR   OGG-01201  Error reported by MGR : Access denied.

  • 错误信息含义源端报错表示为该抽取进程需要和目标端的mgr进程通讯,但是被拒绝,具体操作为:源端的extract进程需要与目标端mgr进行沟通,远程将目标的replicat进行启动,由于安全性现在而被拒绝连接。

  • 报错原因

  • 在Oracle OGG 11版本后,增加了新特性安全性要求,如果需要远程启动目标端的replicat进程,需要在mgr节点增加访问控制参数允许远程调用

  • 解决办法

  • 在源端和目标端的mgr节点上分别增加访问控制规则并重启

  • ## 表示该mgr节点允许(ALLOW)10.186网段(IPADDR)的所有类型程序(PROG *)进行连接访问ACCESSRULE, PROG *, IPADDR 10.186.*.*, ALLOW

  • (六)数据抽取方式

  • 报错信息

  • 2019-03-15 14:49:04  ERROR   OGG-01192  Trying to use RMTTASK on data types which may be written as LOB chunks (Table: "UNIONPAYCMS.CMS_OT_CONTENT_RTF").

  • 报错原因

  • 根据官方文档说明,当前直接通过Oracle数据库抽取数据写到MySQL这种initial-load方式,不支持LOBs数据类型,而表 UNIONPAYCMS.CMSOTCONTENT_RTF 则包含了CLOB字段,无法进行传输,并且该方式不支持超过4k的字段数据类型

  • 解决方法

  • 将抽取进程中的RMTTASK改为RMTFILE参数 官方建议将数据先抽取成文件,再基于文件数据解析进行初始化导入

gitcloud

建议还是使用MySQL官方提供的一套工具,以前分开的几个软件工具,目前,已经集成在一个MySQL Workbench (GUI Tools)的一个工具集中。该工具集既有基于GPL使用协议的社区版本,也有基于Commercial License商业许可使用权的标准版本,整个工具中包含了数据库建模与设计、MySQL程序开发集成环境、数据库管理工具,还有就是Migration Toolkits工具,用于将其它数据库源,包含Oralce、SQL Server、DB2、Sybase、PostgreSQL、Access、Excel等等迁移到MySQL的一个工具,按照这个工具要求的几个步骤,就可以比较轻松的把相关数据库源的数据库结构和数据导入到MySQL数据库系统中,如果涉及到数据库端的一些程序,如存储过程、触发器等,可能还需要手动做一些迁移工作;针对每一种数据库的迁移,MySQL也都给出了一份技术指导的白皮书,有兴趣的朋友可以联系我。

里论外几

建议用PL/SQL,导出成SQL脚本,

然后将SQL脚本执行,导入到mysql。

如果实在不愿意用sql脚本的话,建议使用SQL SERVER的自带的数据迁移工具,设置好目的数据源、源数据源,以及对应关系(能设置字段、修改类型),然后执行导入。

真可

用ora2sqld 把分给我吧 好使

相关推荐

外企说的checkpoint是什么

外企说的checkpoint是内部事件的意思。一般来说,就是一个数据库事件。
2023-01-11 20:05:001

大气层checkpoint可以卸载吗

<strong>大气层checkpoint可以卸载。</strong>大气层checkpoint卸载方法如下:在下载的时候有备份游戏的需求,因此大气层checkpoint卸载记得要找到最开始下载的备份游戏然后删除。知道checkpoint对大气层最新版本不兼容,原作者也很久没有更新,在github上问题里面有玩家已经对checkpoint进行修改可以适配最新系统下载后,注意不要直接进入相册直接进入相册为applet mode会打不开软件。进入非applet mode方法:对任意主界面可以玩的游戏按R 进入即可。
2023-01-11 20:05:061

oracle checkpoint什么意思?有什么作用?

ORACLE CHECKPOINT的作用首先CHECKPOINT是什么,起什么作用,在什么时候起作用,谢谢。 以下解答仅供参考,不代表电脑爱好者网站观点checkpoint是一个数据库事件,它将已修改的数据从高速缓存刷新到磁盘,并更新控制文件和数据文件。我们知道了checkpoint会刷新脏数据,但什么时候会发生checkpoint呢?以下几种情况会触发checkpoint。1.当发生日志组切换的时候2.当符合LOG_CHECKPOINT_TIMEOUT,LOG_CHECKPOINT_INTERVAL,fast_start_io_target,fast_start_mttr_target参数设置的时候3.当运行ALTER SYSTEM SWITCH LOGFILE的时候4.当运行ALTER SYSTEM CHECKPOINT的时候5.当运行alter tablespace XXX begin backup,end backup的时候6.当运行alter tablespace ,datafile offline的时候;
2023-01-11 20:05:241

关于 Flink checkpoint,都在这里(二)

目前业界主流的实时计算框架包括 Flink、Spark Streaming、Storm。相比于 Batch,Stream 的容错则需要考虑更多。Batch 数据通常基于稳定性较高的分布式存储进行数据的读写(如 HDFS、S3 等),当数据计算出现异常时可以通过重新计算的方式保证最终结果的一致性,Spark 就是基于这样的思路设计的,它通过 lineage 机制来重新计算。并且 Batch 计算往往不需要过多的考虑数据的时效性,而且不需要做到 7×24 小时的运行。但相对于 Stream 而言则会更加复杂。 对于 Stream 而言需要面对不同的流式数据源,可以是 File Stream、队列(如 Kafka),甚至可能是某个服务发来的消息。数据源的多样性就注定了 Stream 的容错需要重新进行考虑。并且 Stream 数据的容错需要在短时间内进行恢复,否则将可能会导致大量的数据积压甚至丢失,因为 Stream 数据链路不会因为下游处理任务的异常而停止数据的产出。 让我们将问题描述的更具体一些,方便更清楚的了解 Stream 的容错思想。对于分布式计算而言,目前主流的思路都是采用 Master-Slave 架构。Master 主要用于进行 Slave 节点的管理(比如检测 Slave 是否存活,状态管理等),Slave 主要是担当数据计算的职责。因此,从容错角度而言分为: Master 容错相对而言较为简单,因为不需要直接参与数据计算。主要分为有状态的 Master 和无状态的 Master 两类。 像 Storm 这类无状态的实时计算框架,Master(即 Storm 的 Nimbus 节点)的异常往往不影响 Slave(即 Storm worker 节点)的数据计算,只需要重新启动一个 Master 即可,这个过程中不需要进行 Master 状态的恢复,也不会影响实时数据的处理。甚至 Slave 节点在无感知的情况下就完成了 Master 的恢复。但是这种方式会牺牲一定的功能,实时计算框架本身无法支持状态流的处理。 像 Flink 、 Spark Streaming 这类包含状态的实时计算框架,需要恢复 Master 节点的同时还需要对其状态进行恢复,Master 状态信息包含一些必要的配置、以及对 Slave 节点状态管理的信息(如“某个 Slave 节点的状态快照所在的 HDFS 路径”)。Spark Streaming、Flink 的做法都是基于 checkpoint 机制对 Master 节点的状态进行备份,异常发生时需要基于上一次的状态备份进行恢复。 Flink 还提供了 HA 机制,即同时运行至少 2 个 JobManager 节点,但是只有其中一个真正的处理管理事务(称为主节点——Leader),其他的仅仅保持状态信息的同步(称为从节点——Standby)。一旦 Leader 发生异常,其中一个 Standby 将会代替异常节点继续进行任务的管理。 更多关于 Flink HA 可以参考官方文档 。这种机制是牺牲更多的资源来换取任务的稳定性,主从切换的成本相比于从状态备份中恢复速度更快。 Stream 数据处理整体而言可以分为 3 部分: 根据不同的保障级别,Stream 数据容错级别又分为 3 种语义: 我们之所以将数据接收和写入单独拿出来,是因为在面对不同的数据源时,实时框架的容错机制与最高语义保障级别是不同的。如 Flink 而言,它的 exactly-once 语义总的来说是针对于数据处理阶段而言,即只有框架内数据的处理可以保障 exactly-once,而数据的接收、写入是否是 exactly-once 语义取决于数据源本身与 Source、Sink 算子的实现逻辑。通常来说,我们将能够保障数据接收、数据处理、数据接入整体数据一致性称为 端到端(end-to-end) 的数据一致性。 端到端的数据一致性保障相对而言是很复杂的,因为数据源的种类众多,这些一般都不是分布式实时框架中的一部分,数据的发送与接收逻辑不受实时框架的控制。 对于 Storm 而言,框架内仅提供了相关的接口用于用户自己实现一致性语义,并没有直接提供各种存储的一致性 Spouts,数据写入也是如此。数据处理过程提供 at-least-once 语义保障(exactly-once 语义由 Storm Trident 提供了保障,本篇暂不做讨论)。Storm 通过 ACK 的机制保证 at-least-once 语义。简单来说,当 Storm 接收到一条数据后将会给这条数据唯一的 id,数据被下游 Bolts 处理但是处理后的 id 不会发生改变,当且仅当该 id 的数据经过的 Bolts 全部 ACK 后才认定该数据被 彻底处理(fully processed) ,否则 Spout 将再次发送该数据直到数据被彻底处理。 Spark Streaming 的数据接收通过预写入日志的机制保障了 at-least-once 语义。简单来说,就是将接收到的数据以日志的形式写入到稳定的存储中(存储位置基于 checkpoint 配置获取),这样一来就与数据源解耦,可以基于预写入日志实现数据重发的能力,从而保障 at-least-once 语义。数据处理过程中基于 RDD 的容错机制进行恢复,提供了精确一次的语义。数据写入需要用户自己实现,Spark Streaming 提供了两种思路:幂等写入和事务性写入。 Flink 全局基于 checkpoint 进行容错,通过向流数据中插入特殊的事件——checkpoint barrier 来触发各个算子制作状态快照,快照会写入到持久化的存储中。Flink Source、Sink 的语义保障需要依赖数据源以及自身的实现逻辑。但是 Flink 提供了多种状态接口,如 ListState、MapState,用于进行算子状态的记录,状态容错可以保障 exactly-once 语义。这也是与 Spark Streaming 的不同之处。 到这里我们大致了解了各个框架的容错机制,我们不禁想回味一下:分布式实时计算框架的容错机制的本质是什么?容错到底在保障什么? 从本质上讲,容错在保障数据可以被正确的处理,即使在发生异常的情况下。实时流处理的正确性又体现在 处理过程的完整性 与 时序的正确性 。即一条数据要被所有的逻辑完整的处理一次(根据语义的不同也可能是多次),且多条数据之间的处理的时序不发生改变。 举个例子,如下图所示的数据流 DAG 图中,流数据序列 [1, 2, 3, …, n] 被输入到 A 中,然后最终流向 D。完整性即每一个事件都被完整的 DAG 路径处理,即 A -> B -> D 或 A -> C -> D ,时序性即事件 1 永远先于事件 2 被处理,即使在发生了异常后恢复的情况下也是如此。 从整体来看,实时分布式计算框架的容错机制核心思想是 确认 与 重试 ,但是不同的框架重试过程中回滚的数据量不同。 Storm 通过 ACK 机制判断数据是否完整处理,否则将重发数据,重新进行计算。这种单条数据粒度的 ACK 与重试机制即可以保障时序性,也可以保障处理过程的完整性。但是这样细的粒度牺牲了一定的性能。Storm 并没有将数据流进行冗余存储来保障容错,从这个角度而言它的容错是轻量级的。 Spark Streaming 通过微批次的方式将数据进行截断,以批次为单位进行容错。这种方式一旦发生了异常,可以从上一个批次中恢复继续执行。这种机制从一定程度上提升了性能,但是对时效性有损。因为微批次的思路对数据流进行了截断,时间语义上的单位时间也只能根据批次的大小来界定。Spark Streaming 提供了数据流的冗余(预写入日志)可以真正做到与数据源解耦,对于所有的数据源均可以保障容错的语义,但是这类的容错是重量级的。 Flink 的思路也是对数据进行截断,从而可以分段治之。相比于 Spark Streaming 而言这种截断并没有改变数据流的连续性,时间语义上的单位时间仍然是以事件粒度来界定。并且 Flink 不会对数据流进行冗余(虽然 unaligned-checkpoint 会产生一部分的数据冗余,但是与 Spark Streaming 这种全部数据冗余的思路是不同的),只关注计算中的状态容错。这种思路较为轻量级,并且能够保障 exactly-once 语义。但是这种思路无法应对所有的数据源场景,需要强依赖数据源的实现与 Source、Sink 算子的逻辑。 总体而言,实时流的容错核心是基于 数据截断 和 重试机制 。Storm 的数据截断粒度是单条数据级别的,通过 ACK 的机制实现的重试机制,此截断粒度不会影响数据的时效性。Spark Streaming 的截断粒度是微批次的,截断会影响数据的时效性,然后通过数据冗余的方式保障了重试机制,这种冗余数据的方式可以面对任何数据源时都能够保证数据一致性。Flink 是基于 checkpoint barrier 将数据流截断,barrier 会随着数据流而流动,避免了流量截断带来的时效性影响,并且 Flink 容错只关注状态,借助状态的回滚来保证数据一致性。 从容错实现来看,三种框架的侧重点有所不同。Storm 作为无状态计算框架,采用的是非常简单有效的机制保障容错。Spark Streaming 更注重数据的可恢复性,希望通过备份原始数据能够在任何情况下、面对任何数据源都能够保证数据一致性。Flink 相对而言更加轻量,更注重数据的时效性,不希望容错机制带来太多的时效性损失(例如 unaligned-checkpoint)。 感谢你读到这里,希望你现在对 Flink 容错机制和其他的实时计算框架的容错机制有了一个基本的了解,对其容错思路和本质有了不同的想法。 下一篇 我们将讨论 Flink checkpoint 的数据结构,探索它究竟是如何存储的?都存储了哪些内容?基于这些备份数据如何在异常中恢复? 可可 @ 欢迎邮件联系我
2023-01-11 20:05:301

造成数据库checkpoint时间较长的可能原因有哪些

1、系统补丁没打完全,导致关于系统数据库在执行io操作时,写数据的时间较长,且占用率较高,导致数据库checkpoint时间较长。2、informix的onconfig中的某些参数(如:buffer)配置不规范或者不符合现网需求,导致系统性能下降,不能发挥数据库的性能。3、数据库系统未对某些大数据量表进行优化,导致执行checkpoint的时间较长。
2023-01-11 20:05:361

大气层checkpoint闪退

您是想问大气层checkpoint闪退是什么原因吗?大气层checkpoint闪退是由于switch服务器的用户越来越多,造成的网络繁忙,因此在登陆高峰时,由于网络繁忙,服务器有时会出现一些不可预知问题,建议切换网络等待一下重新尝试。
2023-01-11 20:05:411

qq飞车checkpoint配置异常

qq飞车checkpoint配置异常是网络问题。首先打开电脑检查网络。然后打开《qq飞车》游戏进行测试网络连接是否异常。最后点击checkpoint,重新加载,重新进入,配置即可恢复正常,可以正常玩。
2023-01-11 20:05:461

什么是文件的逻辑结构和物理结构

系统的逻辑结构是对整个系统从思想的分类,把系统分成若干个逻辑单元,分别实现自己的功能。一般在系统开发时,逻辑结构往往都由架构师完成。系统的逻辑结构对系统的开发起到重要性的决定。数据的逻辑结构是对数据之间关系的描述,有时就把逻辑结构简称为数据结构。逻辑结构形式地定义为(K,R)(或(D,S)),其中,K是数据元素的有限集,R是K上的关系的有限集。
2023-01-11 20:05:552

checkpoint怎么安装到switch

根目录下建一个switch的文件夹,插件放里面就行了。
2023-01-11 20:06:161

新手求教 checkpoint 怎么触发该事件的

可以不用双击鼠标的消息响应.可以记录两次单击的时间差.当进行某次单击的时候,如果过了500个毫秒没第二次单击,就认为是单击操作,执行单击操作的内容.当进行某次单击操作的时候,如果这次单击操作与上次的时间差在500毫秒内.就认为是双击操作.实现起来比较麻烦.方法二,当双击的时候,执行双击之前,取消上次的单击操作.
2023-01-11 20:06:221

我从别人那里考了点资料,但是他的电脑有checkpoint 加密,拷贝过来的文档都打不开,怎么办?

难啊,加密文件不好破解
2023-01-11 20:06:293

如何启动 CheckPoint SNMP 而不重启 Check Point Modules

[步骤一]1,登录命令行界面(Nokia IPSO 4.2 BUILD096),执行:cpconfigReistlin.com[admin]# cpconfigThis program will let you re-configureyour Check Point products configuration.2,选择:2,配置 “SNMP Extension”Configuration Options:----------------------(1) Licenses and contracts(2) SNMP Extension(3) Group Permissions(4) PKCS#11 Token(5) Random Pool(6) Secure Internal Communication(7) Enable cluster membership for this gateway(8) Enable Check Point SecureXL(9) Automatic start of Check Point Products(10) ExitEnter your choice (1-10) : 23,选择:y,启用 “SNMP Extension daemon”Configuring SNMP Extension...=============================The SNMP daemon enables Check Point products module to export its status to external network management tools.Would you like to activate Check Point products SNMP daemon ? (y/n) [n] ? y4,选择:10,退出配置界面Configuration Options:----------------------(1) Licenses and contracts(2) SNMP Extension(3) Group Permissions(4) PKCS#11 Token(5) Random Pool(6) Secure Internal Communication(7) Enable cluster membership for this gateway(8) Enable Check Point SecureXL(9) Automatic start of Check Point Products(10) ExitEnter your choice (1-10) : 105,系统提示需要 “restart ALL Check Point modules”,选择:nThank You...You have changed Check Point products Configuration.You need to restart ALL Check Point modules (performing cpstop & cpstart)in order to activate the changes you have made.Would you like to do it now? (y/n) [y] ? nOK,到此为止,已经配置了以后防火墙如果重启,会自动启动 “SNMP Extension daemon” 服务。但是,目前仍然没有将 SNMP Extension 进程启起来(因为我们中断了 “restart ALL Check Point modules“ 的操作!),继续。[步骤二]1,登录命令行界面(Nokia IPSO 4.2 BUILD096),执行如下命令:/opt/CPsuite-R65/svn/bin/cpsnmpd -p 2602,check 一下防火墙的 snmp进 程:Reistlin.com[admin]# ps -aux | grep snmproot 407 0.0 0.1 4224 744 ?? Ss 19Apr10 13:17.56 /bin/snmpd -froot 18751 0.0 0.0 2928 296 ?? Ss 11May10 12:42.04 /opt/CPsuite-R65/svn/bin/cpsnmpd -p 260OK,Nokia 的 SNMP,CheckPoint 的 SNMP Extension 进程均正常,可以使用 snmpwalk 或者 solarwinds 测试了。
2023-01-11 20:06:401

last checkpoint是什么意思

last checkpoint最后一个检查点
2023-01-11 20:06:452

win8.1错误c0000034

方法/步骤1·、开机按F9进入高级选项(如图所示),点击疑难解答。2、点击高级选项3、点击高级选项里的命令提示符4、在命令提示符中输入:notepad.exe(可以打开记事本)5、打开记事本后依次点击:文件>>打开>>修改(文件类型改为“所有文件”)6、找到C:WindowsWinSxSpending.xml文件(如果您隐藏文件后缀则显示为pending)。然后先进行备份,以免操作失误造成损失!!切记!!!7、打开pending.xml文件之后为方便查看点击记事本>>格式>>自动换行。8、用ctrl+F查找checkpoint。选中小编图中标示的代码,删除。然后保存。重启电脑搞定!
2023-01-11 20:07:242

qtp创建文本检查点,怎么没有这个text checkpoint 都是灰显的,不可用呢?

录制的时候 才不会显灰........
2023-01-11 20:07:362

Tensor Flow如何保存数据结果?

训练完一个模型后,为了以后重复使用,通常我们需要对模型的结果进行保存。如果用Tensorflow去实现神经网络,所要保存的就是神经网络中的各项权重值。建议可以使用Saver类保存和加载模型的结果。1、使用tf.train.Saver.save()方法保存模型sess: 用于保存变量操作的会话。save_path: String类型,用于指定训练结果的保存路径。global_step: 如果提供的话,这个数字会添加到save_path后面,用于构建checkpoint文件。这个参数有助于我们区分不同训练阶段的结果。2、使用tf.train.Saver.restore方法价值模型sess: 用于加载变量操作的会话。save_path: 同保存模型是用到的的save_path参数。下面通过一个代码演示这两个函数的使用方法假设保存变量的时候是checkpoint_filepath="models/train.ckpt"saver.save(session,checkpoint_filepath)则从文件读变量取值继续训练是saver.restore(session,checkpoint_filepath)
2023-01-11 20:08:311

无法定位程序输入点sqlite3 wal checkpoint于动态链接库SQLite.dll上

原因1.病毒木马导致的,比较典型的病毒是绑架类木马,它是一种新型破坏性极强的木马与传统病毒不同,它是通过绑架系统文件dll实现开机启动,该木马主要表现,可以百度搜索时“顽固木马专杀工具”扫描查杀。2. 升级某个软件导致的。重装该软件即可解决该问题。3.自己误操作造成的。
2023-01-11 20:08:476

Pytorch Lightning系列 如何使用ModelCheckpoint

在训练机器学习模型时,经常需要缓存模型。 ModelCheckpoint 是Pytorch Lightning中的一个Callback,它就是用于模型缓存的。它会监视某个指标,每次指标达到最好的时候,它就缓存当前模型。 Pytorch Lightning文档 介绍了ModelCheckpoint的详细信息。 我们来看几个有趣的使用示例。 示例1 注意,我们把epoch和val_loss信息也加入了模型名称。 示例2 这个使用例子非常像示例1,唯一的差别在于指标的名称是由我们自己指定的,而不是由Pytorch Lightning自动生成的 ( auto_insert_metric_name=False )。通过这样的方式,我们可以使用类似 val/mrr 的指标名。从而统一tensorboard和pytorch lightning对指标的不同描述方式。 Pytorch Lightning把ModelCheckpoint当作最后一个CallBack,也就是它总是在最后执行。这一点在我看来很别扭。如果你在训练过程中想获得best_model_score或者best_model_path,它对应的是上一次模型缓存的结果,而并不是最新的模型缓存结果
2023-01-11 20:09:291

生物学中的checkpoints是什么意思啊

检验点(checkpoints)是存在于细胞周期中的一种调控装置,包括G1/S期检验点,S期检验点和G2/M期检验点,通过检验各个细胞周期中的物质累积是否符合进入下一周期的条件,控制细胞周期的正常运转。
2023-01-11 20:09:341

圣安地列斯checkpoint save什么意思

checkpoint save是检查点保存,圣安地列斯PC版并无自动存档功能,你所说的可能是手机版圣安地列斯,具有自动存档功能,也就是checkpoint save,在游戏任务进行的过程中会按照游戏设计的检查点进行自动保存,如果任务失败则无需重头开启任务而会自动开启距离失败时间最近的检查点并读取
2023-01-11 20:09:401

checkpoint是什么考试

checkpoint英 [ˈtʃekpɔɪnt] 美 [ˈtʃɛkˌpɔɪnt] n.检查站,车站的行李房网络检验点; 校验点; 限制点复数: checkpoints双语例句 Soldiers opened fire on a car which failed to stop at an army checkpoint. 士兵向那辆拒绝在军事检查站停车检查的汽车开了火
2023-01-11 20:09:491

数据库因为什么情况会出现checkpoint not complete

当我们进行redo 切换的时候,会触发checkpoint 事件。 触发该事件有5个条件。 下文有说明。 Checkpoint做的事情之一是触发DBWn把buffer cache中的Dirty cache磁盘。另外就是把最近的系统的SCN更新到datafile header和control file(每一个事务都有一个SCN),做第一件事的目的是为了减少由于系统突然宕机而需要的恢复时间,做第二件事实为了保证数据库的一致性。Checkpoint will flush dirty block to datafile, 从而触发DBWn书写dirty buffer,等到redo log覆盖的dirty block全部被写入datafile后才能使用redo log(循环使用),如果DBWn写入过慢,LGWR必须等待DBWn完成,则这时会出现“checkpoint not completed!”。 所以当出现checkpointnot competed的时候,还会伴随cannot allocate new log的错误。如果遇到这个问题,可以增加日志组和增大日志文件,当然也可以修改 checkpoint参数使得检查点变频繁一些。在出现这个错误的时候,数据库是短暂hang住的,等待checkpoint的完成。 在hang住的时候,没有日志产生。
2023-01-11 20:09:551

关于checkpoint

玩游戏时,当游戏自动保存时,会出现“checkpoint”字样。这个小东西可不简单。有些人在制定目标的过程中,会不自觉的把目标定的很模糊,以至于理所当然的造成拖延。而我认为迫切需要的,是一种“测试”。有了明确的测试标准,就更容易付出明确的行动,并且充满干劲儿。做了许多事儿,而没有验证,没有评估,人们就收不到“反馈”,没有“反馈”,就很容易丢失掉做这些事的意义,从而半途而废。
2023-01-11 20:10:181

大气层switch更换内存卡

将Switch关机,打开Switch的后盖支架,取出老的SD内存卡。
2023-01-11 20:10:243

数据库的物理结构设计指的是什么

一般开发一个数据库,要进行设计.主要步骤有需求分析,概念结构设计,逻辑结构设计,物理结构设计,数据库实施,数据库运行与维护.物理结构设计就是其中的一步.数据库的物理结构设计是对已经确定的逻辑数据结构,利用DBMS(数据库管理系统)所提供的方法、技术,以较优的数据存储结构、数据存取路径、合理的数据存放位置以及存储分配,设计出一个高效的、可以实现的物理数据结构.通俗一点说,就是对已经设计好了的逻辑结构,设计出相应的且比较优化的物理结构,设计出的物理结构可以数据存储,该结构中要有实现数据存储、数据存取路径、数据存放位置、存储分配等几个模块.
2023-01-11 20:11:232

什么是数据库物理结构和存储方式的描述

Log File物理结构从 ib_logfile0和 ib_logfile1这两个文件的物理结构可以看出,在Log Header部分还是有些许差异的, ib_logfile0会多一些额外的信息,主要是checkpoint信息。并且每个Block的单位是512字节,对应到磁盘每个扇区也是512字节,因此redo log写磁盘是原子写,保证能够写成功,而不像index page一样需要double write来保证安全写入。我们依次从上到下来看每个Block的结构Log File Header BlockLog Goup ID,可能会配置多个redo组,每个组对应一个id,当前都是0,占用4字节Start LSN,这个redo log文件开始日志的lsn,占用8字节Log File Number,总是为0,占用4字节Created By,备份程序所占用的字节数,占用32字节另外在ib_logfile0中会有两个checkpoint block,分别是 LOG_CHECKPOINT_1/ LOG_CHECKPOINT_2,两个记录InnoDB Checkpoint信息的字段,分别从文件头的第二个和第四个block开始记录,并且只在每组log的第一个文件中存在,组内其他文件虽然没有checkpoint相关信息,但是也会预留相应的空间出来。这里为什么有两个checkpoint的呢?原因是设计为交替写入,避免因为介质失败而导致无法找到可用的checkpoint的情况。Log blocks请点击输入图片描述log block结构分为日志头段、日志记录、日志尾部Block Header,占用12字节Data部分Block tailer,占用4字节Block Header这个部分是每个Block的头部,主要记录的块的信息Block Number,表示这是第几个block,占用4字节,是通过LSN计算得来的,占用4字节Block data len,表示该block中有多少字节已经被使用了,占用2字节First Rec offet,表示该block中作为第一个新的mtr开始的偏移量,占用2字节Checkpoint number,表示该log block最后被写入时的检查点的值,占用4字节
2023-01-11 20:12:142

instagram登录时显示checkpoint require

题主是否想询问“instagram登录时显示checkpointrequire如何修复吗”?1、卸载并重新安装Instagram。2、从Wi-Fi切换到移动数据。3、等待错误消息消失。4、以上是instagram登录时显示checkpointrequire修复的方法。
2023-01-11 20:12:361

文件的逻辑结构和物理结构各有哪些基本形式

逻辑结构:指一个文件在用户面前所呈现的形式。物理结构:指文件在文件存储器上的存储形式。  逻辑结构有两种形式:①记录式文件(有结构式文件)。②字符流式文件(无结构式文件),也称流式文件。  物理结构:所谓文件系统的物理结构是指数据存放在硬盘上时硬盘磁粉的排列形状。物理结构的形式:①连续文件结构②串联文件结构③索引文件结构④散列文件结构。
2023-01-11 20:12:423

checkpoint怎么安装到switch

根目录下建一个switch的文件夹,插件放里面就行了。
2023-01-11 20:13:071

聊聊flink的CheckpointedFunction

本文主要研究一下flink的CheckpointedFunction flink-streaming-java_2.11-1.7.0-sources.jar!/org/apache/flink/streaming/api/checkpoint/CheckpointedFunction.java flink-runtime_2.11-1.7.0-sources.jar!/org/apache/flink/runtime/state/FunctionSnapshotContext.java flink-runtime_2.11-1.7.0-sources.jar!/org/apache/flink/runtime/state/ManagedSnapshotContext.java flink-runtime_2.11-1.7.0-sources.jar!/org/apache/flink/runtime/state/FunctionInitializationContext.java flink-runtime_2.11-1.7.0-sources.jar!/org/apache/flink/runtime/state/ManagedInitializationContext.java
2023-01-11 20:13:121

每次启动电脑都提示:无法定位程序输入点sqlite3_wal_checkpoint 于动态链接库上SQLite3.dll上,求解决谢

重新注册所有dll点左下角“开始”“运行”输入“CMD”,确定,在弹出的命令窗口中输入for%1in(%windir%system32*.dll)doregsvr32.exe/s%1然后确定。
2023-01-11 20:13:181

SQL...什么是数据库的检查点?

CKPT is responsible for:• Signaling DBWn at checkpoints• Updating data file headers withcheckpoint information• Updating control files withcheckpoint informationBackground Processes and Recovery: Checkpoint (CKPT)To understand instance recovery, you need to understand the functioning of certain backgroundprocesses.Every three seconds (or more frequently), the CKPT process stores data in the control file todocument which modified data blocks DBWn has written from the SGA to disk. This is called a“checkpoint.” The purpose of a checkpoint is to identify that place in the online redo log filewhere instance recovery is to begin (which is called the “checkpoint position”).In the event of a log switch, the CKPT process also writes this checkpoint information to theheaders of data files.Checkpoints exist for the following reasons:• To ensure that modified data blocks in memory are written to the disk regularly so that datais not lost in case of a system or database failure• To reduce the time required for instance recovery. Only the online redo log file entriesfollowing the last checkpoint need to be processed for recovery.• To ensure that all committed data has been written to data files during shutdownThe checkpoint information written by the CKPT process includes checkpoint position, systemchange number, location in the online redo log file to begin recovery, information about logs,and so on.ORACLE CHECKPOINT的作用checkpoint是一个数据库事件,它将已修改的数据从高速缓存刷新到磁盘,并更新控制文件和数据文件。我们知道了checkpoint会刷新脏数据,但什么时候会发生checkpoint呢?以下几种情况会触发checkpoint。1.当发生日志组切换的时候2.当符合LOG_CHECKPOINT_TIMEOUT,LOG_CHECKPOINT_INTERVAL,fast_start_io_target,fast_start_mttr_target参数设置的时候3.当运行ALTER SYSTEM SWITCH LOGFILE的时候4.当运行ALTER SYSTEM CHECKPOINT的时候5.当运行alter tablespace XXX begin backup,end backup的时候6.当运行alter tablespace ,datafile offline的时候; 你再好好看看文档吧
2023-01-11 20:13:231

数据库的物理存储结构和数据的物理结构是一回事吗?

以WINDOWS为例通俗一点来说,物理存储结构就是指存在哪个盘符下哪个目录下的文件,每个文件里的内容如何组成,这取决于逻辑存储结构。
2023-01-11 20:13:292

RocketMQ迁移

1、把旧目录下logs、store移动到新硬盘目录下,比如:/disk1/rocketmq-data 2、修改数据存储路径 打开conf/broker.conf,增加以下内容: #存储路径 storePathRootDir=/disk1/rocketmq-data/store #commitLog存储路径 storePathCommitLog=/disk1/rocketmq-data/store/commitlog #消费队列存储路径 storePathConsumeQueue=/disk1/rocketmq-data/store/consumequeue #消息索引存储路径 storePathIndex=/disk1/rocketmq-data/store/index #checkpoint 文件存储路径 storeCheckpoint=/disk1/rocketmq-data/store/checkpoint #abort 文件存储路径 abortFile=/disk1/rocketmq-data/store/abort 3、修改日志存储路径 进入到:conf,执行以下命令: sudo sed -i "s#${user.home}#/disk1/rocketmq-data#g" *.xml 4、重启RocketMQ
2023-01-11 20:13:541

日志文件是不是物理结构中的的对象

Log File物理结构从 ib_logfile0和 ib_logfile1这两个文件的物理结构可以看出,在Log Header部分还是有些许差异的, ib_logfile0会多一些额外的信息,主要是checkpoint信息。并且每个Block的单位是512字节,对应到磁盘每个扇区也是512字节,因此redo log写磁盘是原子写,保证能够写成功,而不像index page一样需要double write来保证安全写入。我们依次从上到下来看每个Block的结构Log File Header BlockLog Goup ID,可能会配置多个redo组,每个组对应一个id,当前都是0,占用4字节Start LSN,这个redo log文件开始日志的lsn,占用8字节Log File Number,总是为0,占用4字节Created By,备份程序所占用的字节数,占用32字节另外在ib_logfile0中会有两个checkpoint block,分别是 LOG_CHECKPOINT_1/ LOG_CHECKPOINT_2,两个记录InnoDB Checkpoint信息的字段,分别从文件头的第二个和第四个block开始记录,并且只在每组log的第一个文件中存在,组内其他文件虽然没有checkpoint相关信息,但是也会预留相应的空间出来。这里为什么有两个checkpoint的呢?原因是设计为交替写入,避免因为介质失败而导致无法找到可用的checkpoint的情况。Log blocks请点击输入图片描述log block结构分为日志头段、日志记录、日志尾部Block Header,占用12字节Data部分Block tailer,占用4字节Block Header这个部分是每个Block的头部,主要记录的块的信息Block Number,表示这是第几个block,占用4字节,是通过LSN计算得来的,占用4字节Block data len,表示该block中有多少字节已经被使用了,占用2字节First Rec offet,表示该block中作为第一个新的mtr开始的偏移量,占用2字节Checkpoint number,表示该log block最后被写入时的检查点的值,占用4字节
2023-01-11 20:13:592

揭秘Spark_checkpoint

checkpoint是什么 (1)、Spark 在生产环境下经常会面临transformation的RDD非常多(例如一个Job中包含1万个RDD)或者具体transformation的RDD本身计算特别复杂或者耗时(例如计算时长超过1个小时),这个时候就要考虑对计算结果数据持久化保存; (2)、Spark是擅长多步骤迭代的,同时擅长基于Job的复用,这个时候如果能够对曾经计算的过程产生的数据进行复用,就可以极大的提升效率; (3)、如果采用persist把数据放在内存中,虽然是快速的,但是也是最不可靠的;如果把数据放在磁盘上,也不是完全可靠的!例如磁盘会损坏,系统管理员可能清空磁盘。 (4)、Checkpoint的产生就是为了相对而言更加可靠的持久化数据,在Checkpoint的时候可以指定把数据放在本地,并且是多副本的方式,但是在生产环境下是放在HDFS上,这就天然的借助了HDFS高容错、高可靠的特征来完成了最大化的可靠的持久化数据的方式; 假如进行一个1万个算子操作,在9000个算子的时候persist,数据还是有可能丢失的,但是如果checkpoint,数据丢失的概率几乎为0。 checkpoint原理机制 1.当RDD使用cache机制从内存中读取数据,如果数据没有读到,会使用checkpoint机制读取数据。此时如果没有checkpoint机制,那么就需要找到父RDD重新计算数据了,因此checkpoint是个很重要的容错机制。checkpoint就是对于一个RDD chain(链)如果后面需要反复使用某些中间结果RDD,可能因为一些故障导致该中间数据丢失,那么就可以针对该RDD启动checkpoint机制,使用checkpoint首先需要调用sparkContext的setCheckpoint方法,设置一个容错文件系统目录,比如hdfs,然后对RDD调用checkpoint方法。之后在RDD所处的job运行结束后,会启动一个单独的job来将checkpoint过的数据写入之前设置的文件系统持久化,进行高可用。所以后面的计算在使用该RDD时,如果数据丢失了,但是还是可以从它的checkpoint中读取数据,不需要重新计算。 2.persist或者cache与checkpoint的区别在于,前者持久化只是将数据保存在BlockManager中但是其lineage是不变的,但是后者checkpoint执行完后,rdd已经没有依赖RDD,只有一个checkpointRDD,checkpoint之后,RDD的lineage就改变了。persist或者cache持久化的数据丢失的可能性更大,因为可能磁盘或内存被清理,但是checkpoint的数据通常保存到hdfs上,放在了高容错文件系统。 问题:哪些 RDD 需要 cache? 会被重复使用的(但不能太大)。 问题:用户怎么设定哪些 RDD 要 cache? 因为用户只与 driver program 打交道,因此只能用 rdd.cache() 去 cache 用户能看到的 RDD。所谓能看到指的是调用 transformation() 后生成的 RDD,而某些在 transformation() 中 Spark 自己生成的 RDD 是不能被用户直接 cache 的,比如 reduceByKey() 中会生成的 ShuffledRDD、MapPartitionsRDD 是不能被用户直接 cache 的。 运算时间很长或运算量太大才能得到的 RDD,computing chain 过长或依赖其他 RDD 很多的 RDD。 实际上,将 ShuffleMapTask 的输出结果存放到本地磁盘也算是 checkpoint,只不过这个 checkpoint 的主要目的是去 partition 输出数据。 问题:什么时候 checkpoint? cache 机制是每计算出一个要 cache 的 partition 就直接将其 cache 到内存了。但 checkpoint 没有使用这种第一次计算得到就存储的方法,而是等到 job 结束后另外启动专门的 job 去完成 checkpoint 。 也就是说需要 checkpoint 的 RDD 会被计算两次。因此,在使用 rdd.checkpoint() 的时候,建议加上 rdd.cache(), 这样第二次运行的 job 就不用再去计算该 rdd 了,直接读取 cache 写磁盘。其实 Spark 提供了 rdd.persist(StorageLevel.DISK_ONLY) 这样的方法,相当于 cache 到磁盘上,这样可以做到 rdd 第一次被计算得到时就存储到磁盘上,但这个 persist 和 checkpoint 有很多不同,之后会讨论。 RDD 需要经过 [ Initialized --> marked for checkpointing --> checkpointing in progress --> checkpointed ] 这几个阶段才能被 checkpoint。 Initialized: 首先 driver program 需要使用 rdd.checkpoint() 去设定哪些 rdd 需要 checkpoint,设定后,该 rdd 就接受 RDDCheckpointData 管理。用户还要设定 checkpoint 的存储路径,一般在 HDFS 上。 marked for checkpointing: 初始化后,RDDCheckpointData 会将 rdd 标记为 MarkedForCheckpoint。 checkpointing in progress: 每个 job 运行结束后会调用 finalRdd.doCheckpoint(),finalRdd 会顺着 computing chain 回溯扫描,碰到要 checkpoint 的 RDD 就将其标记为 CheckpointingInProgress,然后将写磁盘(比如写 HDFS)需要的配置文件(如 core-site.xml 等)broadcast 到其他 worker 节点上的 blockManager。完成以后,启动一个 job 来完成 checkpoint(使用 rdd.context.runJob(rdd, CheckpointRDD.writeToFile(path.toString, broadcastedConf)) )。 checkpointed: job 完成 checkpoint 后,将该 rdd 的 dependency 全部清掉,并设定该 rdd 状态为 checkpointed。然后, 为该 rdd 强加一个依赖,设置该 rdd 的 parent rdd 为 CheckpointRDD, 该 CheckpointRDD 负责以后读取在文件系统上的 checkpoint 文件,生成该 rdd 的 partition。 有意思的是我在 driver program 里 checkpoint 了两个 rdd,结果只有一个(下面的 result)被 checkpoint 成功,pairs2 没有被 checkpoint,也不知道是 bug 还是故意只 checkpoint 下游的 RDD: checkPoint是一种容错机制,当我们的程序需要很多transformation操作的时候,如果我们担心中间某些关键的后面会反复几次使用的RDD,可能会因为节点的故障,导致持久化数据的丢失,那么就可以针对该RDD额外启动checkpoint机制, 实现容错和高可用。 首先要调用 SparkContext的setCheckPointDir()方法,设置一个容错的文件系统的目录,比如HDFS; 然后对RDD调用checkpoint()方法。之后,在RDD所处的job运行结束之后,会启动一个单独的job,来将checkPoint的RDD的数据写入之前设置的文件系统,进行高可用、容错的类持久化操作。 此时就算在后面使用RDD时,它的持久化的数据,不小心丢失了,但是还是可以从它的checkpoint文件中直接读取其数据,从而不需要重新计算。 (CacheManager) 答:首先使用SparkContext.setCheckpointDir() ,设置checkpoint的目录,然后使用RDD.checkpoin进行checkpoint。 剖析,当我们使用了checkpoint之后,发生的一系列操作: 1、 对RDD调用了checkpoint()方法之后,它就接受RDDCheckpointData对象的管理。 2、 RDDCheckpointData对象,会负责将调用了checkpoint()方法的RDD的状态,设置为MarkedForCheckpoint。 3、 在RDD所在的那个job运行结束之后,会调用job中,最后一个RDD的doCheckPoint()方法,该方法沿着finalRDD的lineage向上查找,标记为MarkedForCheckpoint的RDD,并将其标记为CheckpointingInProgress。 4、 然后启动一个单独的job,来将lineage中,标记为CheckpointingInProgress的RDD,进行checkpoint的操作,也就是将这个RDD写入到Sparkcontext.setCheckpointDir()方法设置的文件系统中。 答:最主要的区别: 在于持久化,只是将数据保存在BlockManager中,但是rdd的lineage没有发生改变。 但是checkpoint执行完以后,rdd已经没有之前所谓的依赖rdd了,而只有一个强行为其设置的checkpointRDD,也就是说,checkpoint之后,rdd的lineage就改变了。 其次,持久化的数据丢失的可能性更大,无论是磁盘、或者是内存,都有可能丢失;但是checkpoint的数据,通常是保存在容错、高可用的文件系统中的,比如HDFS,依赖于这种高容错的文件西永,所以checkpoint的数据丢失可能性非常低。 答:如果一个RDD没有缓存,而且还设置了checkpoint,这样的操作是很悲剧的,细想,本来当前RDD的这个job都执行结束了,但是由于中间的rdd没有持久化,那么checkpoint job想要将rdd 的数据写入到外部文件系统中的话,还得从rdd之前所有的rdd,全部重新计算一次,然后才能计算出rdd的数据,再将其checkpoint到外部的文件系统中, 所以我们通常建议,对要checkpoint的rdd使用persisit(StorageLevel_DISK_OMLY),该rdd计算之后,就直接将其持久化到磁盘上去,然后后面进行checkpoint操作是,直接从磁盘上读取rdd的数据,并checkpoint到外部文件系统即可,不需要重新计算一次rdd。
2023-01-11 20:14:271

checkpoint防火墙通电不能开机

您是想问checkpoint防火墙通电不能开机是什么原因吗?checkpoint防火墙通电不能开机是因为设备默认启动介质不正确,当checkpoint设备默认启动介质不正确,就会出现防火墙通电不能开机的现象,所以checkpoint防火墙通电不能开机是因为设备默认启动介质不正确。
2023-01-11 20:14:551

什么是checkpoint

检查站,如果是机场的话就是登机取票的地方
2023-01-11 20:15:002

checkpoint怎么设置syslog server

通过Cisco路由器的Syslog服务转发系统日志到采集服务器,具体配置方法如下:device#conf tdevice(config)#logging ondevice(config)#logging IP //日志服务器的IP地址device(config)#logging trap critical //日志记录级别,可用"?"查看详细内容device(config)#logging source-interface f0/1 //日志发出用的源IP地址(f0/1为发出日志的端口,使用哪个端口由实际情况决定)device(config)#service timestamps log datetime localtime //日志记录的时间戳设置检验device#sh logging保存配置device#copy runningconfigure startingconfigure
2023-01-11 20:15:091

Flink 与rabbitmq集成 并开启checkpoint

如果不开启checkpoint机制,flink job 在运行时如果遇到异常整个job就会停止。 如果开启了checkpoint机制,就会根据恢复点进行数据重试,这个是一个非常复杂的机制,需要单独的文章进行解析。 所以开启checkpoint是必然要做的配置。 在与rabbitmq集成时有个点必须要注意,就是mq 发送消息时候,必须要带上CorrelationId。我们看一下flink的官方文档。 env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE); env.getCheckpointConfig().setCheckpointInterval(10000); DataStream dataStreamSource = env.addSource(new RMQSource(connectionConfig, " kgraph",true,new SimpleStringSchema()) ); dataStreamSource.print(); 上面是构造RMQSource(…)的参数,如下 queueName: The RabbitMQ queue name. usesCorrelationId : true when correlation ids should be used, false otherwise (default is false). deserializationScehma : Deserialization schema to turn messages into Java objects. 根据参数不同,有如下三种模式 Exactly-once (when checkpointed) with RabbitMQ transactions and messages with unique correlation IDs. At-least-once (when checkpointed) with RabbitMQ transactions but no deduplication mechanism (correlation id is not set). No strong delivery guarantees ( without checkpointing) with RabbitMQ auto-commit mode. 那么 开启 exactly-once 确保消费一次的特性,就必须在传递 mq消息的时候带上 correlationId。 correlation Id 是 mq 消息的一个基本属性,可以用来标识消息的唯一id,通常是mq实现rpc调用时使用,flink 利用其唯一id的特性来做 exactly once的消费。所以在发送mq消息时 加上 correlation_id 的properties 就不会有问题了。如果使用 spring 结合 rabbitmq 作为客户端,需要对 correlationId 做一个特别的处理 就是需要自己手动设置correaltionId, rabbittemplate 没有自动的封装这个属性, convertAndSend这个方法非常让人confuse, 里面支持传入correlationData字段,但是这个是写入到消息头的,而不是correlation_id,flink那边永远无法读取到。 public void sendMsg(KgraphUpdateMessage kgraphUpdateMessage) { CorrelationData correlationId =new CorrelationData(UUID.randomUUID().toString()); ObjectMapper jsonReader =new ObjectMapper(); try     { MessageProperties properties =new MessageProperties(); properties.setCorrelationId(correlationId.getId().getBytes()); Message message =new Message(jsonReader.writeValueAsBytes(kgraphUpdateMessage), properties); rabbitTemplate. convertAndSend (KgraphMqConfig.KGRAPH_EXCHANGE, KgraphMqConfig.KGRAPH_TOPIC_EVENT, message,correlationId); }catch (JsonProcessingException e) { e.printStackTrace(); } }
2023-01-11 20:15:151

电脑出现c0000034错误按照百度输入命令指令但在c盘里找不到pending.xml怎么

如果你在安装Windows 7 SP1时,出现了“致命错误C0000034″, 那你正在阅读最佳解决方案. 有两个选项, 第一,如果你的系统具有还原点, 第二,不具有系统还原点.如果你有系统还原点, 重新启动您的电脑,并使用最新的系统还原点. 不过,如果你没有系统还原点继续读我们的文章.此方法不用安全模式, 不用备份, 不用系统还原, 不用DISM, 不用windows 7光盘修复.注意: 此方法不保证完全有效.以下为解决步骤:1. 重新启动电脑2. 选择选项 “启动修复”3. 当修复启动, 单击取消.4. 点击“不发送”5. 点击“查看高级修复和支持选项”6. 在新窗口中点击命令行.7. 在命令行处键入 Notepad.exe8. 记事本将打开. 然后点击文件–>打开.9. 将文件类型由文本文档txt改为所有文件10. 转到X:Windowswinsxs文件夹 (X为你安装系统文件的盘符)11. 在该文件夹, 找到pending.xml并复制一份以做备份12. 现在打开pending.xml (它加载很慢,因为该文件非常大)13. 搜索: 0000000000000000.cdf-ms14. 删除以下文字 (你的可能会有点不同):< checkpoint/ >< deletefile path=”SystemRootWinSxSFileMaps\_0000000000000000.cdf-ms”/ >< movefile source=”SystemRootWinSxSTempPendingRenamese56db1db48d4cb0199440000b01de419._0000000000000000.cdf-ms” destination=”SystemRootWinSxSFileMaps\_0000000000000000.cdf-ms”/ >您的电脑可能没有全部 3 个代码块 (< checkpoint>, < deletefile>, < movefile>). 您只要确定删除checkpoint代码块和任何其他包括0000000000000000.cdf-ms的块.15.保存该文件, 关闭记事本, 关闭命令行, 重新启动计算机.PS:有的可能不是0000000000000000.cdf-ms,这时候ctrl+F查找“checkpoint”,删掉就近的< checkpoint>, < deletefile>, < movefile>保存,重启即可。我也不能保证这个方法没有问题,只能说我用了是OK的。
2023-01-11 20:15:311

restart checkpoint是什么意思

restart checkpoint 再启动检查点 [计]
2023-01-11 20:15:372

checkpoint 防火墙any代表udp端口吗

不是的 . any 可以指 任何选项。 可以是指各种服务, 各种端口,或者任何IP地址。要看 any配置的位置。
2023-01-11 20:15:451

你们知道世界上最厉害的防火墙是那个国家的吗

拆那拆那拆那
2023-01-11 20:17:012

SQL三种恢复模式有什么区别?

一、定义不同Simple简单恢复模式,Simple模式的旧称叫”Checkpoint with truncate log“。Full完整恢复模式,和Simple模式相反,Full模式的旧称叫”Checkpoint without truncate log“。Bulk-logged 大容量日志恢复。二、功能不同完整sql server恢复模式:数据库引擎把所有操作都记录到事务日志上,并且数据库引擎绝对不会截断日志,完整恢复模式能使数据库恢复到故障时间点。简单sql server恢复模式:数据库引擎最低限度地记录大多数操作,并在每个检查点之后截断事务日志。它不能备份或还原事务日志,也不能还原单独的数据页。大容量日志模式:数据库引擎对大容量操作(select into和bulk insert)进行最小记录。如果一个日志备份包含任何大容量操作,就可以使数据库恢复到日志备份的结尾,但不能恢复到某个时间点,它仅用于大容量操作期间。三、好处不同在Simple模式下,SQL Server会在每次checkpoint或backup之后自动截断log,也就是丢弃所有的inactive log records,仅保留用于实例启动时自动发生的instance recovery所需的少量log,这样做的好处是log文件非常小,不需要DBA去维护。Full模式SQL Server不主动截断log,只有备份log之后,才可以截断log,否则log文件会一直增大,直到撑爆硬盘,因此需要部署一个job定时备份log。Full的好处是可以做point-in-time恢复,最大限度的保证数据不丢失,一般用于critical的业务环境里。Bulk-logged是针对以下Bulk操作,会产生尽量少的log: 1、Bulk load operations (bcp and BULK INSERT). 2、SELECT INTO. 3、Create/drop/rebuild index 通常bulk操作会产生大量的log,对SQL Server的性能有较大影响,bulk-logged模式的作用就在于降低这种性能影响,并防止log文件过分增长。
2023-01-11 20:18:431

侠盗飞车之罪恶都市任务秘籍

THUGSTOOLS =棍子类武器 PROFESSIONALTOOLS =枪类武器 NUTTERTOOLS =变态武器 PRECIOUSPROTECTION =加满防弹衣 ASPIRINE =加满血 YOUWONTTAKEMEALIVE =加2个警察抓你的星星 LEAVEMEALONE =警察星星变零 APLEASANTDAY =好天气 ALOVELYDAY =超好天气 ABITDRIEG =云天 CATSANDDOGS =雨天 CANTSEEATHING =小雨天 PANZER =给你个坦克 LIFEISPASSINGMEBY =时间过得更快 BIGBANG =附近所有车子爆炸 STILLLIKEDRESSINGUP =换玩家的人物 FIGHTFIGHTFIGHT =街上人打架 NOBODYLIKESME =街上人被你装了会跌到 OURGODGIVENRIGHTTOBEARARMS =街上所有人有武器 ONSPEED =走的更快 BOOOOOORING =走的更慢 WHEELSAREALLINEED =车子不见..只有轮子 COMEFLYWITHME =苍蝇飞来飞去 ICANTTAKEITANYMORE =自杀 GREENLIGHT =所有红绿灯变绿 MIAMITRAFFIC =路上车子开的很快 TRAVELINSTYLE =车子会飞 THELASTRIDE =给你一辆葬礼车 ROCKANDROLLCAR =给你一辆加长型礼车limo RUBBISHCAR =给你一辆垃圾车 GETTHEREFAST =给你一辆SABRE TURBO BETTERTHANWALKING =给你一辆caddy GETTHEREQUICKLY =车子超快 GETTHEREVERYFASTINDEED =车子超超快 GETTHEREAMAZINGLYFAST =车子超超超快 FANNYMAGNET =女人都会被你吸引 CERTAINDEATH =嘴里放跟烟
2023-01-11 20:18:522

在oracle数据库alert log 文件中,"checkpoint not complete"指的是什么

当我们进行redo 切换的时候,会触发checkpoint 事件。 触发该事件有5个条件。 下文有说明。 Checkpoint做的事情之一是触发DBWn把buffer cache中的Dirty cache磁盘。另外就是把最近的系统的SCN更新到datafile header和control file(每一个事务都有一个SCN),做第一件事的目的是为了减少由于系统突然宕机而需要的恢复时间,做第二件事实为了保证数据库的一致性。Checkpoint will flush dirty block to datafile, 从而触发DBWn书写dirty buffer,等到redo log覆盖的dirty block全部被写入datafile后才能使用redo log(循环使用),如果DBWn写入过慢,LGWR必须等待DBWn完成,则这时会出现“checkpoint not completed!”。 所以当出现checkpointnot competed的时候,还会伴随cannot allocate new log的错误。如果遇到这个问题,可以增加日志组和增大日志文件,当然也可以修改 checkpoint参数使得检查点变频繁一些。在出现这个错误的时候,数据库是短暂hang住的,等待checkpoint的完成。 在hang住的时候,没有日志产生。
2023-01-11 20:19:001

checkpoint是什么意思及音标

checkpoint[英][ˈtʃekpɔɪnt][美][ˈtʃɛkˌpɔɪnt]n.检查站,车站的行李房; 复数:checkpoints例句:1.After all, she was a female checkpoint officer. 毕竟,她是一位女性检查站军官。
2023-01-11 20:19:102

checkpoint公司简介?

CHECKPOINT 是做什么产品?经理待遇么样?急急用!!!!!
2023-01-11 20:19:192

spindle assembly checkpoint是什么意思

纺锤体装配检测点
2023-01-11 20:19:552