如果我为Flink检查点配置本地文件系统会发生什么?

时间:2018-04-12 07:13:04

标签: apache-flink flink-streaming checkpointing

我看过一个名为env.setStateBackend(new RocksDBStateBackend(getString("flie:///tmp/checkpoints"), true)); 的视频。 在此video中,它使用分布式文件系统存储数据。

我想知道如果我为Flink检查点配置本地文件系统会发生什么?

例如:

@Repository
interface InterventionRepository : JpaRepository<Intervention, Long> {

@Query("select new Intervention(i.id, i.date, i.wishedDate, new Address(a.streetName1)) " +
        "from Intervention i " +
        "inner join i.address a ")
fun getInterventions(): Optional<ArrayList<Intervention>>
}

我假设Flink集群的每个节点都会保留自己的数据。它会运作良好吗?

1 个答案:

答案 0 :(得分:1)

  

我假设Flink集群的每个节点都会保留自己的数据。

这是正确的。

  

它会运作良好吗?

使用本地文件系统和分布式节点,您可以很好地检查点(即使这不确定,因为JobManager可能会创建目录,因此可能TaskManager个实例将失败,目录不存在)但是你无法恢复,因为JobManager读取并根据需要将其分发给运营商。

严格地说,文件系统是本地文件还是分发到flink并不重要。重要的是JobManager作为恢复时间能够查看所有检查点数据。如果您在同一台计算机上运行所有内容,那么本地文件系统就可以正常运行。

我认为原则上您甚至可以让所有节点在本地写入,然后手动使用同步过程将数据移动到JobManager在尝试还原期间可以看到的位置,但这肯定不是推荐的做法。