赞
踩
其余还有高可用方面的一些功能:CheckPoint 机制保证容错 && 吞吐也比 Storm 要高很多
解决乱序,延迟事件
。因为对于 late element,我们又不能无限期的等下去,必须要有个机制来保证一个特定的时间后,必须触发 window 去进行计算了。这个特别的机制,就是watermark。基于 event-time 时间更新。如果 后面的 event-time 比前面的 元素大,那么就更新 Watermark。否则就不更新。
当然,在水位线之后,还会有更迟的迟到事件的到达,不会纳为窗口数据进行计算。这种 Flink 是怎么解决的呐?
固定延迟重启策略尝试给定次数重新启动作业
。如果超过最大尝试次数,则作业最终会失败。在两次连续重启尝试之间,重启策略等待一段固定的时间。ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.setRestartStrategy(RestartStrategies.fixedDelayRestart(
3, // 尝试重启的次数
Time.of(10, TimeUnit.SECONDS) // 延时
));
当故障率(每个时间间隔发生故障的次数)超过设定的限制时,作业会最终失败
。 在连续的两次重启尝试之间,重启策略等待一段固定长度的时间。ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.setRestartStrategy(RestartStrategies.failureRateRestart(
3, // 每个时间间隔的最大故障次数
Time.of(5, TimeUnit.MINUTES), // 测量故障率的时间间隔
Time.of(10, TimeUnit.SECONDS) // 延时
));
默认选择固定延时重启策略,默认最大启动次数是Integer.MAX_VALUE
通过 Flink 的配置文件 flink-conf.yaml 来设置默认的重启策略。配置参数 restart-strategy 定义了采取何种策略。
如果没有启用 checkpoint,不配置restart 策略的话,就采用“不重启”策略
。如果启用了 checkpoint 且没有配置重启策略,那么就采用固定延时重启策略
, 此时最大尝试重启次数由 Integer.MAX_VALUE 参数设置。除了定义默认的重启策略以外,还可以为每个 Flink 作业单独定义重启策略。 这个重启策略通过在程序中的 ExecutionEnvironment 对象上调用 setRestartStrategy 方法来设置。 当然,对于 StreamExecutionEnvironment 也同样适用。
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.setRestartStrategy(RestartStrategies.fixedDelayRestart(
3, // 尝试重启的次数
Time.of(10, TimeUnit.SECONDS) // 延时
));
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。