我正在测试Flink 1.3.0中的弹性功能。我有一个启用了检查点和固定延迟重启策略的工作。当我杀死其中一个TaskManager JVM时,一段时间后,作业会在剩余节点上正确重启。但是,当我添加新节点时,作业不会自动重新启动以使用它。
我尝试使用char * removeChar(char * str, char c){
int len = strlen(str);
int i = 0;
int j = 0;
char * copy = malloc(sizeof(char) * (len + 1));
while(i < len){
if(str[i] != c){
copy[j] = str[i];
j++;
i++;
}else{
i++;
}
}
// add terminating null byte
copy[j] = '\0';
if(strcmp(copy, str) != 0){
strcpy(str,copy);
}
// always return copy
return copy;
}
,但它总是给我bin/flink stop <jobId>
如何重新启动作业以使用其他节点?
答案 0 :(得分:4)
Flink 1.3不提供动态重新缩放,也不会自动重新启动作业以利用新的可用资源。要在这种情况下重新启动作业,您应该使用保存点,增加并行度,然后从保存点重新启动作业。您可以使用以下保存点取消作业:
flink cancel -s [targetDirectory] <jobID>
然后通过
重新启动它flink run -s <savepointPath> ...
有关保存点的更多详细信息,请参阅CLI docs和savepoint docs,但您可以将保存点视为用户触发的检查点。
Apache Flink® at MediaMath: Rescaling Stateful Applications in Production是来自数据艺术家的最新博客文章,其中详细介绍了重新缩放内部的工作方式。