【Flink的shuffle mode】

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

【Flink的shuffle mode】

忝忝向仧
Hi,all:


看Flink源码时候,在应用中使用keyBy后,源码的transformations会有shuffle mode方法,这个shuffle mode看是UNDEFINED的。
那么,shuffle mode有哪些方式?在应用里面可以设置么?


谢谢.
Reply | Threaded
Open this post in threaded view
|

Re: 【Flink的shuffle mode】

Jingsong Li
Hi,

现在就两种:pipeline和batch

batch的话是block住,直到执行完毕才发给下游的,所以这个shuffle mode一般只对批作业有用。

理论上可以per transformation的来设置,see PartitionTransformation.

Best,
Jingsong

On Sun, Jul 5, 2020 at 10:48 PM 忝忝向仧 <[hidden email]> wrote:

> Hi,all:
>
>
> 看Flink源码时候,在应用中使用keyBy后,源码的transformations会有shuffle mode方法,这个shuffle
> mode看是UNDEFINED的。
> 那么,shuffle mode有哪些方式?在应用里面可以设置么?
>
>
> 谢谢.



--
Best, Jingsong Lee
Reply | Threaded
Open this post in threaded view
|

回复:【Flink的shuffle mode】

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



发自我的iPhone


------------------ 原始邮件 ------------------
发件人: Jingsong Li <[hidden email]&gt;
发送时间: 2020年7月6日 11:03
收件人: user-zh <[hidden email]&gt;
主题: 回复:【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 忝忝向仧 <[hidden email]&gt; wrote:

&gt; Hi,all:
&gt;
&gt;
&gt; 看Flink源码时候,在应用中使用keyBy后,源码的transformations会有shuffle mode方法,这个shuffle
&gt; mode看是UNDEFINED的。
&gt; 那么,shuffle mode有哪些方式?在应用里面可以设置么?
&gt;
&gt;
&gt; 谢谢.



--
Best, Jingsong Lee
Reply | Threaded
Open this post in threaded view
|

Re: 【Flink的shuffle mode】

Jingsong Li
pipeline:直接走网络传输,不buffer所有数据
batch:buffer所有数据,结束后一起发送

流一定是pipeline
批可以是pipeline(更好的性能),也可以是batch(更好的容错和更简单的资源申请)

Best,
Jingsong

On Mon, Jul 6, 2020 at 12:16 PM 忝忝向仧 <[hidden email]> wrote:

>
> 那就是说datasream默认模式就是pipeline,而批模式是batch,批的模式是存在shuffle情况下,需要等shuffle操作造成,才能发送到下游.那如果批应用有shuffle操作和没有shuffle的,是都要等这个shuffle操作完成了才能一起发给下游,还是说其他非shuffle操作完成了可以先发给下游,不用等shuffle操作完成一起再发送?
>
>
>
> 发自我的iPhone
>
>
> ------------------ 原始邮件 ------------------
> 发件人: Jingsong Li <[hidden email]&gt;
> 发送时间: 2020年7月6日 11:03
> 收件人: user-zh <[hidden email]&gt;
> 主题: 回复:【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 忝忝向仧 <[hidden email]&gt; wrote:
>
> &gt; Hi,all:
> &gt;
> &gt;
> &gt; 看Flink源码时候,在应用中使用keyBy后,源码的transformations会有shuffle mode方法,这个shuffle
> &gt; mode看是UNDEFINED的。
> &gt; 那么,shuffle mode有哪些方式?在应用里面可以设置么?
> &gt;
> &gt;
> &gt; 谢谢.
>
>
>
> --
> Best, Jingsong Lee



--
Best, Jingsong Lee
Reply | Threaded
Open this post in threaded view
|

回复:【Flink的shuffle mode】

Shuai Xia
In reply to this post by 忝忝向仧
你好,可以参考下ExecutionConfigOptions,OptimizerConfigOptions和GlobalConfiguration,里面有比较清楚地介绍




------------------------------------------------------------------
发件人:忝忝向仧 <[hidden email]>
发送时间:2020年7月6日(星期一) 12:16
收件人:user-zh <[hidden email]>
主 题:回复:【Flink的shuffle mode】

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



发自我的iPhone


------------------ 原始邮件 ------------------
发件人: Jingsong Li <[hidden email]&gt;
发送时间: 2020年7月6日 11:03
收件人: user-zh <[hidden email]&gt;
主题: 回复:【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 忝忝向仧 <[hidden email]&gt; wrote:

&gt; Hi,all:
&gt;
&gt;
&gt; 看Flink源码时候,在应用中使用keyBy后,源码的transformations会有shuffle mode方法,这个shuffle
&gt; mode看是UNDEFINED的。
&gt; 那么,shuffle mode有哪些方式?在应用里面可以设置么?
&gt;
&gt;
&gt; 谢谢.



--
Best, Jingsong Lee
Reply | Threaded
Open this post in threaded view
|

回复: 【Flink的shuffle mode】

忝忝向仧
In reply to this post by Jingsong Li
如果是批的模式,怎么在应用程序里面指定shuffle_mode呢?
另外,下面提到如果是流的计算,一定是pipeline模式.
那为什么我使用datastream做keyby流操作后,跟踪源码它的mode是UNDEFINED呢?
谢谢.




------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"Jingsong Li"<[hidden email]&gt;;
发送时间:&nbsp;2020年7月6日(星期一) 中午12:19
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;Re: 【Flink的shuffle mode】



pipeline:直接走网络传输,不buffer所有数据
batch:buffer所有数据,结束后一起发送

流一定是pipeline
批可以是pipeline(更好的性能),也可以是batch(更好的容错和更简单的资源申请)

Best,
Jingsong

On Mon, Jul 6, 2020 at 12:16 PM 忝忝向仧 <[hidden email]&gt; wrote:

&gt;
&gt; 那就是说datasream默认模式就是pipeline,而批模式是batch,批的模式是存在shuffle情况下,需要等shuffle操作造成,才能发送到下游.那如果批应用有shuffle操作和没有shuffle的,是都要等这个shuffle操作完成了才能一起发给下游,还是说其他非shuffle操作完成了可以先发给下游,不用等shuffle操作完成一起再发送?
&gt;
&gt;
&gt;
&gt; 发自我的iPhone
&gt;
&gt;
&gt; ------------------ 原始邮件 ------------------
&gt; 发件人: Jingsong Li <[hidden email]&amp;gt;
&gt; 发送时间: 2020年7月6日 11:03
&gt; 收件人: user-zh <[hidden email]&amp;gt;
&gt; 主题: 回复:【Flink的shuffle mode】
&gt;
&gt;
&gt;
&gt; Hi,
&gt;
&gt; 现在就两种:pipeline和batch
&gt;
&gt; batch的话是block住,直到执行完毕才发给下游的,所以这个shuffle mode一般只对批作业有用。
&gt;
&gt; 理论上可以per transformation的来设置,see PartitionTransformation.
&gt;
&gt; Best,
&gt; Jingsong
&gt;
&gt; On Sun, Jul 5, 2020 at 10:48 PM 忝忝向仧 <[hidden email]&amp;gt; wrote:
&gt;
&gt; &amp;gt; Hi,all:
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; 看Flink源码时候,在应用中使用keyBy后,源码的transformations会有shuffle mode方法,这个shuffle
&gt; &amp;gt; mode看是UNDEFINED的。
&gt; &amp;gt; 那么,shuffle mode有哪些方式?在应用里面可以设置么?
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; 谢谢.
&gt;
&gt;
&gt;
&gt; --
&gt; Best, Jingsong Lee



--
Best, Jingsong Lee
Reply | Threaded
Open this post in threaded view
|

回复:【Flink的shuffle mode】

Shuai Xia
你好:
问题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.



------------------------------------------------------------------
发件人:忝忝向仧 <[hidden email]>
发送时间:2020年7月7日(星期二) 23:37
收件人:user-zh <[hidden email]>
主 题:回复: 【Flink的shuffle mode】

如果是批的模式,怎么在应用程序里面指定shuffle_mode呢?
另外,下面提到如果是流的计算,一定是pipeline模式.
那为什么我使用datastream做keyby流操作后,跟踪源码它的mode是UNDEFINED呢?
谢谢.




------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"Jingsong Li"<[hidden email]&gt;;
发送时间:&nbsp;2020年7月6日(星期一) 中午12:19
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;Re: 【Flink的shuffle mode】



pipeline:直接走网络传输,不buffer所有数据
batch:buffer所有数据,结束后一起发送

流一定是pipeline
批可以是pipeline(更好的性能),也可以是batch(更好的容错和更简单的资源申请)

Best,
Jingsong

On Mon, Jul 6, 2020 at 12:16 PM 忝忝向仧 <[hidden email]&gt; wrote:

&gt;
&gt; 那就是说datasream默认模式就是pipeline,而批模式是batch,批的模式是存在shuffle情况下,需要等shuffle操作造成,才能发送到下游.那如果批应用有shuffle操作和没有shuffle的,是都要等这个shuffle操作完成了才能一起发给下游,还是说其他非shuffle操作完成了可以先发给下游,不用等shuffle操作完成一起再发送?
&gt;
&gt;
&gt;
&gt; 发自我的iPhone
&gt;
&gt;
&gt; ------------------ 原始邮件 ------------------
&gt; 发件人: Jingsong Li <[hidden email]&amp;gt;
&gt; 发送时间: 2020年7月6日 11:03
&gt; 收件人: user-zh <[hidden email]&amp;gt;
&gt; 主题: 回复:【Flink的shuffle mode】
&gt;
&gt;
&gt;
&gt; Hi,
&gt;
&gt; 现在就两种:pipeline和batch
&gt;
&gt; batch的话是block住,直到执行完毕才发给下游的,所以这个shuffle mode一般只对批作业有用。
&gt;
&gt; 理论上可以per transformation的来设置,see PartitionTransformation.
&gt;
&gt; Best,
&gt; Jingsong
&gt;
&gt; On Sun, Jul 5, 2020 at 10:48 PM 忝忝向仧 <[hidden email]&amp;gt; wrote:
&gt;
&gt; &amp;gt; Hi,all:
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; 看Flink源码时候,在应用中使用keyBy后,源码的transformations会有shuffle mode方法,这个shuffle
&gt; &amp;gt; mode看是UNDEFINED的。
&gt; &amp;gt; 那么,shuffle mode有哪些方式?在应用里面可以设置么?
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; 谢谢.
&gt;
&gt;
&gt;
&gt; --
&gt; Best, Jingsong Lee



--
Best, Jingsong Lee
Reply | Threaded
Open this post in threaded view
|

回复:【Flink的shuffle mode】

Shuai Xia
In reply to this post by 忝忝向仧
补充: 1.11的shuffle-mode配置的默认值为ALL_EDGES_BLOCKING
共有
ALL_EDGES_BLOCKING(等同于batch)
FORWARD_EDGES_PIPELINEDPOINTWISE_EDGES_PIPELINED
ALL_EDGES_PIPELINED(等同于pipelined)对于pipelined多出了两种选择


------------------------------------------------------------------
发件人:忝忝向仧 <[hidden email]>
发送时间:2020年7月7日(星期二) 23:37
收件人:user-zh <[hidden email]>
主 题:回复: 【Flink的shuffle mode】

如果是批的模式,怎么在应用程序里面指定shuffle_mode呢?
另外,下面提到如果是流的计算,一定是pipeline模式.
那为什么我使用datastream做keyby流操作后,跟踪源码它的mode是UNDEFINED呢?
谢谢.




------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"Jingsong Li"<[hidden email]&gt;;
发送时间:&nbsp;2020年7月6日(星期一) 中午12:19
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;Re: 【Flink的shuffle mode】



pipeline:直接走网络传输,不buffer所有数据
batch:buffer所有数据,结束后一起发送

流一定是pipeline
批可以是pipeline(更好的性能),也可以是batch(更好的容错和更简单的资源申请)

Best,
Jingsong

On Mon, Jul 6, 2020 at 12:16 PM 忝忝向仧 <[hidden email]&gt; wrote:

&gt;
&gt; 那就是说datasream默认模式就是pipeline,而批模式是batch,批的模式是存在shuffle情况下,需要等shuffle操作造成,才能发送到下游.那如果批应用有shuffle操作和没有shuffle的,是都要等这个shuffle操作完成了才能一起发给下游,还是说其他非shuffle操作完成了可以先发给下游,不用等shuffle操作完成一起再发送?
&gt;
&gt;
&gt;
&gt; 发自我的iPhone
&gt;
&gt;
&gt; ------------------ 原始邮件 ------------------
&gt; 发件人: Jingsong Li <[hidden email]&amp;gt;
&gt; 发送时间: 2020年7月6日 11:03
&gt; 收件人: user-zh <[hidden email]&amp;gt;
&gt; 主题: 回复:【Flink的shuffle mode】
&gt;
&gt;
&gt;
&gt; Hi,
&gt;
&gt; 现在就两种:pipeline和batch
&gt;
&gt; batch的话是block住,直到执行完毕才发给下游的,所以这个shuffle mode一般只对批作业有用。
&gt;
&gt; 理论上可以per transformation的来设置,see PartitionTransformation.
&gt;
&gt; Best,
&gt; Jingsong
&gt;
&gt; On Sun, Jul 5, 2020 at 10:48 PM 忝忝向仧 <[hidden email]&amp;gt; wrote:
&gt;
&gt; &amp;gt; Hi,all:
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; 看Flink源码时候,在应用中使用keyBy后,源码的transformations会有shuffle mode方法,这个shuffle
&gt; &amp;gt; mode看是UNDEFINED的。
&gt; &amp;gt; 那么,shuffle mode有哪些方式?在应用里面可以设置么?
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; 谢谢.
&gt;
&gt;
&gt;
&gt; --
&gt; Best, Jingsong Lee



--
Best, Jingsong Lee