Re: 【Flink的shuffle Mode】

2020-10-06 文章 Shengkai Fang
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】

2020-07-07 文章 夏帅
补充: 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】

2020-07-07 文章 夏帅
你好:
问题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】

2020-07-05 文章 夏帅
你好,可以参考下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】

2020-07-05 文章 Jingsong Li
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】

2020-07-05 文章 忝忝向仧
那就是说datasream默认模式就是pipeline,而批模式是batch,批的模式是存在shuffle情况下,需要等shuffle操作造成,才能发送到下游.那如果批应用有shuffle操作和没有shuffle的,是都要等这个shuffle操作完成了才能一起发给下游,还是说其他非shuffle操作完成了可以先发给下游,不用等shuffle操作完成一起再发送?



发自我的iPhone


-- 原始邮件 --
发件人: Jingsong Li 

Re: 【Flink的shuffle mode】

2020-07-05 文章 Jingsong Li
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