各位好,我遇到了一个奇怪的问题
我是使用flink1.10和 flink-connector-kafka_2.11 使用Flink on yarn 模式运行,无论怎么调大并行度。Kafka节点(我使用的单节点)的网卡输出速度一直上不去。 但是提交两个同样的应用同样使用FLink on Yarm模式,Kafka节点的网卡输出速度是正常翻倍的。 我想达到的目的不是通过多向yarn集群提交多一个app,而是通过设置并行度来提高应用的吞吐量。。 求各位大佬指导 |
hello,Source节点并行度的有效性是取决于topic对应的分区数的。比如如果你只有6个分区,那你12个并行度和6个并行度的消费速度是一样的。
------------------ 原始邮件 ------------------ 发件人: "user-zh" <[hidden email]>; 发送时间: 2020年9月18日(星期五) 下午4:07 收件人: "[hidden email]"<[hidden email]>; 主题: FlinkKafkaConsumer on Yarn 模式下 设置并行度无法提高kafka的消费速度,但是提交两个应用却可以 各位好,我遇到了一个奇怪的问题 我是使用flink1.10和 flink-connector-kafka_2.11 使用Flink on yarn 模式运行,无论怎么调大并行度。Kafka节点(我使用的单节点)的网卡输出速度一直上不去。 但是提交两个同样的应用同样使用FLink on Yarm模式,Kafka节点的网卡输出速度是正常翻倍的。 我想达到的目的不是通过多向yarn集群提交多一个app,而是通过设置并行度来提高应用的吞吐量。。 求各位大佬指导 |
In reply to this post by 范超
提交两个作业的话,两个作业是完全独立的,都会消费全量数据。
一个作业的消费能力不行,可以具体看下瓶颈在哪里,比如: 1. 作业是否有lag,如果没有lag,那其实是没有问题的 2. 如果作业有lag,而且lag还在上涨,说明当前消费能力不足,此时可以看下作业具体的瓶颈在哪里 有可能是某个算子在反压导致整个作业的消费能力不足 也有可能是作业的整体CPU资源不足导致的 也有一种极端情况是,作业的并发度已经足够大,source subtask已经对应一个kafka partition了,但是消费能力还是不足,这个时候其实是单个partition数据量太大,对应到Flink的source算子处理能力不足导致的 3. 如果作业当前有lag,但是lag在下降,说明消费能力其实是够的,只是数据有些积压 范超 <[hidden email]> 于2020年9月18日周五 下午4:07写道: > 各位好,我遇到了一个奇怪的问题 > > 我是使用flink1.10和 flink-connector-kafka_2.11 > > 使用Flink on yarn 模式运行,无论怎么调大并行度。Kafka节点(我使用的单节点)的网卡输出速度一直上不去。 > > 但是提交两个同样的应用同样使用FLink on Yarm模式,Kafka节点的网卡输出速度是正常翻倍的。 > > 我想达到的目的不是通过多向yarn集群提交多一个app,而是通过设置并行度来提高应用的吞吐量。。 > > 求各位大佬指导 > -- Best, Benchao Li |
In reply to this post by 范超
HI
我理解你的 kafka 生产数据的速度比较慢 你并发设置的再大都是没有用的 正常 source 的并行度设置和 kafka 的 partition 个数相等就可以了 ----- Best Wishes JasonLee -- Sent from: http://apache-flink.147419.n8.nabble.com/
Best Wishes
JasonLee |
In reply to this post by 范超
单个app的网卡输出有上限是因为读取 kafka 的并发是有限的:
对一个 group,为了保证同一 partition 内消息的有序,需要确保同一个 partition 只有一个 consumer.因此你的 partition 个数决定了 consumer 的个数,是有上限的。 多个 app 是多个 group,所以观察到网卡流量也就上来了 所以本质上还是得看下当前是 kafka 消费的瓶颈还是计算时效的问题,如果是前者就增加partition,后者提高并发才有用。 刚接触flink时看到别人的一个情况: 1. kafka partition > flink parallelism,一个 TM 可能处理多个分区 2. kafka partition < flink parallelism,如果没有 rebalance 的话,有的 TM 不会处理数据,估计对应你现在的问题 3. kafka partition = flink parallelism,如果数据在 kafka 就是均匀的话,这种是比较理想的状态。 -- Sent from: http://apache-flink.147419.n8.nabble.com/ |
In reply to this post by Benchao Li-2
谢谢Benchao哥回复。
这几天一直忙着压测这个问题。 经多轮压测(先灌满kafka数据),再去消费。 发现确实是您说的问题中的第三个情况 由于kafka的topic只开了一个partition 所以flinkkafkaconsumer按照一个taskmanger对应了一个kafka的parition的方式进行了处理。从而导致虽然作业并发度够大,但是由于只有一个partition, 其他并发的taskmanager无法获取到更多的partition进行消费,从而导致并行度提升而作业消费能力却无法同比增大。 之后通过建立2个partition的topic,实现了消费能力的翻倍。 想再请多问您一句,我如果想压出作业的极限吞吐量,请问该如何设置一些运行参数,目前我通过设置on yarn 的tm的内存大小,kafka的partition数目,也无法将作业的吞吐量压上去。 -----邮件原件----- 发件人: Benchao Li [mailto:[hidden email]] 发送时间: 2020年9月18日 星期五 18:49 收件人: user-zh <[hidden email]> 主题: Re: FlinkKafkaConsumer on Yarn 模式下 设置并行度无法提高kafka的消费速度,但是提交两个应用却可以 提交两个作业的话,两个作业是完全独立的,都会消费全量数据。 一个作业的消费能力不行,可以具体看下瓶颈在哪里,比如: 1. 作业是否有lag,如果没有lag,那其实是没有问题的 2. 如果作业有lag,而且lag还在上涨,说明当前消费能力不足,此时可以看下作业具体的瓶颈在哪里 有可能是某个算子在反压导致整个作业的消费能力不足 也有可能是作业的整体CPU资源不足导致的 也有一种极端情况是,作业的并发度已经足够大,source subtask已经对应一个kafka partition了,但是消费能力还是不足,这个时候其实是单个partition数据量太大,对应到Flink的source算子处理能力不足导致的 3. 如果作业当前有lag,但是lag在下降,说明消费能力其实是够的,只是数据有些积压 范超 <[hidden email]> 于2020年9月18日周五 下午4:07写道: > 各位好,我遇到了一个奇怪的问题 > > 我是使用flink1.10和 flink-connector-kafka_2.11 > > 使用Flink on yarn 模式运行,无论怎么调大并行度。Kafka节点(我使用的单节点)的网卡输出速度一直上不去。 > > 但是提交两个同样的应用同样使用FLink on Yarm模式,Kafka节点的网卡输出速度是正常翻倍的。 > > 我想达到的目的不是通过多向yarn集群提交多一个app,而是通过设置并行度来提高应用的吞吐量。。 > > 求各位大佬指导 > -- Best, Benchao Li |
In reply to this post by 吴磊-2
感谢磊哥,后来发现确实是这个问题导致。
Source节点的并行度取决于topic的分区数 -----邮件原件----- 发件人: 吴磊 [mailto:[hidden email]] 发送时间: 2020年9月18日 星期五 16:29 收件人: user-zh <[hidden email]> 主题: 回复:FlinkKafkaConsumer on Yarn 模式下 设置并行度无法提高kafka的消费速度,但是提交两个应用却可以 hello,Source节点并行度的有效性是取决于topic对应的分区数的。比如如果你只有6个分区,那你12个并行度和6个并行度的消费速度是一样的。 ------------------ 原始邮件 ------------------ 发件人: "user-zh" <[hidden email]>; 发送时间: 2020年9月18日(星期五) 下午4:07 收件人: "[hidden email]"<[hidden email]>; 主题: FlinkKafkaConsumer on Yarn 模式下 设置并行度无法提高kafka的消费速度,但是提交两个应用却可以 各位好,我遇到了一个奇怪的问题 我是使用flink1.10和 flink-connector-kafka_2.11 使用Flink on yarn 模式运行,无论怎么调大并行度。Kafka节点(我使用的单节点)的网卡输出速度一直上不去。 但是提交两个同样的应用同样使用FLink on Yarm模式,Kafka节点的网卡输出速度是正常翻倍的。 我想达到的目的不是通过多向yarn集群提交多一个app,而是通过设置并行度来提高应用的吞吐量。。 求各位大佬指导 |
In reply to this post by 范超
我们一般提升作业吞吐能力的步骤就是看作业的反压情况,
- 如果作业完全没有反压,说明此时处理能力大于上游数据产生速度 - 如果作业有反压,就具体看下反压的是哪个算子,存在什么瓶颈。比如网络IO、磁盘IO、CPU; 当然,有时候内存问题也会表现为CPU现象,比如GC比较严重 范超 <[hidden email]> 于2020年9月24日周四 上午10:48写道: > 谢谢Benchao哥回复。 > > 这几天一直忙着压测这个问题。 > 经多轮压测(先灌满kafka数据),再去消费。 > 发现确实是您说的问题中的第三个情况 > 由于kafka的topic只开了一个partition > > 所以flinkkafkaconsumer按照一个taskmanger对应了一个kafka的parition的方式进行了处理。从而导致虽然作业并发度够大,但是由于只有一个partition, > 其他并发的taskmanager无法获取到更多的partition进行消费,从而导致并行度提升而作业消费能力却无法同比增大。 > > 之后通过建立2个partition的topic,实现了消费能力的翻倍。 > > > 想再请多问您一句,我如果想压出作业的极限吞吐量,请问该如何设置一些运行参数,目前我通过设置on yarn > 的tm的内存大小,kafka的partition数目,也无法将作业的吞吐量压上去。 > > > > -----邮件原件----- > 发件人: Benchao Li [mailto:[hidden email]] > 发送时间: 2020年9月18日 星期五 18:49 > 收件人: user-zh <[hidden email]> > 主题: Re: FlinkKafkaConsumer on Yarn 模式下 设置并行度无法提高kafka的消费速度,但是提交两个应用却可以 > > 提交两个作业的话,两个作业是完全独立的,都会消费全量数据。 > > 一个作业的消费能力不行,可以具体看下瓶颈在哪里,比如: > 1. 作业是否有lag,如果没有lag,那其实是没有问题的 > 2. 如果作业有lag,而且lag还在上涨,说明当前消费能力不足,此时可以看下作业具体的瓶颈在哪里 > 有可能是某个算子在反压导致整个作业的消费能力不足 > 也有可能是作业的整体CPU资源不足导致的 > 也有一种极端情况是,作业的并发度已经足够大,source subtask已经对应一个kafka > partition了,但是消费能力还是不足,这个时候其实是单个partition数据量太大,对应到Flink的source算子处理能力不足导致的 > 3. 如果作业当前有lag,但是lag在下降,说明消费能力其实是够的,只是数据有些积压 > > 范超 <[hidden email]> 于2020年9月18日周五 下午4:07写道: > > > 各位好,我遇到了一个奇怪的问题 > > > > 我是使用flink1.10和 flink-connector-kafka_2.11 > > > > 使用Flink on yarn 模式运行,无论怎么调大并行度。Kafka节点(我使用的单节点)的网卡输出速度一直上不去。 > > > > 但是提交两个同样的应用同样使用FLink on Yarm模式,Kafka节点的网卡输出速度是正常翻倍的。 > > > > 我想达到的目的不是通过多向yarn集群提交多一个app,而是通过设置并行度来提高应用的吞吐量。。 > > > > 求各位大佬指导 > > > > > -- > > Best, > Benchao Li > -- Best, Benchao Li |
In reply to this post by 范超
磊哥,我想再多问一个问题。 若topic只有一个分区的情况下。。 我这边压了一下,网卡流量大概是30Mbit/s,不知道如何提高这个消费速度才好,压测程序是个很简单的source,并丢弃的处理。 -----邮件原件----- 发件人: 范超 发送时间: 2020年9月24日 星期四 10:49 收件人: [hidden email] 主题: 答复: 回复:FlinkKafkaConsumer on Yarn 模式下 设置并行度无法提高kafka的消费速度,但是提交两个应用却可以 感谢磊哥,后来发现确实是这个问题导致。 Source节点的并行度取决于topic的分区数 -----邮件原件----- 发件人: 吴磊 [mailto:[hidden email]] 发送时间: 2020年9月18日 星期五 16:29 收件人: user-zh <[hidden email]> 主题: 回复:FlinkKafkaConsumer on Yarn 模式下 设置并行度无法提高kafka的消费速度,但是提交两个应用却可以 hello,Source节点并行度的有效性是取决于topic对应的分区数的。比如如果你只有6个分区,那你12个并行度和6个并行度的消费速度是一样的。 ------------------ 原始邮件 ------------------ 发件人: "user-zh" <[hidden email]>; 发送时间: 2020年9月18日(星期五) 下午4:07 收件人: "[hidden email]"<[hidden email]>; 主题: FlinkKafkaConsumer on Yarn 模式下 设置并行度无法提高kafka的消费速度,但是提交两个应用却可以 各位好,我遇到了一个奇怪的问题 我是使用flink1.10和 flink-connector-kafka_2.11 使用Flink on yarn 模式运行,无论怎么调大并行度。Kafka节点(我使用的单节点)的网卡输出速度一直上不去。 但是提交两个同样的应用同样使用FLink on Yarm模式,Kafka节点的网卡输出速度是正常翻倍的。 我想达到的目的不是通过多向yarn集群提交多一个app,而是通过设置并行度来提高应用的吞吐量。。 求各位大佬指导 |
In reply to this post by Benchao Li-2
感谢benchao哥这么快就回复了。我这边再多观察测试一下。
再次感谢 -----邮件原件----- 发件人: Benchao Li [mailto:[hidden email]] 发送时间: 2020年9月24日 星期四 16:06 收件人: user-zh <[hidden email]> 主题: Re: FlinkKafkaConsumer on Yarn 模式下 设置并行度无法提高kafka的消费速度,但是提交两个应用却可以 我们一般提升作业吞吐能力的步骤就是看作业的反压情况, - 如果作业完全没有反压,说明此时处理能力大于上游数据产生速度 - 如果作业有反压,就具体看下反压的是哪个算子,存在什么瓶颈。比如网络IO、磁盘IO、CPU; 当然,有时候内存问题也会表现为CPU现象,比如GC比较严重 范超 <[hidden email]> 于2020年9月24日周四 上午10:48写道: > 谢谢Benchao哥回复。 > > 这几天一直忙着压测这个问题。 > 经多轮压测(先灌满kafka数据),再去消费。 > 发现确实是您说的问题中的第三个情况 > 由于kafka的topic只开了一个partition > > 所以flinkkafkaconsumer按照一个taskmanger对应了一个kafka的parition的方式进行了处理。从而导致虽然作业并发度够大,但是由于只有一个partition, > 其他并发的taskmanager无法获取到更多的partition进行消费,从而导致并行度提升而作业消费能力却无法同比增大。 > > 之后通过建立2个partition的topic,实现了消费能力的翻倍。 > > > 想再请多问您一句,我如果想压出作业的极限吞吐量,请问该如何设置一些运行参数,目前我通过设置on yarn > 的tm的内存大小,kafka的partition数目,也无法将作业的吞吐量压上去。 > > > > -----邮件原件----- > 发件人: Benchao Li [mailto:[hidden email]] > 发送时间: 2020年9月18日 星期五 18:49 > 收件人: user-zh <[hidden email]> > 主题: Re: FlinkKafkaConsumer on Yarn 模式下 设置并行度无法提高kafka的消费速度,但是提交两个应用却可以 > > 提交两个作业的话,两个作业是完全独立的,都会消费全量数据。 > > 一个作业的消费能力不行,可以具体看下瓶颈在哪里,比如: > 1. 作业是否有lag,如果没有lag,那其实是没有问题的 > 2. 如果作业有lag,而且lag还在上涨,说明当前消费能力不足,此时可以看下作业具体的瓶颈在哪里 > 有可能是某个算子在反压导致整个作业的消费能力不足 > 也有可能是作业的整体CPU资源不足导致的 > 也有一种极端情况是,作业的并发度已经足够大,source subtask已经对应一个kafka > partition了,但是消费能力还是不足,这个时候其实是单个partition数据量太大,对应到Flink的source算子处理能力不足导致的 > 3. 如果作业当前有lag,但是lag在下降,说明消费能力其实是够的,只是数据有些积压 > > 范超 <[hidden email]> 于2020年9月18日周五 下午4:07写道: > > > 各位好,我遇到了一个奇怪的问题 > > > > 我是使用flink1.10和 flink-connector-kafka_2.11 > > > > 使用Flink on yarn 模式运行,无论怎么调大并行度。Kafka节点(我使用的单节点)的网卡输出速度一直上不去。 > > > > 但是提交两个同样的应用同样使用FLink on Yarm模式,Kafka节点的网卡输出速度是正常翻倍的。 > > > > 我想达到的目的不是通过多向yarn集群提交多一个app,而是通过设置并行度来提高应用的吞吐量。。 > > > > 求各位大佬指导 > > > > > -- > > Best, > Benchao Li > -- Best, Benchao Li |
单分区情况下30MB,这和flink已经没关系了貌似。能否更高的消费,首先还得确认你是否由足够快的速度写入压测数据。
而kafka不论是写入还是消费都和分区数量有关系。所以压测flink的最高能力,首先你得压测kafka拿到一个你预设的最高压力,否则kafka分区1个,如果qps最高达到2w。那么你基于这个单分区kafka去压测flink,flink也不可能超过1w的qps去消费,懂吧? 压测flink,那么kafka部分你就得尽可能把分区设置很大,避免是kafka的瓶颈。 范超 <[hidden email]> 于2020年9月25日周五 下午2:28写道: > 感谢benchao哥这么快就回复了。我这边再多观察测试一下。 > 再次感谢 > > -----邮件原件----- > 发件人: Benchao Li [mailto:[hidden email]] > 发送时间: 2020年9月24日 星期四 16:06 > 收件人: user-zh <[hidden email]> > 主题: Re: FlinkKafkaConsumer on Yarn 模式下 设置并行度无法提高kafka的消费速度,但是提交两个应用却可以 > > 我们一般提升作业吞吐能力的步骤就是看作业的反压情况, > - 如果作业完全没有反压,说明此时处理能力大于上游数据产生速度 > - 如果作业有反压,就具体看下反压的是哪个算子,存在什么瓶颈。比如网络IO、磁盘IO、CPU; > 当然,有时候内存问题也会表现为CPU现象,比如GC比较严重 > > 范超 <[hidden email]> 于2020年9月24日周四 上午10:48写道: > > > 谢谢Benchao哥回复。 > > > > 这几天一直忙着压测这个问题。 > > 经多轮压测(先灌满kafka数据),再去消费。 > > 发现确实是您说的问题中的第三个情况 > > 由于kafka的topic只开了一个partition > > > > > 所以flinkkafkaconsumer按照一个taskmanger对应了一个kafka的parition的方式进行了处理。从而导致虽然作业并发度够大,但是由于只有一个partition, > > 其他并发的taskmanager无法获取到更多的partition进行消费,从而导致并行度提升而作业消费能力却无法同比增大。 > > > > 之后通过建立2个partition的topic,实现了消费能力的翻倍。 > > > > > > 想再请多问您一句,我如果想压出作业的极限吞吐量,请问该如何设置一些运行参数,目前我通过设置on yarn > > 的tm的内存大小,kafka的partition数目,也无法将作业的吞吐量压上去。 > > > > > > > > -----邮件原件----- > > 发件人: Benchao Li [mailto:[hidden email]] > > 发送时间: 2020年9月18日 星期五 18:49 > > 收件人: user-zh <[hidden email]> > > 主题: Re: FlinkKafkaConsumer on Yarn 模式下 设置并行度无法提高kafka的消费速度,但是提交两个应用却可以 > > > > 提交两个作业的话,两个作业是完全独立的,都会消费全量数据。 > > > > 一个作业的消费能力不行,可以具体看下瓶颈在哪里,比如: > > 1. 作业是否有lag,如果没有lag,那其实是没有问题的 > > 2. 如果作业有lag,而且lag还在上涨,说明当前消费能力不足,此时可以看下作业具体的瓶颈在哪里 > > 有可能是某个算子在反压导致整个作业的消费能力不足 > > 也有可能是作业的整体CPU资源不足导致的 > > 也有一种极端情况是,作业的并发度已经足够大,source subtask已经对应一个kafka > > partition了,但是消费能力还是不足,这个时候其实是单个partition数据量太大,对应到Flink的source算子处理能力不足导致的 > > 3. 如果作业当前有lag,但是lag在下降,说明消费能力其实是够的,只是数据有些积压 > > > > 范超 <[hidden email]> 于2020年9月18日周五 下午4:07写道: > > > > > 各位好,我遇到了一个奇怪的问题 > > > > > > 我是使用flink1.10和 flink-connector-kafka_2.11 > > > > > > 使用Flink on yarn 模式运行,无论怎么调大并行度。Kafka节点(我使用的单节点)的网卡输出速度一直上不去。 > > > > > > 但是提交两个同样的应用同样使用FLink on Yarm模式,Kafka节点的网卡输出速度是正常翻倍的。 > > > > > > 我想达到的目的不是通过多向yarn集群提交多一个app,而是通过设置并行度来提高应用的吞吐量。。 > > > > > > 求各位大佬指导 > > > > > > > > > -- > > > > Best, > > Benchao Li > > > > > -- > > Best, > Benchao Li > |
写错了哈。2w。
赵一旦 <[hidden email]> 于2020年9月25日周五 下午2:57写道: > 单分区情况下30MB,这和flink已经没关系了貌似。能否更高的消费,首先还得确认你是否由足够快的速度写入压测数据。 > > 而kafka不论是写入还是消费都和分区数量有关系。所以压测flink的最高能力,首先你得压测kafka拿到一个你预设的最高压力,否则kafka分区1个,如果qps最高达到2w。那么你基于这个单分区kafka去压测flink,flink也不可能超过1w的qps去消费,懂吧? > > 压测flink,那么kafka部分你就得尽可能把分区设置很大,避免是kafka的瓶颈。 > > 范超 <[hidden email]> 于2020年9月25日周五 下午2:28写道: > >> 感谢benchao哥这么快就回复了。我这边再多观察测试一下。 >> 再次感谢 >> >> -----邮件原件----- >> 发件人: Benchao Li [mailto:[hidden email]] >> 发送时间: 2020年9月24日 星期四 16:06 >> 收件人: user-zh <[hidden email]> >> 主题: Re: FlinkKafkaConsumer on Yarn 模式下 设置并行度无法提高kafka的消费速度,但是提交两个应用却可以 >> >> 我们一般提升作业吞吐能力的步骤就是看作业的反压情况, >> - 如果作业完全没有反压,说明此时处理能力大于上游数据产生速度 >> - 如果作业有反压,就具体看下反压的是哪个算子,存在什么瓶颈。比如网络IO、磁盘IO、CPU; >> 当然,有时候内存问题也会表现为CPU现象,比如GC比较严重 >> >> 范超 <[hidden email]> 于2020年9月24日周四 上午10:48写道: >> >> > 谢谢Benchao哥回复。 >> > >> > 这几天一直忙着压测这个问题。 >> > 经多轮压测(先灌满kafka数据),再去消费。 >> > 发现确实是您说的问题中的第三个情况 >> > 由于kafka的topic只开了一个partition >> > >> > >> 所以flinkkafkaconsumer按照一个taskmanger对应了一个kafka的parition的方式进行了处理。从而导致虽然作业并发度够大,但是由于只有一个partition, >> > 其他并发的taskmanager无法获取到更多的partition进行消费,从而导致并行度提升而作业消费能力却无法同比增大。 >> > >> > 之后通过建立2个partition的topic,实现了消费能力的翻倍。 >> > >> > >> > 想再请多问您一句,我如果想压出作业的极限吞吐量,请问该如何设置一些运行参数,目前我通过设置on yarn >> > 的tm的内存大小,kafka的partition数目,也无法将作业的吞吐量压上去。 >> > >> > >> > >> > -----邮件原件----- >> > 发件人: Benchao Li [mailto:[hidden email]] >> > 发送时间: 2020年9月18日 星期五 18:49 >> > 收件人: user-zh <[hidden email]> >> > 主题: Re: FlinkKafkaConsumer on Yarn 模式下 设置并行度无法提高kafka的消费速度,但是提交两个应用却可以 >> > >> > 提交两个作业的话,两个作业是完全独立的,都会消费全量数据。 >> > >> > 一个作业的消费能力不行,可以具体看下瓶颈在哪里,比如: >> > 1. 作业是否有lag,如果没有lag,那其实是没有问题的 >> > 2. 如果作业有lag,而且lag还在上涨,说明当前消费能力不足,此时可以看下作业具体的瓶颈在哪里 >> > 有可能是某个算子在反压导致整个作业的消费能力不足 >> > 也有可能是作业的整体CPU资源不足导致的 >> > 也有一种极端情况是,作业的并发度已经足够大,source subtask已经对应一个kafka >> > partition了,但是消费能力还是不足,这个时候其实是单个partition数据量太大,对应到Flink的source算子处理能力不足导致的 >> > 3. 如果作业当前有lag,但是lag在下降,说明消费能力其实是够的,只是数据有些积压 >> > >> > 范超 <[hidden email]> 于2020年9月18日周五 下午4:07写道: >> > >> > > 各位好,我遇到了一个奇怪的问题 >> > > >> > > 我是使用flink1.10和 flink-connector-kafka_2.11 >> > > >> > > 使用Flink on yarn 模式运行,无论怎么调大并行度。Kafka节点(我使用的单节点)的网卡输出速度一直上不去。 >> > > >> > > 但是提交两个同样的应用同样使用FLink on Yarm模式,Kafka节点的网卡输出速度是正常翻倍的。 >> > > >> > > 我想达到的目的不是通过多向yarn集群提交多一个app,而是通过设置并行度来提高应用的吞吐量。。 >> > > >> > > 求各位大佬指导 >> > > >> > >> > >> > -- >> > >> > Best, >> > Benchao Li >> > >> >> >> -- >> >> Best, >> Benchao Li >> > |
In reply to this post by nobleyd
多谢一旦哥,我大概摸清楚了这几个关系,
目前使用kafka-consumer-perf-test.sh对单broker单分区的kafka压测在8核16G的情况下是30W/s每秒的消费能力。 SINK端的写入大概是20W/s ON YARN的Per JOB模式下通过调整分区和并行度来进行扩容。 接下来的方向按照两位大佬所说应该是对应用的jvm调优来处理了。 感谢一旦哥和benchao哥 -----邮件原件----- 发件人: 赵一旦 [mailto:[hidden email]] 发送时间: 2020年9月25日 星期五 14:57 收件人: [hidden email] 主题: Re: FlinkKafkaConsumer on Yarn 模式下 设置并行度无法提高kafka的消费速度,但是提交两个应用却可以 单分区情况下30MB,这和flink已经没关系了貌似。能否更高的消费,首先还得确认你是否由足够快的速度写入压测数据。 而kafka不论是写入还是消费都和分区数量有关系。所以压测flink的最高能力,首先你得压测kafka拿到一个你预设的最高压力,否则kafka分区1个,如果qps最高达到2w。那么你基于这个单分区kafka去压测flink,flink也不可能超过1w的qps去消费,懂吧? 压测flink,那么kafka部分你就得尽可能把分区设置很大,避免是kafka的瓶颈。 范超 <[hidden email]> 于2020年9月25日周五 下午2:28写道: > 感谢benchao哥这么快就回复了。我这边再多观察测试一下。 > 再次感谢 > > -----邮件原件----- > 发件人: Benchao Li [mailto:[hidden email]] > 发送时间: 2020年9月24日 星期四 16:06 > 收件人: user-zh <[hidden email]> > 主题: Re: FlinkKafkaConsumer on Yarn 模式下 设置并行度无法提高kafka的消费速度,但是提交两个应用却可以 > > 我们一般提升作业吞吐能力的步骤就是看作业的反压情况, > - 如果作业完全没有反压,说明此时处理能力大于上游数据产生速度 > - 如果作业有反压,就具体看下反压的是哪个算子,存在什么瓶颈。比如网络IO、磁盘IO、CPU; > 当然,有时候内存问题也会表现为CPU现象,比如GC比较严重 > > 范超 <[hidden email]> 于2020年9月24日周四 上午10:48写道: > > > 谢谢Benchao哥回复。 > > > > 这几天一直忙着压测这个问题。 > > 经多轮压测(先灌满kafka数据),再去消费。 > > 发现确实是您说的问题中的第三个情况 > > 由于kafka的topic只开了一个partition > > > > > 所以flinkkafkaconsumer按照一个taskmanger对应了一个kafka的parition的方式进行了处理。从而导致虽然作业并发度够大,但是由于只有一个partition, > > 其他并发的taskmanager无法获取到更多的partition进行消费,从而导致并行度提升而作业消费能力却无法同比增大。 > > > > 之后通过建立2个partition的topic,实现了消费能力的翻倍。 > > > > > > 想再请多问您一句,我如果想压出作业的极限吞吐量,请问该如何设置一些运行参数,目前我通过设置on yarn > > 的tm的内存大小,kafka的partition数目,也无法将作业的吞吐量压上去。 > > > > > > > > -----邮件原件----- > > 发件人: Benchao Li [mailto:[hidden email]] > > 发送时间: 2020年9月18日 星期五 18:49 > > 收件人: user-zh <[hidden email]> > > 主题: Re: FlinkKafkaConsumer on Yarn 模式下 设置并行度无法提高kafka的消费速度,但是提交两个应用却可以 > > > > 提交两个作业的话,两个作业是完全独立的,都会消费全量数据。 > > > > 一个作业的消费能力不行,可以具体看下瓶颈在哪里,比如: > > 1. 作业是否有lag,如果没有lag,那其实是没有问题的 > > 2. 如果作业有lag,而且lag还在上涨,说明当前消费能力不足,此时可以看下作业具体的瓶颈在哪里 > > 有可能是某个算子在反压导致整个作业的消费能力不足 > > 也有可能是作业的整体CPU资源不足导致的 > > 也有一种极端情况是,作业的并发度已经足够大,source subtask已经对应一个kafka > > partition了,但是消费能力还是不足,这个时候其实是单个partition数据量太大,对应到Flink的source算子处理能力不足导致的 > > 3. 如果作业当前有lag,但是lag在下降,说明消费能力其实是够的,只是数据有些积压 > > > > 范超 <[hidden email]> 于2020年9月18日周五 下午4:07写道: > > > > > 各位好,我遇到了一个奇怪的问题 > > > > > > 我是使用flink1.10和 flink-connector-kafka_2.11 > > > > > > 使用Flink on yarn 模式运行,无论怎么调大并行度。Kafka节点(我使用的单节点)的网卡输出速度一直上不去。 > > > > > > 但是提交两个同样的应用同样使用FLink on Yarm模式,Kafka节点的网卡输出速度是正常翻倍的。 > > > > > > 我想达到的目的不是通过多向yarn集群提交多一个app,而是通过设置并行度来提高应用的吞吐量。。 > > > > > > 求各位大佬指导 > > > > > > > > > -- > > > > Best, > > Benchao Li > > > > > -- > > Best, > Benchao Li > |
Free forum by Nabble | Edit this page |