问题简介
Cannot find meta data file '_metadata' in directory 'hdfs://nn-HA-service/flink/flink-checkpoints'
上面是本人实际工作中遇到的一个问题,于是便百度了一下问题,查无结果,可能是很低级的错误吧,毕竟本人对flink也仅限于会用的地步。但还是打算总结一下这个问题,希望能帮助到各位读者。
扫盲
首先我们来扫盲一下相关知识点。
什么是检查点
官网是这样定义的:检查点通过允许恢复状态和相应的流位置使Flink中的状态容错,从而为应用程序提供与无故障执行相同的语义。
检查点的主要目:在意外的作业失败时提供恢复机制。
Checkpoint的生命周期由Flink管理,即Flink创建,拥有和发布Checkpoint - 无需用户交互。作为一种恢复和定期触发的方法,Checkpoint实现的两个主要设计目标是:
i)创建轻量级。
ii)尽可能快地恢复。
如何配置检查点路径
有两种方式:
- 通过配置文件全局配置
这种配置方式是全局的,即默认检查点路径。
搭建过集群的同学应该知道,配置文件一般都在conf目录下。没错,flink也是一样,我们需要修改的就是 flink/conf/flink-conf.yaml 这个文件。
在配置文件里面将下面这个参数配置上:
state.checkpoints.dir: hdfs://nn-HA-service/flink/flink-checkpoints
- 通过在作业里配置
就是在每个作业里,自定义检查点路径,优先级高于默认检查点路径。
如果没有定义,就走默认检查点路径。
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(