"EXACTLY_ONCE":这种模式意思是系统将以如下语义对operator和udf(user defined function)进行快照:在恢复时,每条记录将在operator状态中只被重现/重放一次。
@Description("The checkpointing mode that defines consistency guarantee.") @Default.Enum("AT_LEAST_ONCE") CheckpointingMode getCheckpointingMode(); void setCheckpointingMode(CheckpointingMode mode);5) 设置检查点的最大超时时间,默认为20*60*1000(毫秒)=20(分钟)。
@Description("The maximum time that a checkpoint may take before being discarded.") @Default.Long(20 * 60 * 1000) Long getCheckpointTimeoutMillis(); void setCheckpointTimeoutMillis(Long checkpointTimeoutMillis);6) 设置重新执行失败任务的次数,值为0有效地禁用容错,值为-1表示使用系统默认值(在配置中定义)。
@Description( "Sets the number of times that failed tasks are re-executed. " + "A value of zero effectively disables fault tolerance. A value of -1 indicates "+ "that the system default value (as defined in the configuration) should be used.") @Default.Integer(-1) Integer getNumberOfExecutionRetries(); void setNumberOfExecutionRetries(Integer retries);7) 设置执行之间的延迟,默认值为-1L。
@Description( "Sets the delay between executions. A value of {@code -1} " + "indicates that the default value should be used.") @Default.Long(-1L) Long getExecutionRetryDelay(); void setExecutionRetryDelay(Long delay);8) 设置重用对象的行为。
@Description("Sets the behavior of reusing objects.") @Default.Boolean(false) Boolean getObjectReuse(); void setObjectReuse(Boolean reuse);9) 设置状态后端在计算期间存储Beam的状态,不设置从配置文件中读取默认值。注意:仅在执行时适用流媒体模式。
@Description("Sets the state backend to use in streaming mode. " @JsonIgnore AbstractStateBackend getStateBackend(); void setStateBackend(AbstractStateBackend stateBackend);10) 在Flink Runner中启用/禁用Beam指标。
@Description("Enable/disable Beam metrics in Flink Runner") @Default.Boolean(true) BooleangetEnableMetrics(); voidsetEnableMetrics(BooleanenableMetrics);11) 启用或禁用外部检查点,与CheckpointingInterval一起使用。
@Description( "Enables or disables externalized checkpoints." +"Works in conjunction with CheckpointingInterval") @Default.Boolean(false) BooleanisExternalizedCheckpointsEnabled(); voidsetExternalizedCheckpointsEnabled(BooleanexternalCheckpoints);12) 设置当他们的Wartermark达到+ Inf时关闭源,Watermark在Flink 中其中一个作用是根据时间戳做单节点排序,Beam也是支持的。
@Description("If set, shutdown sources when their watermark reaches +Inf.") @Default.Boolean(false) BooleanisShutdownSourcesOnFinalWatermark(); voidsetShutdownSourcesOnFinalWatermark(BooleanshutdownOnFinalWatermark);剩余两个部分这里不再进行翻译,留给大家去看源码。
六. KafkaIO和Flink实战本节通过解读一个真正的KafkaIO和Flink实战案例,帮助大家更深入地了解Apache Beam KafkaIO和Flink的运用。
设计架构图和设计思路解读Apache Beam 外部数据流程图