重命名 Apache Apex 应用程序时,Kafka 运算符语义会发生变化吗?

Posted

技术标签:

【中文标题】重命名 Apache Apex 应用程序时,Kafka 运算符语义会发生变化吗?【英文标题】:Will Kafka operator semantic change when I rename an Apache Apex application? 【发布时间】:2016-04-28 15:54:42 【问题描述】:

假设我们重命名应用程序的那一刻,Kafka 运算符的语义将完全改变并且可能最终由应用程序代码从“initialOffset”读取,我是否正确?

如何维护“应用程序名称”定义的语义?

应用程序代码的每次部署都会产生一个新的应用程序,还是只是使用@ApplicationAnnotation(name="") 实例来定义这个含义?

【问题讨论】:

【参考方案1】:

您始终可以使用 -originalAppId 启动应用程序,操作员应从原始应用程序停止的位置继续。如果您使用的是 kafka 0.9 运算符并启动同名应用程序,则可以将 initialOffset 设置为“application_or_latest”或“application_or_earliest”,因此运算符应从上次运行中处理的偏移量继续。不同之处在于,如果您指定 -originalAppId,则偏移量将从检查点恢复,而另一个将偏移量存储在 kafka 本身中。

【讨论】:

【参考方案2】:

您可以使用-originalAppId 参数从其先前状态启动应用程序,并从其先前运行的检查点状态提供纱线应用程序ID,它应适用于dag 中的所有运算符,包括kafka 输入运算符。您还可以使用属性dt.attr.APPLICATION_NAME 为应用程序提供一个新名称。

例如: launch pi-demo-3.4.0-incubating-SNAPSHOT.apa -originalAppId application_1459879799578_8727 -Ddt.attr.APPLICATION_NAME="pidemo v201"

【讨论】:

以上是关于重命名 Apache Apex 应用程序时,Kafka 运算符语义会发生变化吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何重命名/替换 Kafka-connect SMT 结构中的字段?

如何重新启动 Apache Apex 应用程序?

重命名Apache日志,新日志文件会放在哪里

Apache Apex 如何处理背压?

包 org.apache.apex.malhar.lib 不存在

如何从 Apache Apex 应用程序内部获取 ApplicationID?