Re: 【Flink的shuffle Mode】
Hi, 在Datastream api之中我们可以控制shuffle的模式[1],但是在Table api 似乎暂时还不提供控制shuffle mode的接口。 我对join算子的实现不太熟悉,这个需要shuffle吗?对于agg操作,它的partition模式是由group by的key控制的。 [1] https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/stream/operators/#physical-partitioning 忝忝向仧 <153488...@qq.com> 于2020年10月6日周二 下午6:04写道: > Hi,all: > > > debug跟踪flink 1.10.0的源码,比如一个简单的join操作. > > 我看源码生成的StreamNode里面,shufflemode都是undefined的,也就是说flink的默认shuffle是undefined的吗? > > > shuffleMode=UNDEFINED > > > > > 谢谢.
回复:【Flink的shuffle mode】
补充: 1.11的shuffle-mode配置的默认值为ALL_EDGES_BLOCKING 共有 ALL_EDGES_BLOCKING(等同于batch) FORWARD_EDGES_PIPELINEDPOINTWISE_EDGES_PIPELINED ALL_EDGES_PIPELINED(等同于pipelined)对于pipelined多出了两种选择 -- 发件人:忝忝向仧 <153488...@qq.com> 发送时间:2020年7月7日(星期二) 23:37 收件人:user-zh 主 题:回复: 【Flink的shuffle mode】 如果是批的模式,怎么在应用程序里面指定shuffle_mode呢? 另外,下面提到如果是流的计算,一定是pipeline模式. 那为什么我使用datastream做keyby流操作后,跟踪源码它的mode是UNDEFINED呢? 谢谢. --原始邮件-- 发件人:"Jingsong Li"
回复:【Flink的shuffle mode】
你好: 问题1,指定shuffle_mode tEnv.getConfig.getConfiguration.setString(ExecutionConfigOptions.TABLE_EXEC_SHUFFLE_MODE, "pipeline") 问题2,mode是UNDEFINED的概念 使用UNDEFINED并不是说模式没有定义,而是由框架自己决定 The shuffle mode is undefined. It leaves it up to the framework to decide the shuffle mode. -- 发件人:忝忝向仧 <153488...@qq.com> 发送时间:2020年7月7日(星期二) 23:37 收件人:user-zh 主 题:回复: 【Flink的shuffle mode】 如果是批的模式,怎么在应用程序里面指定shuffle_mode呢? 另外,下面提到如果是流的计算,一定是pipeline模式. 那为什么我使用datastream做keyby流操作后,跟踪源码它的mode是UNDEFINED呢? 谢谢. --原始邮件-- 发件人:"Jingsong Li"
回复:【Flink的shuffle mode】
你好,可以参考下ExecutionConfigOptions,OptimizerConfigOptions和GlobalConfiguration,里面有比较清楚地介绍 -- 发件人:忝忝向仧 <153488...@qq.com> 发送时间:2020年7月6日(星期一) 12:16 收件人:user-zh 主 题:回复:【Flink的shuffle mode】 那就是说datasream默认模式就是pipeline,而批模式是batch,批的模式是存在shuffle情况下,需要等shuffle操作造成,才能发送到下游.那如果批应用有shuffle操作和没有shuffle的,是都要等这个shuffle操作完成了才能一起发给下游,还是说其他非shuffle操作完成了可以先发给下游,不用等shuffle操作完成一起再发送? 发自我的iPhone -- 原始邮件 -- 发件人: Jingsong Li
Re: 【Flink的shuffle mode】
pipeline:直接走网络传输,不buffer所有数据 batch:buffer所有数据,结束后一起发送 流一定是pipeline 批可以是pipeline(更好的性能),也可以是batch(更好的容错和更简单的资源申请) Best, Jingsong On Mon, Jul 6, 2020 at 12:16 PM 忝忝向仧 <153488...@qq.com> wrote: > > 那就是说datasream默认模式就是pipeline,而批模式是batch,批的模式是存在shuffle情况下,需要等shuffle操作造成,才能发送到下游.那如果批应用有shuffle操作和没有shuffle的,是都要等这个shuffle操作完成了才能一起发给下游,还是说其他非shuffle操作完成了可以先发给下游,不用等shuffle操作完成一起再发送? > > > > 发自我的iPhone > > > -- 原始邮件 -- > 发件人: Jingsong Li 发送时间: 2020年7月6日 11:03 > 收件人: user-zh 主题: 回复:【Flink的shuffle mode】 > > > > Hi, > > 现在就两种:pipeline和batch > > batch的话是block住,直到执行完毕才发给下游的,所以这个shuffle mode一般只对批作业有用。 > > 理论上可以per transformation的来设置,see PartitionTransformation. > > Best, > Jingsong > > On Sun, Jul 5, 2020 at 10:48 PM 忝忝向仧 <153488...@qq.com wrote: > > Hi,all: > > > 看Flink源码时候,在应用中使用keyBy后,源码的transformations会有shuffle mode方法,这个shuffle > mode看是UNDEFINED的。 > 那么,shuffle mode有哪些方式?在应用里面可以设置么? > > > 谢谢. > > > > -- > Best, Jingsong Lee -- Best, Jingsong Lee
回复:【Flink的shuffle mode】
那就是说datasream默认模式就是pipeline,而批模式是batch,批的模式是存在shuffle情况下,需要等shuffle操作造成,才能发送到下游.那如果批应用有shuffle操作和没有shuffle的,是都要等这个shuffle操作完成了才能一起发给下游,还是说其他非shuffle操作完成了可以先发给下游,不用等shuffle操作完成一起再发送? 发自我的iPhone -- 原始邮件 -- 发件人: Jingsong Li
Re: 【Flink的shuffle mode】
Hi, 现在就两种:pipeline和batch batch的话是block住,直到执行完毕才发给下游的,所以这个shuffle mode一般只对批作业有用。 理论上可以per transformation的来设置,see PartitionTransformation. Best, Jingsong On Sun, Jul 5, 2020 at 10:48 PM 忝忝向仧 <153488...@qq.com> wrote: > Hi,all: > > > 看Flink源码时候,在应用中使用keyBy后,源码的transformations会有shuffle mode方法,这个shuffle > mode看是UNDEFINED的。 > 那么,shuffle mode有哪些方式?在应用里面可以设置么? > > > 谢谢. -- Best, Jingsong Lee