Re: Flink OLAP 与 Trino TPC-DS 对比
十分感谢Yu Li老师的提醒,原邮件中第5个文档连接(即《10GiB TPCDS数据集测试结果》)已经更新至Google Docs [1]。 [1] https://docs.google.com/spreadsheets/d/1nietTOrFg93p7k7L82lGPlUjwCpw97bWfP21xI_MLcE/edit?usp=sharing Best, Zhilong Hong On Fri, May 6, 2022 at 4:51 PM Yu Li wrote: > 感谢大家的分享和分析,也期待Flink在相关方向的持续优化! > > Let's make Flink great together. :-) > > btw, 第5个引用的语雀文档链接已过期,建议使用google doc并更新一下链接 > > Best Regards, > Yu > > > On Sun, 1 May 2022 at 21:57, Zhilong Hong wrote: > > > Hello, > > > > 这段时间我们针对 LuNing 反馈的问题进行了深入的分析调研,在此将结论同步给社区。特别感谢 LuNing > 反馈这一问题并与我们一起进行分析排查。 > > > > 根据我们的分析,造成 Flink 1.14 在 TPCDS 10G 数据集、2 节点集群规模的情况下,与 Trino 359 > > 性能差距较大的原因主要包括以下 3 点: > > > > 1. 使用 SQL Client 提交 Flink 作业的耗时较长(单 query 约需要 4s)。在需要频繁提交作业的 OLAP > > 场景下,我们建议使用 Flink SQL Gateway 提交作业,避免重复创建 Client 进程、建立网络链接等额外开销。我们目前使用的是 > > Ververica 开源的 SQL Gateway [1],此外社区也正在准备推出官方的 SQL Gateway,详见 FLIP-91 [2]。 > > > > 2. 测试使用的数据集比较小(10GiB),导致 Hive Source 根据数据量划分出的 Split 数也比较少。而 Split 是 > Source > > 处理数据的最小单位,这就导致虽然看起来 Source 有 32 个并发,实际读取并处理数据的往往只有 1~2 个并发。此外,由于测试配置中关闭了 > > Hive Source 的自动推断并发度功能 [3],导致上下游的并发数相同并且被 chain > > 在一起,间接导致了下游算子实际处理数据的并发数也受到了影响。这一问题我们此前也发现过 [4],但没有像在 10GiB 这么小的数据集上影响这么大。 > > > > 3. 目前对于部分 TPCDS 测试集的 Query,Flink SQL 生成的执行计划不是最优,导致 Flink 实际处理的数据量比 Trino > > 要大。这与我们在大规模数据集上的观察是一致的,目前社区 SQL 模块的小伙伴们也在继续对这些 case 进行优化。 > > > > 总的来看,上述 3 点中,第 2 点对 Flink 性能的影响是最大的。我们针对这一问题做了一定优化。打了 patch > 后,尽管实际读取并处理数据的 > > Hive Source 并发仍达不到配置的 32 并发,但与 Trino 的差距已大幅缩短,详见 [5]。 > > > > 目前在 OLAP 场景下 Flink 与 Trino 确实还存在差距,社区目前也正在针对这一场景进行优化 > > [6]。我们目前在阿里内部的开发分支上,已经追平了 Trino 的性能,相关优化预计会在 Flink 1.16、1.17 > 两个版本中陆续贡献回社区。 > > > > Best, > > Zhilong Hong > > > > [1] https://github.com/ververica/flink-sql-gateway > > [2] > > > > > https://cwiki.apache.org/confluence/display/FLINK/FLIP-91%3A+Support+SQL+Gateway > > [3] > > > > > https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/table/hive/hive_read_write/#source-parallelism-inference > > [4] https://issues.apache.org/jira/browse/FLINK-27338 > > [5] > > > https://www.yuque.com/docs/share/b89479ab-9c24-45c8-9390-77299ae0c4cd?#AkK9 > > [6] https://issues.apache.org/jira/browse/FLINK-25318 > > > > On Tue, Apr 19, 2022 at 5:43 PM LuNing Wang > wrote: > > > > > > > > https://www.yuque.com/docs/share/8625d14b-d465-48a3-8dc1-0be32b138f34?#lUX6 > > > 《tpcds-各引擎耗时》 > > > 链接有效期至 2022-04-22 10:31:05 > > > > > > LuNing Wong 于2022年4月18日周一 09:44写道: > > > > > > > 补充,用的Hive 3.1.2 Hadoop 3.1.0做的数据源。 > > > > > > > > LuNing Wong 于2022年4月18日周一 09:42写道: > > > > > > > > > Flink版本是1.14.4, > > > Trino是359版本,tm.memory.process.size和CPU资源我都和Trino对齐了。都是32G > > > > > 16核 16线程,2台计算节点。 > > > > > > > > > > Zhilong Hong 于2022年4月15日周五 18:21写道: > > > > > > > > > >> Hello, Luning! > > > > >> > > > > >> > > > > >> > > > > > > > > > > 我们目前也正在关注Flink在OLAP场景的性能表现,请问你测试的Flink和Trino版本分别是什么呢?另外我看到flink-sql-benchmark中所使用的集群配置和你的不太一样,可能需要根据集群资源对flink-conf.yaml中taskmanager.memory.process.size等资源配置进行调整。 > > > > >> > > > > >> Best, > > > > >> Zhilong > > > > >> > > > > >> On Fri, Apr 15, 2022 at 2:38 PM LuNing Wang < > wang4lun...@gmail.com> > > > > >> wrote: > > > > >> > > > > >> > 跑了100个 TPC-DS SQL > > > > >> > 10 GB 数据、2个Worker(TM)、每个32G内存,16个核心。 > > > > >> > Flink平均用时 18秒 > > > > >> > Trino平均用时 7秒 > > > > >> > > > > > >> > 我看字节跳动和阿里的老师测试,Flink和presto > > > > >> OLAP性能接近,但是我测的差距很大。想进一步和老师交流下,是不是我Flink设置的有问题。 > > > > >> > 我基本上是按照下面这个项目里模板配置的Flink相关参数。 > > > > >> > https://github.com/ververica/flink-sql-benchmark > > > > >> > > > > > >> > > > > > >> > LuNing Wang 于2022年4月15日周五 14:34写道: > > > > >> > > > > > >> > > 跑了100个SQL > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > > > > > >
Re: Flink OLAP 与 Trino TPC-DS 对比
谢谢 Yu Li 老师提醒, 我彻底开放了测试表格,和资源配置文档。 《TPC-DS各引擎耗时》 https://www.yuque.com/deadwind/notes/tpcds-benchmark-table 《TPC-DS资源配置》 https://www.yuque.com/deadwind/notes/tpcds-resource Best, LuNing Wang.
Re: Flink OLAP 与 Trino TPC-DS 对比
感谢大家的分享和分析,也期待Flink在相关方向的持续优化! Let's make Flink great together. :-) btw, 第5个引用的语雀文档链接已过期,建议使用google doc并更新一下链接 Best Regards, Yu On Sun, 1 May 2022 at 21:57, Zhilong Hong wrote: > Hello, > > 这段时间我们针对 LuNing 反馈的问题进行了深入的分析调研,在此将结论同步给社区。特别感谢 LuNing 反馈这一问题并与我们一起进行分析排查。 > > 根据我们的分析,造成 Flink 1.14 在 TPCDS 10G 数据集、2 节点集群规模的情况下,与 Trino 359 > 性能差距较大的原因主要包括以下 3 点: > > 1. 使用 SQL Client 提交 Flink 作业的耗时较长(单 query 约需要 4s)。在需要频繁提交作业的 OLAP > 场景下,我们建议使用 Flink SQL Gateway 提交作业,避免重复创建 Client 进程、建立网络链接等额外开销。我们目前使用的是 > Ververica 开源的 SQL Gateway [1],此外社区也正在准备推出官方的 SQL Gateway,详见 FLIP-91 [2]。 > > 2. 测试使用的数据集比较小(10GiB),导致 Hive Source 根据数据量划分出的 Split 数也比较少。而 Split 是 Source > 处理数据的最小单位,这就导致虽然看起来 Source 有 32 个并发,实际读取并处理数据的往往只有 1~2 个并发。此外,由于测试配置中关闭了 > Hive Source 的自动推断并发度功能 [3],导致上下游的并发数相同并且被 chain > 在一起,间接导致了下游算子实际处理数据的并发数也受到了影响。这一问题我们此前也发现过 [4],但没有像在 10GiB 这么小的数据集上影响这么大。 > > 3. 目前对于部分 TPCDS 测试集的 Query,Flink SQL 生成的执行计划不是最优,导致 Flink 实际处理的数据量比 Trino > 要大。这与我们在大规模数据集上的观察是一致的,目前社区 SQL 模块的小伙伴们也在继续对这些 case 进行优化。 > > 总的来看,上述 3 点中,第 2 点对 Flink 性能的影响是最大的。我们针对这一问题做了一定优化。打了 patch 后,尽管实际读取并处理数据的 > Hive Source 并发仍达不到配置的 32 并发,但与 Trino 的差距已大幅缩短,详见 [5]。 > > 目前在 OLAP 场景下 Flink 与 Trino 确实还存在差距,社区目前也正在针对这一场景进行优化 > [6]。我们目前在阿里内部的开发分支上,已经追平了 Trino 的性能,相关优化预计会在 Flink 1.16、1.17 两个版本中陆续贡献回社区。 > > Best, > Zhilong Hong > > [1] https://github.com/ververica/flink-sql-gateway > [2] > > https://cwiki.apache.org/confluence/display/FLINK/FLIP-91%3A+Support+SQL+Gateway > [3] > > https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/table/hive/hive_read_write/#source-parallelism-inference > [4] https://issues.apache.org/jira/browse/FLINK-27338 > [5] > https://www.yuque.com/docs/share/b89479ab-9c24-45c8-9390-77299ae0c4cd?#AkK9 > [6] https://issues.apache.org/jira/browse/FLINK-25318 > > On Tue, Apr 19, 2022 at 5:43 PM LuNing Wang wrote: > > > > https://www.yuque.com/docs/share/8625d14b-d465-48a3-8dc1-0be32b138f34?#lUX6 > > 《tpcds-各引擎耗时》 > > 链接有效期至 2022-04-22 10:31:05 > > > > LuNing Wong 于2022年4月18日周一 09:44写道: > > > > > 补充,用的Hive 3.1.2 Hadoop 3.1.0做的数据源。 > > > > > > LuNing Wong 于2022年4月18日周一 09:42写道: > > > > > > > Flink版本是1.14.4, > > Trino是359版本,tm.memory.process.size和CPU资源我都和Trino对齐了。都是32G > > > > 16核 16线程,2台计算节点。 > > > > > > > > Zhilong Hong 于2022年4月15日周五 18:21写道: > > > > > > > >> Hello, Luning! > > > >> > > > >> > > > >> > > > > > > 我们目前也正在关注Flink在OLAP场景的性能表现,请问你测试的Flink和Trino版本分别是什么呢?另外我看到flink-sql-benchmark中所使用的集群配置和你的不太一样,可能需要根据集群资源对flink-conf.yaml中taskmanager.memory.process.size等资源配置进行调整。 > > > >> > > > >> Best, > > > >> Zhilong > > > >> > > > >> On Fri, Apr 15, 2022 at 2:38 PM LuNing Wang > > > >> wrote: > > > >> > > > >> > 跑了100个 TPC-DS SQL > > > >> > 10 GB 数据、2个Worker(TM)、每个32G内存,16个核心。 > > > >> > Flink平均用时 18秒 > > > >> > Trino平均用时 7秒 > > > >> > > > > >> > 我看字节跳动和阿里的老师测试,Flink和presto > > > >> OLAP性能接近,但是我测的差距很大。想进一步和老师交流下,是不是我Flink设置的有问题。 > > > >> > 我基本上是按照下面这个项目里模板配置的Flink相关参数。 > > > >> > https://github.com/ververica/flink-sql-benchmark > > > >> > > > > >> > > > > >> > LuNing Wang 于2022年4月15日周五 14:34写道: > > > >> > > > > >> > > 跑了100个SQL > > > >> > > > > > >> > > > > >> > > > > > > > > > >
Re: Flink OLAP 与 Trino TPC-DS 对比
Hello, 这段时间我们针对 LuNing 反馈的问题进行了深入的分析调研,在此将结论同步给社区。特别感谢 LuNing 反馈这一问题并与我们一起进行分析排查。 根据我们的分析,造成 Flink 1.14 在 TPCDS 10G 数据集、2 节点集群规模的情况下,与 Trino 359 性能差距较大的原因主要包括以下 3 点: 1. 使用 SQL Client 提交 Flink 作业的耗时较长(单 query 约需要 4s)。在需要频繁提交作业的 OLAP 场景下,我们建议使用 Flink SQL Gateway 提交作业,避免重复创建 Client 进程、建立网络链接等额外开销。我们目前使用的是 Ververica 开源的 SQL Gateway [1],此外社区也正在准备推出官方的 SQL Gateway,详见 FLIP-91 [2]。 2. 测试使用的数据集比较小(10GiB),导致 Hive Source 根据数据量划分出的 Split 数也比较少。而 Split 是 Source 处理数据的最小单位,这就导致虽然看起来 Source 有 32 个并发,实际读取并处理数据的往往只有 1~2 个并发。此外,由于测试配置中关闭了 Hive Source 的自动推断并发度功能 [3],导致上下游的并发数相同并且被 chain 在一起,间接导致了下游算子实际处理数据的并发数也受到了影响。这一问题我们此前也发现过 [4],但没有像在 10GiB 这么小的数据集上影响这么大。 3. 目前对于部分 TPCDS 测试集的 Query,Flink SQL 生成的执行计划不是最优,导致 Flink 实际处理的数据量比 Trino 要大。这与我们在大规模数据集上的观察是一致的,目前社区 SQL 模块的小伙伴们也在继续对这些 case 进行优化。 总的来看,上述 3 点中,第 2 点对 Flink 性能的影响是最大的。我们针对这一问题做了一定优化。打了 patch 后,尽管实际读取并处理数据的 Hive Source 并发仍达不到配置的 32 并发,但与 Trino 的差距已大幅缩短,详见 [5]。 目前在 OLAP 场景下 Flink 与 Trino 确实还存在差距,社区目前也正在针对这一场景进行优化 [6]。我们目前在阿里内部的开发分支上,已经追平了 Trino 的性能,相关优化预计会在 Flink 1.16、1.17 两个版本中陆续贡献回社区。 Best, Zhilong Hong [1] https://github.com/ververica/flink-sql-gateway [2] https://cwiki.apache.org/confluence/display/FLINK/FLIP-91%3A+Support+SQL+Gateway [3] https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/table/hive/hive_read_write/#source-parallelism-inference [4] https://issues.apache.org/jira/browse/FLINK-27338 [5] https://www.yuque.com/docs/share/b89479ab-9c24-45c8-9390-77299ae0c4cd?#AkK9 [6] https://issues.apache.org/jira/browse/FLINK-25318 On Tue, Apr 19, 2022 at 5:43 PM LuNing Wang wrote: > https://www.yuque.com/docs/share/8625d14b-d465-48a3-8dc1-0be32b138f34?#lUX6 > 《tpcds-各引擎耗时》 > 链接有效期至 2022-04-22 10:31:05 > > LuNing Wong 于2022年4月18日周一 09:44写道: > > > 补充,用的Hive 3.1.2 Hadoop 3.1.0做的数据源。 > > > > LuNing Wong 于2022年4月18日周一 09:42写道: > > > > > Flink版本是1.14.4, > Trino是359版本,tm.memory.process.size和CPU资源我都和Trino对齐了。都是32G > > > 16核 16线程,2台计算节点。 > > > > > > Zhilong Hong 于2022年4月15日周五 18:21写道: > > > > > >> Hello, Luning! > > >> > > >> > > >> > > > 我们目前也正在关注Flink在OLAP场景的性能表现,请问你测试的Flink和Trino版本分别是什么呢?另外我看到flink-sql-benchmark中所使用的集群配置和你的不太一样,可能需要根据集群资源对flink-conf.yaml中taskmanager.memory.process.size等资源配置进行调整。 > > >> > > >> Best, > > >> Zhilong > > >> > > >> On Fri, Apr 15, 2022 at 2:38 PM LuNing Wang > > >> wrote: > > >> > > >> > 跑了100个 TPC-DS SQL > > >> > 10 GB 数据、2个Worker(TM)、每个32G内存,16个核心。 > > >> > Flink平均用时 18秒 > > >> > Trino平均用时 7秒 > > >> > > > >> > 我看字节跳动和阿里的老师测试,Flink和presto > > >> OLAP性能接近,但是我测的差距很大。想进一步和老师交流下,是不是我Flink设置的有问题。 > > >> > 我基本上是按照下面这个项目里模板配置的Flink相关参数。 > > >> > https://github.com/ververica/flink-sql-benchmark > > >> > > > >> > > > >> > LuNing Wang 于2022年4月15日周五 14:34写道: > > >> > > > >> > > 跑了100个SQL > > >> > > > > >> > > > >> > > > > > >
Re: Flink OLAP 与 Trino TPC-DS 对比
https://www.yuque.com/docs/share/8625d14b-d465-48a3-8dc1-0be32b138f34?#lUX6 《tpcds-各引擎耗时》 链接有效期至 2022-04-22 10:31:05 LuNing Wong 于2022年4月18日周一 09:44写道: > 补充,用的Hive 3.1.2 Hadoop 3.1.0做的数据源。 > > LuNing Wong 于2022年4月18日周一 09:42写道: > > > Flink版本是1.14.4, Trino是359版本,tm.memory.process.size和CPU资源我都和Trino对齐了。都是32G > > 16核 16线程,2台计算节点。 > > > > Zhilong Hong 于2022年4月15日周五 18:21写道: > > > >> Hello, Luning! > >> > >> > >> > 我们目前也正在关注Flink在OLAP场景的性能表现,请问你测试的Flink和Trino版本分别是什么呢?另外我看到flink-sql-benchmark中所使用的集群配置和你的不太一样,可能需要根据集群资源对flink-conf.yaml中taskmanager.memory.process.size等资源配置进行调整。 > >> > >> Best, > >> Zhilong > >> > >> On Fri, Apr 15, 2022 at 2:38 PM LuNing Wang > >> wrote: > >> > >> > 跑了100个 TPC-DS SQL > >> > 10 GB 数据、2个Worker(TM)、每个32G内存,16个核心。 > >> > Flink平均用时 18秒 > >> > Trino平均用时 7秒 > >> > > >> > 我看字节跳动和阿里的老师测试,Flink和presto > >> OLAP性能接近,但是我测的差距很大。想进一步和老师交流下,是不是我Flink设置的有问题。 > >> > 我基本上是按照下面这个项目里模板配置的Flink相关参数。 > >> > https://github.com/ververica/flink-sql-benchmark > >> > > >> > > >> > LuNing Wang 于2022年4月15日周五 14:34写道: > >> > > >> > > 跑了100个SQL > >> > > > >> > > >> > > >
Re: Flink OLAP 与 Trino TPC-DS 对比
补充,用的Hive 3.1.2 Hadoop 3.1.0做的数据源。 LuNing Wong 于2022年4月18日周一 09:42写道: > Flink版本是1.14.4, Trino是359版本,tm.memory.process.size和CPU资源我都和Trino对齐了。都是32G > 16核 16线程,2台计算节点。 > > Zhilong Hong 于2022年4月15日周五 18:21写道: > >> Hello, Luning! >> >> >> 我们目前也正在关注Flink在OLAP场景的性能表现,请问你测试的Flink和Trino版本分别是什么呢?另外我看到flink-sql-benchmark中所使用的集群配置和你的不太一样,可能需要根据集群资源对flink-conf.yaml中taskmanager.memory.process.size等资源配置进行调整。 >> >> Best, >> Zhilong >> >> On Fri, Apr 15, 2022 at 2:38 PM LuNing Wang >> wrote: >> >> > 跑了100个 TPC-DS SQL >> > 10 GB 数据、2个Worker(TM)、每个32G内存,16个核心。 >> > Flink平均用时 18秒 >> > Trino平均用时 7秒 >> > >> > 我看字节跳动和阿里的老师测试,Flink和presto >> OLAP性能接近,但是我测的差距很大。想进一步和老师交流下,是不是我Flink设置的有问题。 >> > 我基本上是按照下面这个项目里模板配置的Flink相关参数。 >> > https://github.com/ververica/flink-sql-benchmark >> > >> > >> > LuNing Wang 于2022年4月15日周五 14:34写道: >> > >> > > 跑了100个SQL >> > > >> > >> >
Re: Flink OLAP 与 Trino TPC-DS 对比
Flink版本是1.14.4, Trino是359版本,tm.memory.process.size和CPU资源我都和Trino对齐了。都是32G 16核 16线程,2台计算节点。 Zhilong Hong 于2022年4月15日周五 18:21写道: > Hello, Luning! > > > 我们目前也正在关注Flink在OLAP场景的性能表现,请问你测试的Flink和Trino版本分别是什么呢?另外我看到flink-sql-benchmark中所使用的集群配置和你的不太一样,可能需要根据集群资源对flink-conf.yaml中taskmanager.memory.process.size等资源配置进行调整。 > > Best, > Zhilong > > On Fri, Apr 15, 2022 at 2:38 PM LuNing Wang wrote: > > > 跑了100个 TPC-DS SQL > > 10 GB 数据、2个Worker(TM)、每个32G内存,16个核心。 > > Flink平均用时 18秒 > > Trino平均用时 7秒 > > > > 我看字节跳动和阿里的老师测试,Flink和presto > OLAP性能接近,但是我测的差距很大。想进一步和老师交流下,是不是我Flink设置的有问题。 > > 我基本上是按照下面这个项目里模板配置的Flink相关参数。 > > https://github.com/ververica/flink-sql-benchmark > > > > > > LuNing Wang 于2022年4月15日周五 14:34写道: > > > > > 跑了100个SQL > > > > > >
Re: Flink OLAP 与 Trino TPC-DS 对比
Hello, Luning! 我们目前也正在关注Flink在OLAP场景的性能表现,请问你测试的Flink和Trino版本分别是什么呢?另外我看到flink-sql-benchmark中所使用的集群配置和你的不太一样,可能需要根据集群资源对flink-conf.yaml中taskmanager.memory.process.size等资源配置进行调整。 Best, Zhilong On Fri, Apr 15, 2022 at 2:38 PM LuNing Wang wrote: > 跑了100个 TPC-DS SQL > 10 GB 数据、2个Worker(TM)、每个32G内存,16个核心。 > Flink平均用时 18秒 > Trino平均用时 7秒 > > 我看字节跳动和阿里的老师测试,Flink和presto OLAP性能接近,但是我测的差距很大。想进一步和老师交流下,是不是我Flink设置的有问题。 > 我基本上是按照下面这个项目里模板配置的Flink相关参数。 > https://github.com/ververica/flink-sql-benchmark > > > LuNing Wang 于2022年4月15日周五 14:34写道: > > > 跑了100个SQL > > >
Re: Flink OLAP 与 Trino TPC-DS 对比
跑了100个 TPC-DS SQL 10 GB 数据、2个Worker(TM)、每个32G内存,16个核心。 Flink平均用时 18秒 Trino平均用时 7秒 我看字节跳动和阿里的老师测试,Flink和presto OLAP性能接近,但是我测的差距很大。想进一步和老师交流下,是不是我Flink设置的有问题。 我基本上是按照下面这个项目里模板配置的Flink相关参数。 https://github.com/ververica/flink-sql-benchmark LuNing Wang 于2022年4月15日周五 14:34写道: > 跑了100个SQL >
Flink OLAP 与 Trino TPC-DS 对比
跑了100个SQL