You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by 罗学焕/予之 <xu...@dtwave-inc.com> on 2019/03/13 03:13:34 UTC

flink任务 动态更新(热部署) 问题请教

 Hi,大家好。

我这里有个Flink的问题想请教一下大家:

场景如下:
        使用Oracle 的Ogg同步工具,将Oracle 4个表的操作记录,同步到Kafka中。
        同步到Kafka时数据为Json格式,且存放在一个Topic中。
        Flink 会从Kafka 中读取了这个Topic ,并根据Json结构中的table字段,将此Topic 注册成多个流。
        利用利用Flink的分流,将此Topic,注册成A、B、C 三个流。
        之后,将A、B、C 三个流 做Join操作,并将结果结果输出。(如图,左侧)
        ---
        此时,由于业务新增了一个表,又往Kafka的Topic中新同步了一个表 。
        此时要进行解析表D ,并注册成表,一共有4个流。
        要做互相Join 。并输出结果。(如图、右侧)

示意图如下:
        在修改代码逻辑,并重新打包部署的情况下,是可以解决的。
        - -
        请问,可以在【Flink任务不停机重启】的情况下, 读取外部配置,
        新增一个流的分流解析,并动态修改处理的SQL,
        做到修改Flink的执行计划,并按照新的业务逻辑继续运行吗? 还是说不可避免的一定要进行Flink任务的重启?

        谢谢!

Re:flink任务 动态更新(热部署) 问题请教

Posted by TsingJyujing <ts...@163.com>.
Mailing List 是不能发图的


热部署是不可能热部署的,这辈子不可能热部署。
要是动态修改配置,DAG又不会改。
只有修改修改配置文件和代码,然后重新Deploy才能维持得了新业务这样子……


我们现在的解决方法是,启动的时候从Consul KV 动态读取 Table 的一些配置。
以Sink为例,你需要定义表结构(字段和类型,以及表名),还需要定义Append和Retract的时候做什么操作。
以Source为例的话,你要定义来源数据格式,和如何生成指定的表。
如果有套路的话(比如都是JSON类型的Source或者写入JDBC的Sink),可以做到修改配置,重启就生效。


但是热部署是不可能热部署的,要不然DAG的生成怎么办……








在 2019-03-13 11:13:34,"罗学焕/予之" <xu...@dtwave-inc.com> 写道:

 Hi,大家好。


我这里有个Flink的问题想请教一下大家:


场景如下:
        使用Oracle 的Ogg同步工具,将Oracle 4个表的操作记录,同步到Kafka中。
        同步到Kafka时数据为Json格式,且存放在一个Topic中。
        Flink 会从Kafka 中读取了这个Topic ,并根据Json结构中的table字段,将此Topic 注册成多个流。
        利用利用Flink的分流,将此Topic,注册成A、B、C 三个流。
        之后,将A、B、C 三个流 做Join操作,并将结果结果输出。(如图,左侧)
        ---
        此时,由于业务新增了一个表,又往Kafka的Topic中新同步了一个表 。
        此时要进行解析表D ,并注册成表,一共有4个流。
        要做互相Join 。并输出结果。(如图、右侧)


示意图如下:
        在修改代码逻辑,并重新打包部署的情况下,是可以解决的。
        - -
        请问,可以在【Flink任务不停机重启】的情况下, 读取外部配置,
        新增一个流的分流解析,并动态修改处理的SQL,
        做到修改Flink的执行计划,并按照新的业务逻辑继续运行吗? 还是说不可避免的一定要进行Flink任务的重启?


        谢谢!