如何重新启动flink作业以使用添加的TaskManager

时间:2017-06-19 15:44:13

标签: java apache-flink flink-streaming

我正在测试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>

如何重新启动作业以使用其他节点?

1 个答案:

答案 0 :(得分:4)

Flink 1.3不提供动态重新缩放,也不会自动重新启动作业以利用新的可用资源。要在这种情况下重新启动作业,您应该使用保存点,增加并行度,然后从保存点重新启动作业。您可以使用以下保存点取消作业:

flink cancel -s [targetDirectory] <jobID>

然后通过

重新启动它
flink run -s <savepointPath> ...

有关保存点的更多详细信息,请参阅CLI docssavepoint docs,但您可以将保存点视为用户触发的检查点。

Apache Flink® at MediaMath: Rescaling Stateful Applications in Production是来自数据艺术家的最新博客文章,其中详细介绍了重新缩放内部的工作方式。