You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by 忝忝向仧 <15...@qq.com> on 2020/07/05 14:47:40 UTC
【Flink的shuffle mode】
Hi,all:
看Flink源码时候,在应用中使用keyBy后,源码的transformations会有shuffle mode方法,这个shuffle mode看是UNDEFINED的。
那么,shuffle mode有哪些方式?在应用里面可以设置么?
谢谢.
回复:【Flink的shuffle mode】
Posted by 夏帅 <jk...@dingtalk.com.INVALID>.
你好,可以参考下ExecutionConfigOptions,OptimizerConfigOptions和GlobalConfiguration,里面有比较清楚地介绍
------------------------------------------------------------------
发件人:忝忝向仧 <15...@qq.com>
发送时间:2020年7月6日(星期一) 12:16
收件人:user-zh <us...@flink.apache.org>
主 题:回复:【Flink的shuffle mode】
那就是说datasream默认模式就是pipeline,而批模式是batch,批的模式是存在shuffle情况下,需要等shuffle操作造成,才能发送到下游.那如果批应用有shuffle操作和没有shuffle的,是都要等这个shuffle操作完成了才能一起发给下游,还是说其他非shuffle操作完成了可以先发给下游,不用等shuffle操作完成一起再发送?
发自我的iPhone
------------------ 原始邮件 ------------------
发件人: Jingsong Li <jingsonglee0@gmail.com>
发送时间: 2020年7月6日 11:03
收件人: user-zh <user-zh@flink.apache.org>
主题: 回复:【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 忝忝向仧 <153488125@qq.com> wrote:
> Hi,all:
>
>
> 看Flink源码时候,在应用中使用keyBy后,源码的transformations会有shuffle mode方法,这个shuffle
> mode看是UNDEFINED的。
> 那么,shuffle mode有哪些方式?在应用里面可以设置么?
>
>
> 谢谢.
--
Best, Jingsong Lee
回复:【Flink的shuffle mode】
Posted by 夏帅 <jk...@dingtalk.com.INVALID>.
补充: 1.11的shuffle-mode配置的默认值为ALL_EDGES_BLOCKING
共有
ALL_EDGES_BLOCKING(等同于batch)
FORWARD_EDGES_PIPELINEDPOINTWISE_EDGES_PIPELINED
ALL_EDGES_PIPELINED(等同于pipelined)对于pipelined多出了两种选择
------------------------------------------------------------------
发件人:忝忝向仧 <15...@qq.com>
发送时间:2020年7月7日(星期二) 23:37
收件人:user-zh <us...@flink.apache.org>
主 题:回复: 【Flink的shuffle mode】
如果是批的模式,怎么在应用程序里面指定shuffle_mode呢?
另外,下面提到如果是流的计算,一定是pipeline模式.
那为什么我使用datastream做keyby流操作后,跟踪源码它的mode是UNDEFINED呢?
谢谢.
------------------ 原始邮件 ------------------
发件人: "Jingsong Li"<jingsonglee0@gmail.com>;
发送时间: 2020年7月6日(星期一) 中午12:19
收件人: "user-zh"<user-zh@flink.apache.org>;
主题: Re: 【Flink的shuffle mode】
pipeline:直接走网络传输,不buffer所有数据
batch:buffer所有数据,结束后一起发送
流一定是pipeline
批可以是pipeline(更好的性能),也可以是batch(更好的容错和更简单的资源申请)
Best,
Jingsong
On Mon, Jul 6, 2020 at 12:16 PM 忝忝向仧 <153488125@qq.com> wrote:
>
> 那就是说datasream默认模式就是pipeline,而批模式是batch,批的模式是存在shuffle情况下,需要等shuffle操作造成,才能发送到下游.那如果批应用有shuffle操作和没有shuffle的,是都要等这个shuffle操作完成了才能一起发给下游,还是说其他非shuffle操作完成了可以先发给下游,不用等shuffle操作完成一起再发送?
>
>
>
> 发自我的iPhone
>
>
> ------------------ 原始邮件 ------------------
> 发件人: Jingsong Li <jingsonglee0@gmail.com&gt;
> 发送时间: 2020年7月6日 11:03
> 收件人: user-zh <user-zh@flink.apache.org&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 忝忝向仧 <153488125@qq.com&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
回复:【Flink的shuffle mode】
Posted by 夏帅 <jk...@dingtalk.com.INVALID>.
你好:
问题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.
------------------------------------------------------------------
发件人:忝忝向仧 <15...@qq.com>
发送时间:2020年7月7日(星期二) 23:37
收件人:user-zh <us...@flink.apache.org>
主 题:回复: 【Flink的shuffle mode】
如果是批的模式,怎么在应用程序里面指定shuffle_mode呢?
另外,下面提到如果是流的计算,一定是pipeline模式.
那为什么我使用datastream做keyby流操作后,跟踪源码它的mode是UNDEFINED呢?
谢谢.
------------------ 原始邮件 ------------------
发件人: "Jingsong Li"<jingsonglee0@gmail.com>;
发送时间: 2020年7月6日(星期一) 中午12:19
收件人: "user-zh"<user-zh@flink.apache.org>;
主题: Re: 【Flink的shuffle mode】
pipeline:直接走网络传输,不buffer所有数据
batch:buffer所有数据,结束后一起发送
流一定是pipeline
批可以是pipeline(更好的性能),也可以是batch(更好的容错和更简单的资源申请)
Best,
Jingsong
On Mon, Jul 6, 2020 at 12:16 PM 忝忝向仧 <153488125@qq.com> wrote:
>
> 那就是说datasream默认模式就是pipeline,而批模式是batch,批的模式是存在shuffle情况下,需要等shuffle操作造成,才能发送到下游.那如果批应用有shuffle操作和没有shuffle的,是都要等这个shuffle操作完成了才能一起发给下游,还是说其他非shuffle操作完成了可以先发给下游,不用等shuffle操作完成一起再发送?
>
>
>
> 发自我的iPhone
>
>
> ------------------ 原始邮件 ------------------
> 发件人: Jingsong Li <jingsonglee0@gmail.com&gt;
> 发送时间: 2020年7月6日 11:03
> 收件人: user-zh <user-zh@flink.apache.org&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 忝忝向仧 <153488125@qq.com&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
回复: 【Flink的shuffle mode】
Posted by 忝忝向仧 <15...@qq.com>.
如果是批的模式,怎么在应用程序里面指定shuffle_mode呢?
另外,下面提到如果是流的计算,一定是pipeline模式.
那为什么我使用datastream做keyby流操作后,跟踪源码它的mode是UNDEFINED呢?
谢谢.
------------------ 原始邮件 ------------------
发件人: "Jingsong Li"<jingsonglee0@gmail.com>;
发送时间: 2020年7月6日(星期一) 中午12:19
收件人: "user-zh"<user-zh@flink.apache.org>;
主题: Re: 【Flink的shuffle mode】
pipeline:直接走网络传输,不buffer所有数据
batch:buffer所有数据,结束后一起发送
流一定是pipeline
批可以是pipeline(更好的性能),也可以是batch(更好的容错和更简单的资源申请)
Best,
Jingsong
On Mon, Jul 6, 2020 at 12:16 PM 忝忝向仧 <153488125@qq.com> wrote:
>
> 那就是说datasream默认模式就是pipeline,而批模式是batch,批的模式是存在shuffle情况下,需要等shuffle操作造成,才能发送到下游.那如果批应用有shuffle操作和没有shuffle的,是都要等这个shuffle操作完成了才能一起发给下游,还是说其他非shuffle操作完成了可以先发给下游,不用等shuffle操作完成一起再发送?
>
>
>
> 发自我的iPhone
>
>
> ------------------ 原始邮件 ------------------
> 发件人: Jingsong Li <jingsonglee0@gmail.com&gt;
> 发送时间: 2020年7月6日 11:03
> 收件人: user-zh <user-zh@flink.apache.org&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 忝忝向仧 <153488125@qq.com&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
Re: 【Flink的shuffle mode】
Posted by Jingsong Li <ji...@gmail.com>.
pipeline:直接走网络传输,不buffer所有数据
batch:buffer所有数据,结束后一起发送
流一定是pipeline
批可以是pipeline(更好的性能),也可以是batch(更好的容错和更简单的资源申请)
Best,
Jingsong
On Mon, Jul 6, 2020 at 12:16 PM 忝忝向仧 <15...@qq.com> wrote:
>
> 那就是说datasream默认模式就是pipeline,而批模式是batch,批的模式是存在shuffle情况下,需要等shuffle操作造成,才能发送到下游.那如果批应用有shuffle操作和没有shuffle的,是都要等这个shuffle操作完成了才能一起发给下游,还是说其他非shuffle操作完成了可以先发给下游,不用等shuffle操作完成一起再发送?
>
>
>
> 发自我的iPhone
>
>
> ------------------ 原始邮件 ------------------
> 发件人: Jingsong Li <jingsonglee0@gmail.com>
> 发送时间: 2020年7月6日 11:03
> 收件人: user-zh <user-zh@flink.apache.org>
> 主题: 回复:【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 忝忝向仧 <153488125@qq.com> wrote:
>
> > Hi,all:
> >
> >
> > 看Flink源码时候,在应用中使用keyBy后,源码的transformations会有shuffle mode方法,这个shuffle
> > mode看是UNDEFINED的。
> > 那么,shuffle mode有哪些方式?在应用里面可以设置么?
> >
> >
> > 谢谢.
>
>
>
> --
> Best, Jingsong Lee
--
Best, Jingsong Lee
回复:【Flink的shuffle mode】
Posted by 忝忝向仧 <15...@qq.com>.
那就是说datasream默认模式就是pipeline,而批模式是batch,批的模式是存在shuffle情况下,需要等shuffle操作造成,才能发送到下游.那如果批应用有shuffle操作和没有shuffle的,是都要等这个shuffle操作完成了才能一起发给下游,还是说其他非shuffle操作完成了可以先发给下游,不用等shuffle操作完成一起再发送?
发自我的iPhone
------------------ 原始邮件 ------------------
发件人: Jingsong Li <jingsonglee0@gmail.com>
发送时间: 2020年7月6日 11:03
收件人: user-zh <user-zh@flink.apache.org>
主题: 回复:【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 忝忝向仧 <153488125@qq.com> wrote:
> Hi,all:
>
>
> 看Flink源码时候,在应用中使用keyBy后,源码的transformations会有shuffle mode方法,这个shuffle
> mode看是UNDEFINED的。
> 那么,shuffle mode有哪些方式?在应用里面可以设置么?
>
>
> 谢谢.
--
Best, Jingsong Lee
Re: 【Flink的shuffle mode】
Posted by Jingsong Li <ji...@gmail.com>.
Hi,
现在就两种:pipeline和batch
batch的话是block住,直到执行完毕才发给下游的,所以这个shuffle mode一般只对批作业有用。
理论上可以per transformation的来设置,see PartitionTransformation.
Best,
Jingsong
On Sun, Jul 5, 2020 at 10:48 PM 忝忝向仧 <15...@qq.com> wrote:
> Hi,all:
>
>
> 看Flink源码时候,在应用中使用keyBy后,源码的transformations会有shuffle mode方法,这个shuffle
> mode看是UNDEFINED的。
> 那么,shuffle mode有哪些方式?在应用里面可以设置么?
>
>
> 谢谢.
--
Best, Jingsong Lee