flink sql平台多版本支持问题

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

flink sql平台多版本支持问题

casel.chen
需求背景:
因为不同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,可能不对,也可能还有更优的我没想到,欢迎各位大佬们给点建议。

Reply | Threaded
Open this post in threaded view
|

Re: flink sql平台多版本支持问题

Jeff Zhang
另外一个选择是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
Reply | Threaded
Open this post in threaded view
|

Re:Re: flink sql平台多版本支持问题

casel.chen
嗯,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
Reply | Threaded
Open this post in threaded view
|

Re: Re: flink sql平台多版本支持问题

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
Reply | Threaded
Open this post in threaded view
|

Re: flink sql平台多版本支持问题

casel.chen



好的,我先尝试使用一下,谢谢!














在 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
Reply | Threaded
Open this post in threaded view
|

Re: flink sql平台多版本支持问题

todd
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/
Reply | Threaded
Open this post in threaded view
|

回复: flink sql平台多版本支持问题

文末丶
我写了一个开源的FlinkSql WebIDE,可以在线开发、预览、调试 FlinkSQL,也可以提交SQL到集群,和SqlCli相似,此外还具有一些增强的特性,刚开始写。链接 https://github.com/DataLinkDC/dlink,欢迎感兴趣的大佬批评指正。




------------------&nbsp;原始邮件&nbsp;------------------
发件人: "todd"<[hidden email]&gt;;
发送时间: 2021年6月16日(星期三) 下午5:48
收件人: "user-zh"<[hidden email]&gt;;
主题: Re: flink sql平台多版本支持问题



补充一种使用Flink api提交方式,参考:https://github.com/todd5167/flink-spark-submiter。

任务提交、状态获取继承统一的接口,上层服务在引用时,通过spi的方式进行加载即可。

缺点:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - 需要对Flink client源码、类加载机制有了解。
优点:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - 良好的外部集成
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - 不需要额外部署服务



--
Sent from: http://apache-flink.147419.n8.nabble.com/