各位小伙伴们大家好,我们又见面啦~
这里是《你问我答》栏目第四期
上周推送了一篇关于腾讯SuperSQL的文章 《「解耦」方能「专注」——腾讯天穹SuperSQL跨引擎计算揭秘》 很多同学对这个项目产生了浓厚的兴趣
本期,我们的专家老师将现身说法 进一步为大家介绍腾讯大数据SQL引擎天穹SuperSQL的性能表现 同时,也会解答小伙伴们关于 腾讯一站式实时计算平台Oceanus 以及分布式 HTAP 数据库管理系统Tbase 的部分疑问
对这些话题感兴趣的同学就快来看看吧!
01
@旧故里草木深:
supersql的性能怎么样,有测试数据吗?
张韶全 腾讯大数据SuperSQL和Hive项目负责人,香港中文大学博士,《SparkSQL内核剖析》作者之一。 回答
我们评估了在100GB的TPC-DS数据集之上,SuperSQL V0.1版本与社区SparkSQL JDBC性能对比。
篇幅关系,这里只展示在Hive和PG数据源上执行99条TPC-DS SQL查询的平均响应时间。
从上图可以看到,在Hive数据源下,SuperSQL执行TPC-DS SQL的平均执行时间仅为1.15min,而Spark JDBC则需要31.27min,SuperSQL较Spark JDBC性能提升了约27倍。在Hive + PG跨源的情况下,SuperSQL执行TPC-DS SQL的平均时间为4.63min,而Spark JDBC需要25.12min,性能提升约5.4倍。(在Hive + PG作为跨源数据源时,Spark JDBC有将近一半的query 查询失败,而在计算平均时间时这些组别是无法进行统计的,所以性能提高小于只有Hive单源的情况。)
相比于 Spark JDBC,上图展示的SuperSQL的性能优势主要来自于完善的算子下推的能力,将计算下推到数据源计算的同时,大大减少数据的拉取。现在SuperSQL可以做到60+算子的下推。
SuperSQL V0.2版本增加了下推并发,智能计算引擎选择,Hive数据源HDFS读写优化等重要特性,在性能上相比V0.1版本又有了大幅提升。例如,通过下推并发,SuperSQL能够将下推的子查询SQL切分成若干条子SQL,每条子SQL将从底层数据源获取一部分数据结果,所有子SQL的结果集合的并集为原有下推子查询SQL的数据结果集的等价集。下推并发可以将下推性能提升1~3倍。
02
@吴德军:
腾讯的Oceanus中对Flink进行了哪些改进呢?
施晓罡 腾讯大数据实时计算项目负责人。毕业于北京大学,获得博士学位。Apache Flink项目Committer。担任KDD,DASFAA等国际顶级会议的程序委员会委员。 回答
为了能够支持腾讯庞大的数据规模和丰富的应用场景,我们对Flink社区版进行了大量的改进和优化,包括:
更丰富和准确的指标采集和展示:Flink社区版缺少很多关键指标信息,前端展示也很不方便定位问题。为了能够提高运维效率,我们对Flink的指标进行了梳理,并重构了REST和UI系统。
更高效率的资源调度:Flink社区版无法很好地支持较大规模的作业。这些作业通常需要较长时间启动,甚至有时根本无法启动。在Yarn集群上运行时,Flink社区版也缺少对资源使用量的控制,导致较严重的资源超用问题。我们对Flink的资源调度机制进行了改进,确保较大规模的作业可以正常运行,并对资源使用量进行了有效控制。
更稳定可靠的作业执行:我们对Flink的故障恢复机制进行了大量的工作。除了修复大量社区版本中存在的问题,我们还实现了无需重启作业的master恢复机制,确保Flink作业在Zookeeper集群抖动时仍然可以正常执行;并且实现了有损的task恢复,可以通过牺牲一定的计算正确性来使得作业在发生故障时仍然能够正常执行,减少故障导致的计算延迟。
更灵活而又强大的编程接口:我们在Flink的Table API和SQL中提供了30多种的自定义函数,并提供了包括增量窗口、维表Join和Top N在内的多种算子。这些函数和算子可以帮助用户更加方便的开发自己的实时计算应用。
更出色的程序性能:为了减少负载倾斜导致的性能下降,我们开发了localKeyBy算子来允许用户在上游进行数据的预聚合,极大的提高了用户程序在负载倾斜时的作业性能。我们还对window算子的实现进行重构,通过允许更灵活的state访问,能够极大提高在窗口上进行distinct这里计算的效率。
03
@🧂:
听说Flink 1.11马上就要发布了,老师对新版本有什么看法?
施晓罡 腾讯大数据实时计算项目负责人。毕业于北京大学,获得博士学位。Apache Flink项目Committer。担任KDD,DASFAA等国际顶级会议的程序委员会委员。 回答
Flink 1.11中包含了非常多很有用的特性,对Table/SQL中的类型推断进行了重构,支持了表动态属性,增加了checkpoint失败的回调等等。
其中一个比较大的特性是由我们在社区提出的Application Mode,即在Job Master端进行作业的编译和执行。这个功能可以很好的解耦Flink客户端和集群之间的依赖,方便Oceanus这样平台更好的进行作业提交。
Application Mode也为k8s的支持提供了更好的基础。在k8s部署下,用户可以直接将自己的jar包进行打包,并直接使用Application Mode启动,而不再需要一个额外的编译提交的过程。
除此之外,Flink 1.11中对GPU这些计算资源也提供了支持,可以更好的管理GPU这类扩展资源。随着对k8s和扩展资源的支持,可以预见到,Flink的应用将会越来越广泛。
04
@leopard锋:
TBASE对开源mysql的兼容性如何,可否切换,普遍用的比较多的是mysql
陈爱声 腾讯大数据TBase团队高级工程师,主要负责TBase项目的实施和运维。 回答 mysql迁移到TBase,是完全没有问题的,主要原因在于:
mysql的数据类型在TBase中都可以找到,而且TBase还能自定义数据类型,与mysql保持一致。
TBase的sql功能特性要远远比mysql丰富。
如果只是同等数据量的单机库,则可以考虑迁移到TBase的单机版本,这样就不需要考虑分布键的设计问题。
全量数据搬迁可以使用ETL工具抽取(如kettle),增量数据或者实时性要求高的话可以考虑将mysql数据同步至kafka,然后再订阅进TBase。
05
@永恒的约定:
TBase的私有化集群部署,是否能够提供下所需要的硬件参考配置以及具体参数?分别针对不同需求级别的参加方案?
陈爱声 腾讯大数据TBase团队高级工程师,主要负责TBase项目的实施和运维。 回答
TBase可以良好的支持私有化部署,配置可以参考如下:
1、学习使用
虚拟机2台,配置为4CORE+8G内存+50G系统盘+200G数据盘,可以部署OSS运维平台和一个TBase实例库,用于学习。
2、中配生产
虚拟机3台,配置为16CORE+32G内存+200G系统盘+500数据盘(SAS盘或者SSD盘),部署OSS运维平台;
主机4台,配置为48CORE+256G内存+200G系统盘+2T数据盘(SAS盘或者SSD盘);
主机8台,配置为48CORE+256G内存+200G系统盘+6T数据盘(SSD盘);
可以管理生产2-4套Tbase实例。
3、高配生产
物理3台,配置为32CORE+64G内存+200G系统盘+1T数据盘(SSD),部署OSS运维平台;
主机16台,配置为96CORE+512G内存+200G系统盘+2T数据盘(SAS盘或者SSD盘);
主机32台,配置为96CORE+512G内存+200G系统盘+6T数据盘(SSD盘);
可以管理生产16至32套Tbase实例。
4、运行参数在创建实例时,系统根据选择的配置自动生成,无需用户干预。
|