我有以下代码:
val stateUri = "file:///tmp/"
new RocksDBStateBackend(stateUri, true)
当我通过ui部署新版本的作业时,我应该做些什么来保持状态?
将stateuri放入保存点路径就足够了吗?
如果我想扩展它,我可以用相同的路径再次部署相同的jar吗?
如果两个不同的jar具有相同的后端stateuri会发生什么?
我有以下代码:
val stateUri = "file:///tmp/"
new RocksDBStateBackend(stateUri, true)
当我通过ui部署新版本的作业时,我应该做些什么来保持状态?
将stateuri放入保存点路径就足够了吗?
如果我想扩展它,我可以用相同的路径再次部署相同的jar吗?
如果两个不同的jar具有相同的后端stateuri会发生什么?
1条答案
按热度按时间dzjeubhm1#
为了升级您的工作,您首先应该通过
bin/flink savepoint <JOB_ID> <TARGET_DIRECTORY>
. 或者,也可以使用保存点取消作业,该保存点创建保存点并停止作业bin/flink cancel --withSavepoint <TARGET_DIRECTORY> <JOB_ID>
. 两个cli调用都将返回一个指向创建的保存点的路径,该保存点应存储在TARGET_DIRECTORY
. 要从此保存点恢复,应在ui的保存点路径字段中输入此路径,或通过提交作业bin/flink run --fromSavepoint <SAVEPOINT_PATH> <JAR>
.不,那个
stateUri
只是状态后端存储检查点的基本路径。状态后端将创建一个子目录,其中包含作业的id,它将在该子目录下存储检查点。因此,检查点的路径通常看起来像stateUri/JOB_ID/chk-1
哪里JOB_ID
是uuid(例如。0ba86fd9d1b29d90796e4a7d27f9b2f9
)第一个检查站。为了扩展作业,您应该获取一个保存点,取消作业,然后从保存点重新提交作业,并增加并行性(例如。
bin/flink run --fromSavepoint <SAVEPOINT_PATH> --parallelism 10 <JAR>
).每个作业都有一个唯一的作业id。因此,您将在下面找到两个子目录
stateUri
哪些是不同的作业ID。检查点将分别存储在每个作业的每个子目录中。