精华内容
下载资源
问答
  • restart
    千次阅读
    2021-07-28 17:02:01

    前言

    flink的 RestartStrategy 作用是什么?
    一句话概括,提升任务健壮性和容错性,保证任务可以实时产出数据。
    设置重启策略和公司处理数据业务需求有很大的关系,根据不同的业务需求设置处理任务的不同策略。

    其实遇到上面这种问题比较常见的,比如有时候因为数据的问题(不合规范、为 null 等),这时在处理这些脏数据的时候可能就会遇到各种各样的异常错误,比如空指针、数组越界、数据类型转换错误等。可能你会说只要过滤掉这种脏数据就行了,或者进行异常捕获就不会导致 Job 不断重启的问题了。
    所以日常开发中我们要尽力的保证代码的健壮性,但是也要配置好 Flink Job 的 RestartStrategy(重启策略)。

    1.flink的重启策略(RestartStrategy)

    RestartStrategy,重启策略,在遇到机器或者代码等不可预知的问题时导致 Job 或者 Task 挂掉的时候,它会根据配置的重启策略将 Job 或者受影响的 Task 拉起来重新执行,以使得作业恢复到之前正常执行状态。Flink 中的重启策略决定了是否要重启 Job 或者 Task,以及重启的次数和每次重启的时间间隔。

    2. flink的4种重启策略

    默认的重启策略是通过Flink的flink-conf.yaml来指定的,这个配置参数restart-strategy定义了哪种策略会被采用。如果checkpoint未启动,就会采用no restart策略,如果启动了checkpoint机制,但是未指定重启策略的话,就会采用fixed-delay策略,重试Integer.MAX_VALUE次。请参考下面的可用重启策略来了解哪些值是支持的。

    配置参数 restart-strategy 定义了哪个策略被使用。

    1. 固定间隔 (Fixed delay)
    2. 失败率 (Failure rate)
    3. 无重启 (No restart)
    4. Fallback(备用重启策略)

    FixedDelayRestartStrategy(固定延时重启策略)
    FixedDelayRestartStrategy 是固定延迟重启策略,程序按照集群配置文件中或者程序中额外设置的重启次数尝试重启作业,如果尝试次数超过了给定的最大次数,程序还没有起来,则停止作业,另外还可以配置连续两次重启之间的等待时间,在 flink-conf.yaml 中可以像下面这样配置。

    restart-strategy: fixed-delay
    #表示作业重启的最大次数,启用 checkpoint 的话是 Integer.MAX_VALUE,否则是 1。
    restart-strategy.fixed-delay.attempts: 3
    #如果设置分钟可以类似 1 min,该参数表示两次重启之间的时间间隔,当程序与外部系统有连接交互时延迟重启可能会有帮助,启用 checkpoint 的话,延迟重启的时间是 10 秒,否则使用 akka.ask.timeout 的值。
    restart-strategy.fixed-delay.delay: 10 s 
    

    在程序中设置固定延迟重启策略的话如下:

     StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        // 设置固定延迟重启策略
            env.setRestartStrategy(RestartStrategies
                    .fixedDelayRestart(3,Time.seconds(3)));
    

    FailureRateRestartStrategy(故障率重启策略)

    FailureRateRestartStrategy 是故障率重启策略,在发生故障之后重启作业,如果固定时间间隔之内发生故障的次数超过设置的值后,作业就会失败停止,该重启策略也支持设置连续两次重启之间的等待时间。

    restart-strategy: failure-rate
    restart-strategy.failure-rate.max-failures-per-interval: 3  #固定时间间隔内允许的最大重启次数,默认 1
    restart-strategy.failure-rate.failure-rate-interval: 5 min  #固定时间间隔,默认 1 分钟
    restart-strategy.failure-rate.delay: 10 s #连续两次重启尝试之间的延迟时间,默认是 akka.ask.timeout 
    
    

    可以在应用程序中这样设置来配置故障率重启策略:

    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
      // 设置任务失败重启 允许任务失败最大次数 3次
           env.setRestartStrategy(RestartStrategies.failureRateRestart(3,
                    // 任务失败的时间启动的间隔
                    Time.of(2, TimeUnit.SECONDS),
                    // 允许任务延迟时间 3s
                    Time.of(3, TimeUnit.SECONDS))
            );
    

    NoRestartStrategy(不重启策略)

    NoRestartStrategy 作业不重启策略,直接失败停止,在 flink-conf.yaml 中配置如下:

    restart-strategy: none
    
    

    在程序中如下设置即可配置不重启:

    StreamExecutionEnvironment env= StreamExecutionEnvironment.getExecutionEnvironment();
    env.setRestartStrategy(RestartStrategies.noRestart());
    
    

    Fallback(备用重启策略)

    如果程序没有启用 Checkpoint,则采用不重启策略,如果开启了 Checkpoint 且没有设置重启策略,那么采用固定延时重启策略,最大重启次数为 Integer.MAX_VALUE。

    更多相关内容
  • 进程重启.zip,restart_on_crash,settings.ini,RestartOnCrash.exe
  • asrock RestartToUEFI (v1.0.5)
  • 软件看门狗,国外的,很好用,可以延时启动程序。
  • omap2-restart.rar_restart

    2022-09-23 00:40:58
    omap2-restart.c - code common to all OMAP2xxx machines.
  • omap3-restart.rar_restart

    2022-09-20 21:55:18
    omap3-restart.c - Code common to all OMAP3xxx machines.
  • omap4-restart.rar_restart

    2022-09-24 07:00:57
    omap4-restart.c - Common to OMAP4 and OMAP5.
  • cfc_daily_restart
  • Demo for Restart Application self
  • mmr.zip_game_restart

    2022-09-20 23:39:55
    minecraft server Restart when memory leak
  • cvmx-mio-defs.rar_restart

    2022-09-23 00:45:47
    Drive a GPIO line that can be used to restart the system a restart handler.
  • service mysql restart service mysqld restart service mysql.server restart 那么这几种究竟有什么区别,是版本原因还是配置原因?抽了个时间查询资料,搞明白了原因。 2、service 服务配置 直接说上面问题的...

    1、前言

    之前,遇到过在不同 linux 系统中启动或关闭 mysql,网上查询命令大都不一样,大致分为下面三种(以重启为例):

    service mysql restart
    
    service mysqld restart
    
    service mysql.server restart
    

    那么这几种究竟有什么区别,是版本原因还是配置原因?抽了个时间查询资料,搞明白了原因。

    2、service 服务配置

    直接说上面问题的答案,是配置的原因!

    上面三个重启 mysql 的命令,本质是通过 service 来启动的。service 命令,顾名思义,就是用于管理 Linux 操作系统中服务的命令。可以用来启动、关闭和重新启动系统服务,还可以显示所有系统服务的当前状态。

    但是,能够使用 service 命令进行操作的,就是已经注册成为 linux 的系统服务了。window 中也可以注册成为系统服务。那么如何注册成为系统服务呢?

    注册成系统服务分为两步:

    • 第一步:编写一个 shell 服务脚本(有的程序是自带服务脚本的,可以不用自己写)
    • 第二步:将该脚本服务复制到/ect/init.d/目录下

    下面以 mysql 为例,来说一下将 mysql 注册成系统服务。

    第一步:找到服务脚本

    mysql 是自带服务脚本的,其位置在 mysql 安装目录下的 support-file 目录中,比如 mysql 安装目录为/usr/local/mysql,则:

    在这里插入图片描述

    如上图,mysql.server 就是其自带的服务脚本(代码太长了,这里就不贴图看了,有兴趣自己可以打开看看其代码)。

    第二步:将该脚本服务复制到/ect/init.d/目录下

    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql.server
    

    OK,到了这一步,我们就可以明白 service mysqld restart 与 service mysql restart 的区别了。

    如果/etc/init.d/目录下存在的是 mysql.server 命令,那么要重启 mysql,只能使用:service mysql restart 或者 service mysql.server restart。

    如果你将 mysql.server 重命名为 mysqld,那么要使用 service 命令重启 mysql,就必须要使用 service mysql restart。

    说白了,就是看看你的服务脚本名称是什么了!

    注意:如果/etc/init.d 目录没有找到,可以找/etc/rc.d/init.d 目录,两者都是用来放服务脚本的,这两个目录一般不会同时存在,如果同时存在一般会存在软连接,具体可以参考:Linux 之 init.d、rc.d 文件夹说明

    展开全文
  • flink任务失败restart策略和failover策略

    千次阅读 2022-01-06 16:29:32
    一、restart策略 Flink在任务失败恢复重启时支持多种重启策略,同时配置支持两个级别,可以通过设置flink全局配置文件flink-conf.yaml来指定全局重启策略,也可以通过编程的方式指定单个job的重启策略,极端情况下...

    一、restart策略

    Flink在任务失败恢复重启时支持多种重启策略,同时配置支持两个级别,可以通过设置flink全局配置文件flink-conf.yaml来指定全局重启策略,也可以通过编程的方式指定单个job的重启策略,极端情况下可以为每一个任务都指定一个重启策略;一般情况下,编程方式指定的单个job重启策略会将全局策略覆盖。

    在检查点机制未开启的情况下,flink默认会采取No Restart Strategy策略,即失败不重启;在检查点机制开启状态下,默认会采取Fixed Delay Restart Strategy(固定间隔延迟重启)策略,且重试次数为Integer.MAX_VALUE

    1、Fixed Delay Restart Strategy

    固定间隔延迟重启策略,表现形式为:给定延迟间隔,给定重试次数,且两次连续重试尝试之间必须保证等待配置的固定时间,在重试了给定次数之后依然失败,那么将最终失败。

    1)配置方式设置: 

    restart-strategy: fixed-delay
    restart-strategy.fixed-delay.attempts: 3
    restart-strategy.fixed-delay.delay: 10 s

    2)编程方式设置:

    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    env.setRestartStrategy(RestartStrategies.fixedDelayRestart(
      3, // number of restart attempts
      Time.of(10, TimeUnit.SECONDS) // delay
    ));

    2、Exponential Delay Restart Strategy

    指数延迟重启策略尝试无限重启作业,将延迟增加到最大延迟。 这项工作永远不会失败。 在两次连续的重启尝试之间,重启策略保持指数增长,直到达到最大次数。 然后,它将延迟保持在最大数量。

    当作业正确执行时,指数延迟值会在一段时间后重置; 这个阈值是可配置的。

    1)配置方式设置:

    restart-strategy: exponential-delay
    restart-strategy.exponential-delay.initial-backoff: 10 s
    restart-strategy.exponential-delay.max-backoff: 2 min
    restart-strategy.exponential-delay.backoff-multiplier: 2.0
    restart-strategy.exponential-delay.reset-backoff-threshold: 10 min
    restart-strategy.exponential-delay.jitter-factor: 0.1

    2)代码方式设置:

    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    env.setRestartStrategy(RestartStrategies.exponentialDelayRestart(
      Time.milliseconds(1),
      Time.milliseconds(1000),
      1.1, // exponential multiplier
      Time.milliseconds(2000), // threshold duration to reset delay to its initial value
      0.1 // jitter
    ));

    3、Failure Rate Restart Strategy

    故障率重启策略,flink提供的一种比较"智能"的重启策略;即当任务的失败率上升到一定的程度时,flink认为本次任务最终是失败的;也可以理解为,在该策略中,flink关注的点是任务的失败率,那么具体生产中如何配置该策略的失败率就是我们需要根据实际的情况去权衡选择了。

    失败率计算公式:失败率 = 失败次数/时间区间

    1)配置方式设置:

    restart-strategy: failure-rate
    restart-strategy.failure-rate.max-failures-per-interval: 3
    restart-strategy.failure-rate.failure-rate-interval: 5 min
    restart-strategy.failure-rate.delay: 10 s

    2)代码方式设置:

    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    env.setRestartStrategy(RestartStrategies.failureRateRestart(
      3, // max failures per interval
      Time.of(5, TimeUnit.MINUTES), //time interval for measuring failure rate
      Time.of(10, TimeUnit.SECONDS) // delay
    ));

    4、No Restart Strategy 

    任务执行失败后,不会尝试重启,直接失败;如果Flink的检查点机制没开启的话,全局默认重启策略就是No Restart Strategy;很好理解,因为没了恢复依赖的分布式快照,无法对任务进行恢复。

    1)配置方式设置:

    restart-strategy: none
    

    2)代码方式设置:

    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    env.setRestartStrategy(RestartStrategies.noRestart());

    5、Fallback Restart Strategy
    后备重启策略,保底策略,即所谓的默认重启策略;集群中如果没有在配置文件(flink-conf.yaml)中显示的配置重启策略,也没有在编程中织入,在检查点机制开启的情况下,任务失败,flink会默认的选用Fixed Delay Restart Strategy重启,且会无限尝试重连(Integer.MAX_VALUE次)。

    二、failover策略

    可以在flink-config.yml中设置jobmanager.execution.failover-strategy 来确定failover策略:

    • full:restart all,This strategy restarts all tasks in the job to recover from a task failure.
    • region:Restart pipelined region        

    region failover策略:

    该策略将任务分组到不相交的区域中。当检测到任务失败时,此策略计算必须重新启动才能从失败中恢复的最小区域集。对于某些作业,与重新启动所有故障转移策略相比,这可能会导致重新启动的任务更少。

    区域是一组通过流水线数据交换进行通信的任务。也就是说,批量数据交换表示一个区域的边界。

    • All data exchanges in a DataStream job or Streaming Table/SQL job are pipelined.
    • All data exchanges in a Batch Table/SQL job are batched by default.
    • The data exchange types in a DataSet job are determined by the ExecutionMode which can be set through ExecutionConfig.

    重启区域决定如下:

    • 包含失败任务的区域将重新启动。
    • 如果结果分区不可用而将重新启动的区域需要它,则生成结果分区的区域也将重新启动。
    • 如果一个区域要重启,它的所有消费者区域也将被重启。这是为了保证数据一致性,因为非确定性处理或分区会导致不同的分区。

    官方文档:https://nightlies.apache.org/flink/flink-docs-master/docs/ops/state/task_failure_recovery/

    展开全文
  • systemctl restart network重启网卡失败

    千次阅读 2022-04-28 08:34:09
    重启网卡:systemctl restart network,出现如下错误 2、查看错误日志,体现如下: 3、根据错误提示,进入到对应位置vi /etc/sysconfig/network-script/下 4、发现里面多了很多除了ifcfg-ens33,ifcfg-lo之外...

    1、问题简述:

    重启网卡:systemctl restart network,出现如下错误

    2、查看错误日志,体现如下:

    3、根据错误提示,进入到对应位置vi /etc/sysconfig/network-script/下

    4、发现里面多了很多除了ifcfg-ens33,ifcfg-lo之外的文件,果断删除

    rm -rf ifcfg-ens33.swo ifcfg-ens33.swp ifcfg-default ifcfg-static

    5、重启网卡之后发现还是报错

    6、进入提示报错的位置:  vi /etc/sysconfig/network-script/ifup-eth, 检查了一下,发现这个文件里面多了很多东西,删除多余的东西,最终留下内容如下:

    #!/bin/bash
    # Network Interface Configuration System
    # Copyright (c) 1996-2014 Red Hat, Inc. all rights reserved.
    #
    # This program is free software; you can redistribute it and/or modify
    # it under the terms of the GNU General Public License, version 2,
    # as published by the Free Software Foundation.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # GNU General Public License for more details.
    #
    # You should have received a copy of the GNU General Public License
    # along with this program; if not, write to the Free Software
    # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    
    . /etc/init.d/functions
    
    cd /etc/sysconfig/network-scripts
    . ./network-functions
    
    [ -f ../network ] && . ../network
    
    CONFIG=${1}
    
    need_config "${CONFIG}"
    
    source_config
    
    if [ "${BOOTPROTO}" = "bootp" -o "${BOOTPROTO}" = "dhcp" ]; then
        DYNCONFIG=true
    fi
    
    

    7、重启网卡: systemctl restart network ,成功!!!!!!!!!

     

    展开全文
  • service network restart 失败问题全解

    千次阅读 2022-06-13 22:21:37
    今天建立hadoop集群的时候,克隆主节点过来时service network restart一直失败,类似于下图: 网上也找了找原因,其实很简单,第一个图片问题就是device问题,第二个就是UUID的问题。还有一种问题hwaddr的问题。...
  • service sshd restart 慎用

    千次阅读 2021-09-11 22:38:00
    印象当中 service sshd restart 这个命令操作一般很少用到的,有一次我们需要使用SFTP ,所以就需要操作ssh的配置文件(/etc/ssh/sshd_config)文件,可以在这个配置文件里开启SFTP ,也可以配置SFTP的账号、权限、目录...
  • docker参数--restart=always

    千次阅读 2022-05-05 14:56:50
    使用docker run命令创建容器时没有添加参数 --restart=always ,导致的后果是:当 Docker 重启时,容器未能自动启动。 # docker run -ti -p 9501:9501 --restart=always -v /data/nginx:/nginx:latest –restart=...
  • 当我使用conda activate XXX 的时候总是报如下... 解决conda activate报错IMPORTANT: You may need to close and restart your shell after running ‘conda init‘_呆萌的代Ma的博客-CSDN博客 conda 新版本问题 - 知乎
  • K8S系列:重启deployment (restart pod)

    千次阅读 2022-05-07 14:35:47
    kubectl rollout restart deployment -n your-namespace xxx-deployment
  • Docker --restart参数

    千次阅读 2020-11-25 10:17:10
    Docker restart参数用于指定自动重启docker容器策略,包含3个选项:no,on-failure[:times],always no 默认值,表示容器退出时,docker不自动重启容器docker run --restart=no [容器名] on-failure 若容器的...
  • service network restart报错

    千次阅读 2021-09-22 22:24:25
    删除/etc/sysconfig/network-scripts/不需要的ifcfg-xxx文件 或者 /etc/sysconfig/network-scripts/ifcfg-xxx文件中 ONBOOT=yes -> no 删除uuid
  • kubectl rollout restart重启pod

    千次阅读 2021-11-24 17:51:04
  • docker restart xxx重启容器报错:Error response from daemon: Cannot restart container es: driver failed prog
  • service network restart重启失败

    千次阅读 2021-10-14 09:42:10
    问题:service network restart 重启失败,出现以下信息 Restarting network (via systemctl): Job for network.service failed because the control process exited with error code. 解决: 先运行service ...
  • 标题CentOS service network restart 失败的解决方法 步骤1:先看一下MAC地址一不一致(如果克隆了虚拟机,地址和配置文件里可能写的不一样,所以连接不上) ①打开Network Connections: ②点击edit,查看以太网MAC...
  • 示例: docker run -d --restart=always ba-208 docker run -d --restart=on-failure:10 ba-208 补充: 查看容器重启次数 docker inspect -f “{undefined{ .RestartCount }}” ba-208 查看容器最后一次的启动时间 ...
  • 由于我使用的是centos8版本的虚拟机,所以这个命令是没有的需要使用: nmcli c reload 命令
  • 1.容器还没有创建,在运行容器的时候加入–restart=always参数 docker run -id --restart=always -p 9999:9999 -v xxxx:xxxx 镜像名称:tag 2.容器已经运行的情况,运行以下命令: docker update --restart=a.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 943,708
精华内容 377,483
关键字:

restart