

# 容错

> 译者：[flink.sojb.cn](https://flink.sojb.cn/)


Flink的容错机制在出现故障时恢复程序并继续执行它们。此类故障包括机器硬件故障，网络故障，瞬态程序故障等。

## 批处理容错（DataSet API）

_DataSet API中_程序的容错能力通过重试失败的执行来实现。Flink在作业声明为失败之前重试执行的时间可通过_执行重试_参数进行配置。值_0_有效意味着禁用容错。

要激活容错，请将_执行重试次数_设置为大于零的值。常见的选择是值为3。

此示例显示如何配置Flink DataSet程序的执行重试。

*   [**Java**](#tab_java_0)
*   [**Scala**](#tab_scala_0)



```
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.setNumberOfExecutionRetries(3);
```





```
val env = ExecutionEnvironment.getExecutionEnvironment()
env.setNumberOfExecutionRetries(3)
```



您还可以在以下位置定义执行重试次数和重试延迟的默认值`flink-conf.yaml`：



```
execution-retries.default: 3
```



## 重试延迟

执行重试可以配置为延迟。延迟重试意味着在执行失败后，重新执行不会立即开始，而是仅在一定延迟之后。

当程序与外部系统交互时，延迟重试可能会有所帮助，例如，在尝试重新执行之前，连接或挂起的事务应该达到超时。

您可以按如下方式为每个程序设置重试延迟（示例显示DataStream API - DataSet API的工作方式类似）：

*   [**Java**](#tab_java_1)
*   [**Scala**](#tab_scala_1)



```
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.getConfig().setExecutionRetryDelay(5000); // 5000 milliseconds delay
```





```
val env = ExecutionEnvironment.getExecutionEnvironment()
env.getConfig.setExecutionRetryDelay(5000) // 5000 milliseconds delay
```



您还可以在以下位置定义重试延迟的默认值`flink-conf.yaml`：



```
execution-retries.delay: 10 s
```



