1. 背景
公司有两套CDH集群,用于运行不同的业务。
最近集群A需要运行一个大的业务任务,对稳定性、吞吐量等要求非常高,而且运行一个月,因此需要将集群A所有运行的任务全部迁移到集群B。
2. 迁移方案
当前flink运行在集群A的yarn上,使用的flink on yarn方式部署,而且都开启了checkpoint,并且把checkpoint持久化到了集群A的HDFS上。现在要迁移到集群B,而且集群A和集群B的网络是互通的,因此可以使用flink的savepoint功能来完成任务的迁移。
具体步骤如下:
- 在集群A通过flink stop命令来停止on yarn的任务,并指定savepoint的路径为集群B。
- 在集群B通过flink run命令,指定--fromSavepoint参数值为集群B上对应任务的savepoint地址,以此来启动flink任务。
命令示例:
- 在集群A停止flink任务,并且做savepoint:
./flink stop flink任务的id -yid flink任务在yarn上的id -p hdfs://集群B的NN地址/flink/taskname/savepoint
-
示例图
注意,savepoint真正的地址,是下面日志中输出的地址,也就是你stop任务时指定的目录的下一级目录才对。
-
- 在集群B启动flink任务,并指定savepoint地址:
./flink run --fromSavepoint hdfs://集群B的NN地址/flink/taskname/savepoint/345sdfasf34f3qfq3f34 -c 主类完全限定名 主类jar包
-
示例图
-