需求背景:
因为不同Flink版本SQL底层实现不相同,同一个带状态的Flink SQL作业目前跨版本升级社区还不支持。所以如果基于Flink SQL开发实时计算平台的话,平台需要支持不同Flink版本。早期的Flink SQL作业用的是1.11,最新的Flink SQL作业采用的是1.13开发的。 而让平台支持不同Flink版本,我能想到有三种实现方案: 1. 平台直接调用 flink run 或 flink run-application 提交作业 优点:实现简单,每个flink版本都会带这个shell脚本 缺点:受限于脚本提供的功能,像语法检查、格式化sql、获取sql执行计划及sql结构和血缘这些“高级”功能没有在官方脚本中提供(能否完善下呢?),如果要使用的话得自己扩展实现(同样需要自己维护多版本) 2. 平台调用 flink sql gateway 暴露的 restful api 提交作业 优点:实现简单,通过gateway屏蔽上层应用调用多版本flink api问题 缺点:需要额外扩展开发和部署gateway,目前暂不清楚社区对gateway的定位是什么?只是配合flink jdbc driver使用么?这两项目目前活跃度都不高 3. 需要维护多个平台版本,像 flink-sql-connector-hive 支持多版本hive那样 优点:现有平台就是基于特定版本flink api开发的,改动小,需要抽取公用接口 缺点:需要“复制”平台多份实现以支持不同flink版本,开发和维护量比较大 目前,我暂时prefer方案2,可能不对,也可能还有更优的我没想到,欢迎各位大佬们给点建议。 |
另外一个选择是flink on zeppelin,可以调用flink on zeppelin的rest api,把zeppelin当做是flink
job server, zeppelin天然支持flink 1.10之后的所有版本。钉钉群:32803524 casel.chen <[hidden email]> 于2021年6月12日周六 下午5:56写道: > 需求背景: > 因为不同Flink版本SQL底层实现不相同,同一个带状态的Flink SQL作业目前跨版本升级社区还不支持。所以如果基于Flink > SQL开发实时计算平台的话,平台需要支持不同Flink版本。早期的Flink SQL作业用的是1.11,最新的Flink > SQL作业采用的是1.13开发的。 > > > 而让平台支持不同Flink版本,我能想到有三种实现方案: > > > 1. 平台直接调用 flink run 或 flink run-application 提交作业 > 优点:实现简单,每个flink版本都会带这个shell脚本 > > 缺点:受限于脚本提供的功能,像语法检查、格式化sql、获取sql执行计划及sql结构和血缘这些“高级”功能没有在官方脚本中提供(能否完善下呢?),如果要使用的话得自己扩展实现(同样需要自己维护多版本) > > > 2. 平台调用 flink sql gateway 暴露的 restful api 提交作业 > 优点:实现简单,通过gateway屏蔽上层应用调用多版本flink api问题 > 缺点:需要额外扩展开发和部署gateway,目前暂不清楚社区对gateway的定位是什么?只是配合flink jdbc > driver使用么?这两项目目前活跃度都不高 > > > 3. 需要维护多个平台版本,像 flink-sql-connector-hive 支持多版本hive那样 > 优点:现有平台就是基于特定版本flink api开发的,改动小,需要抽取公用接口 > 缺点:需要“复制”平台多份实现以支持不同flink版本,开发和维护量比较大 > > > 目前,我暂时prefer方案2,可能不对,也可能还有更优的我没想到,欢迎各位大佬们给点建议。 > > -- Best Regards Jeff Zhang |
嗯,flink on zeppelin也是一个不错的选择,只是因为现在flink on zeppelin还不支持作业运行在kubernetes上,所以暂时还无法直接使用,未来支持后可以考虑引入。
谢谢大佬给的建议。 在 2021-06-13 07:21:46,"Jeff Zhang" <[hidden email]> 写道: >另外一个选择是flink on zeppelin,可以调用flink on zeppelin的rest api,把zeppelin当做是flink >job server, zeppelin天然支持flink 1.10之后的所有版本。钉钉群:32803524 > >casel.chen <[hidden email]> 于2021年6月12日周六 下午5:56写道: > >> 需求背景: >> 因为不同Flink版本SQL底层实现不相同,同一个带状态的Flink SQL作业目前跨版本升级社区还不支持。所以如果基于Flink >> SQL开发实时计算平台的话,平台需要支持不同Flink版本。早期的Flink SQL作业用的是1.11,最新的Flink >> SQL作业采用的是1.13开发的。 >> >> >> 而让平台支持不同Flink版本,我能想到有三种实现方案: >> >> >> 1. 平台直接调用 flink run 或 flink run-application 提交作业 >> 优点:实现简单,每个flink版本都会带这个shell脚本 >> >> 缺点:受限于脚本提供的功能,像语法检查、格式化sql、获取sql执行计划及sql结构和血缘这些“高级”功能没有在官方脚本中提供(能否完善下呢?),如果要使用的话得自己扩展实现(同样需要自己维护多版本) >> >> >> 2. 平台调用 flink sql gateway 暴露的 restful api 提交作业 >> 优点:实现简单,通过gateway屏蔽上层应用调用多版本flink api问题 >> 缺点:需要额外扩展开发和部署gateway,目前暂不清楚社区对gateway的定位是什么?只是配合flink jdbc >> driver使用么?这两项目目前活跃度都不高 >> >> >> 3. 需要维护多个平台版本,像 flink-sql-connector-hive 支持多版本hive那样 >> 优点:现有平台就是基于特定版本flink api开发的,改动小,需要抽取公用接口 >> 缺点:需要“复制”平台多份实现以支持不同flink版本,开发和维护量比较大 >> >> >> 目前,我暂时prefer方案2,可能不对,也可能还有更优的我没想到,欢迎各位大佬们给点建议。 >> >> > >-- >Best Regards > >Jeff Zhang |
如果不是native k8s的话,现在已经支持了,用remote模式就可以,
https://www.yuque.com/jeffzhangjianfeng/gldg8w/engh3w native k8s的话,社区正在做,这是PR: https://github.com/apache/zeppelin/pull/4116 casel.chen <[hidden email]> 于2021年6月13日周日 上午9:39写道: > 嗯,flink on zeppelin也是一个不错的选择,只是因为现在flink on > zeppelin还不支持作业运行在kubernetes上,所以暂时还无法直接使用,未来支持后可以考虑引入。 > 谢谢大佬给的建议。 > > > > > > > > > > > > > > > > > > 在 2021-06-13 07:21:46,"Jeff Zhang" <[hidden email]> 写道: > >另外一个选择是flink on zeppelin,可以调用flink on zeppelin的rest api,把zeppelin当做是flink > >job server, zeppelin天然支持flink 1.10之后的所有版本。钉钉群:32803524 > > > >casel.chen <[hidden email]> 于2021年6月12日周六 下午5:56写道: > > > >> 需求背景: > >> 因为不同Flink版本SQL底层实现不相同,同一个带状态的Flink SQL作业目前跨版本升级社区还不支持。所以如果基于Flink > >> SQL开发实时计算平台的话,平台需要支持不同Flink版本。早期的Flink SQL作业用的是1.11,最新的Flink > >> SQL作业采用的是1.13开发的。 > >> > >> > >> 而让平台支持不同Flink版本,我能想到有三种实现方案: > >> > >> > >> 1. 平台直接调用 flink run 或 flink run-application 提交作业 > >> 优点:实现简单,每个flink版本都会带这个shell脚本 > >> > >> > 缺点:受限于脚本提供的功能,像语法检查、格式化sql、获取sql执行计划及sql结构和血缘这些“高级”功能没有在官方脚本中提供(能否完善下呢?),如果要使用的话得自己扩展实现(同样需要自己维护多版本) > >> > >> > >> 2. 平台调用 flink sql gateway 暴露的 restful api 提交作业 > >> 优点:实现简单,通过gateway屏蔽上层应用调用多版本flink api问题 > >> 缺点:需要额外扩展开发和部署gateway,目前暂不清楚社区对gateway的定位是什么?只是配合flink jdbc > >> driver使用么?这两项目目前活跃度都不高 > >> > >> > >> 3. 需要维护多个平台版本,像 flink-sql-connector-hive 支持多版本hive那样 > >> 优点:现有平台就是基于特定版本flink api开发的,改动小,需要抽取公用接口 > >> 缺点:需要“复制”平台多份实现以支持不同flink版本,开发和维护量比较大 > >> > >> > >> 目前,我暂时prefer方案2,可能不对,也可能还有更优的我没想到,欢迎各位大佬们给点建议。 > >> > >> > > > >-- > >Best Regards > > > >Jeff Zhang > -- Best Regards Jeff Zhang |
好的,我先尝试使用一下,谢谢! 在 2021-06-13 10:43:12,"Jeff Zhang" <[hidden email]> 写道: >如果不是native k8s的话,现在已经支持了,用remote模式就可以, >https://www.yuque.com/jeffzhangjianfeng/gldg8w/engh3w >native k8s的话,社区正在做,这是PR: https://github.com/apache/zeppelin/pull/4116 > > >casel.chen <[hidden email]> 于2021年6月13日周日 上午9:39写道: > >> 嗯,flink on zeppelin也是一个不错的选择,只是因为现在flink on >> zeppelin还不支持作业运行在kubernetes上,所以暂时还无法直接使用,未来支持后可以考虑引入。 >> 谢谢大佬给的建议。 >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> 在 2021-06-13 07:21:46,"Jeff Zhang" <[hidden email]> 写道: >> >另外一个选择是flink on zeppelin,可以调用flink on zeppelin的rest api,把zeppelin当做是flink >> >job server, zeppelin天然支持flink 1.10之后的所有版本。钉钉群:32803524 >> > >> >casel.chen <[hidden email]> 于2021年6月12日周六 下午5:56写道: >> > >> >> 需求背景: >> >> 因为不同Flink版本SQL底层实现不相同,同一个带状态的Flink SQL作业目前跨版本升级社区还不支持。所以如果基于Flink >> >> SQL开发实时计算平台的话,平台需要支持不同Flink版本。早期的Flink SQL作业用的是1.11,最新的Flink >> >> SQL作业采用的是1.13开发的。 >> >> >> >> >> >> 而让平台支持不同Flink版本,我能想到有三种实现方案: >> >> >> >> >> >> 1. 平台直接调用 flink run 或 flink run-application 提交作业 >> >> 优点:实现简单,每个flink版本都会带这个shell脚本 >> >> >> >> >> 缺点:受限于脚本提供的功能,像语法检查、格式化sql、获取sql执行计划及sql结构和血缘这些“高级”功能没有在官方脚本中提供(能否完善下呢?),如果要使用的话得自己扩展实现(同样需要自己维护多版本) >> >> >> >> >> >> 2. 平台调用 flink sql gateway 暴露的 restful api 提交作业 >> >> 优点:实现简单,通过gateway屏蔽上层应用调用多版本flink api问题 >> >> 缺点:需要额外扩展开发和部署gateway,目前暂不清楚社区对gateway的定位是什么?只是配合flink jdbc >> >> driver使用么?这两项目目前活跃度都不高 >> >> >> >> >> >> 3. 需要维护多个平台版本,像 flink-sql-connector-hive 支持多版本hive那样 >> >> 优点:现有平台就是基于特定版本flink api开发的,改动小,需要抽取公用接口 >> >> 缺点:需要“复制”平台多份实现以支持不同flink版本,开发和维护量比较大 >> >> >> >> >> >> 目前,我暂时prefer方案2,可能不对,也可能还有更优的我没想到,欢迎各位大佬们给点建议。 >> >> >> >> >> > >> >-- >> >Best Regards >> > >> >Jeff Zhang >> > > >-- >Best Regards > >Jeff Zhang |
In reply to this post by casel.chen
补充一种使用Flink api提交方式,参考:https://github.com/todd5167/flink-spark-submiter。
任务提交、状态获取继承统一的接口,上层服务在引用时,通过spi的方式进行加载即可。 缺点: - 需要对Flink client源码、类加载机制有了解。 优点: - 良好的外部集成 - 不需要额外部署服务 -- Sent from: http://apache-flink.147419.n8.nabble.com/ |
我写了一个开源的FlinkSql WebIDE,可以在线开发、预览、调试 FlinkSQL,也可以提交SQL到集群,和SqlCli相似,此外还具有一些增强的特性,刚开始写。链接 https://github.com/DataLinkDC/dlink,欢迎感兴趣的大佬批评指正。
------------------ 原始邮件 ------------------ 发件人: "todd"<[hidden email]>; 发送时间: 2021年6月16日(星期三) 下午5:48 收件人: "user-zh"<[hidden email]>; 主题: Re: flink sql平台多版本支持问题 补充一种使用Flink api提交方式,参考:https://github.com/todd5167/flink-spark-submiter。 任务提交、状态获取继承统一的接口,上层服务在引用时,通过spi的方式进行加载即可。 缺点: - 需要对Flink client源码、类加载机制有了解。 优点: - 良好的外部集成 - 不需要额外部署服务 -- Sent from: http://apache-flink.147419.n8.nabble.com/ |
Free forum by Nabble | Edit this page |