查看原文
其他

企业数仓OLAP业务的优化技术介绍

2016-04-07 星环科技 星环科技
很多星粉们都给小编留言:除了孙总的演讲稿,其他大牛们的演讲稿有木有?什么时候分享给我们?
嘻嘻嘻,别急别急,这几天小编会陆陆续续地share给大家滴!

           


今天这篇是陈博士的演讲稿。2016 Hadoop技术峰会的大数据优化技术专题论坛上,星环科技首席架构师陈博士给大家介绍了星环的TPC-DS性能调优,以及如何通过TPC-DS 100T测试,处理5500多亿条记录,100多万个数据块,99个复杂业务场景。


随着Hadoop与Spark技术的快速发展,大量的企业开始选择Hadoop作为构建企业数据仓库的基础架构。然而如何能够让Hadoop数仓上胜任各种复杂的OLAP业务,以及如何保证在各个数据量级别上数仓的可扩展性,一直是业界的几个技术难题。星环科技最近在这方面取得重大突破,使用普通x86集群能够非常高效的处理100TB量级的TPC-DS OLAP业务,并且有非常良好的线性可扩展性。星环陈博士在本次Hadoop Summit上给我们带来了取得这一关键突破的一些核心优化技术。




一、
测试基准TPC-DS概述
TPC-DS是TPC组织推出的一个基于决策支持系统的测试基准,目前大家比较推崇TPC-DS,因为它的设计比较合理,这里面包含了7张事实表和17张纬度表,能够真实地回答一些商业问题。它采用的不是传统的关系数据库里面的关系模型,而是星型模型、雪花模型。这套测试一共有99个测试案例,并遵循SQL 99和2003的语法标准。这些测试案例分为不同的业务模型,如分析报表时的即时查询、迭代计算等等。整个测试过程对系统资源要求非常高。所以如果要得到优异的测试结果,优化工作不仅包括计算快,更是要求对IO、内存、CPU的使用达到平衡。作为大数据测试基准,TPC-DS的设计参数是可扩展的,支持1G、1T、10T、100T等数量级。本次分享的内容是基于100T的测试。TPC-DS100T的测试涉及到的7张事实表总的记录数超过了5500亿条,其中最大的一张表Store_class上就有2800多亿条记录。用它原始的脚本生成数据存在HDFS上,大概有100万个数据块。如何处理如此海量的数据,对任何一个大数据平台都是巨大挑战。然而经过不断的改进,星环TDH在不使用任何索引、不做任何数据分区的情况下,已经成功通过了TPC-DS 100T测试。TDH大数据处理能力、性能和稳定性达到新高度
  兼容标准SQL不只是语法问题
二、
SQL的标准是专家们经过各方面研究后定义出来的。如果不采用标准写法,那么增加研发成本、迁移成本还有维护成本,也会影响到代码的性能。所以SQL的兼容性非常重要。星环的产品Inceptor引擎支持SQL 2003,同时兼容Oracle的PL/SQL和DB2的SQL/PL,对SQL的支持度远超过其他同类产品。Gartner在最新版本的《Magic Quadrant for Data Warehouse and Data Management Solutions for Analytics》里对此作了高度的评价。

"Transwarp has a unique set of capabilities, such as its Inceptor SQL component based on Apache Spark, with Oracle SQL and PL/SQL compatibility supporting create, read, update, delete (CRUD) and ACID operations. This component is particularly praised by reference customers." 

--摘自Gartner,《Magic Quadrant for Data Warehouse and Data Management Solutions for Analytics》, 2016



三、    性能优化
Benchmark本身是追求性能。目前优化效果比较好的方法有如下几种:1.   分区(Partition):通过数据分区实现每次只操作当前关心的数据,优化效果显著。2.  基于代价的优化(CBO):根据需要处理的数据量进行估算选择不同的策略。3.  向量化(Vectorization):利用底层硬件向量化指令加速计算。4.  代码生成(CodeGen):通过预先分析生成Native code再执行。5.     谓词下推(PPD):扫表过程中根据过滤条件,不需要的数据不会从底层传上来,大大减少计算量。数据量不同,优化策略也不相同。为了得到更好的优化效果,星环的Inceptor对CBO作了一些改进。首先,要综合考虑CPU、网络、磁盘IO的代价。当数据量小的时候网络、磁盘IO的代价可以忽略,但是在测100T的时候,需要把几亿条记录的一张表从磁盘或者网络读取过来,这两者的IO已经不容忽视。通过分析发现99个SQL中大部分带withas 和子查询。如果这部分代价分析不出来,那么对最终的性能影响是非常大的,所以星环增加了with as和子查询的处理。最后是分区表的支持。在实际应用中很多表都是分区的,每个分区表的CBO都需要特殊处理,以减少后期参与运算的数据量,提升效率。为了衡量Inceptor的优化效果,我们与impala和spark在相同的测试环境下,在TPC-DS 1T的测试集上进行了对比,总体上,Inceptor的SQL性能是Impala和Spark的2-3倍。

跨越TPC-DS 100T测试
四、
即使做完上述优化,也不意味着能够顺利通过100T的测试。星环采用的测试环境配置并不好:总共29个节点,每个节点CPU2X6核Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz;磁盘12X3T;内存只有100G,和处理100T的数据并不匹配;另外网络只有千兆。最后测试结果显示网络和内存确实影响了性能提升。 实测时发现,虽然做了很多优化,但在运行100T的TPC-DS测试时还是遇到很多问题,需要进一步调优。第一步需要对100T的数据仔细分析,利用CBO调整优化策略。第二步是改进数据结构设计,综合考虑内存和磁盘存储,避免GC和OOM。第三是改进算法,调整参数,提升稳定性。通过反复测试、改进,星环Inceptor最终顺利通过了TPC-DS 100T的测试。  在同样的测试环境,我们也测试了1T、10T和30T,结果显示Inceptor的扩展性很好。从1T到100T,数据量增加了100倍,而消耗的时间只增加了20多倍。这意味着实际应用中,随着用户数据量的增加,星环的Inceptor稳定性和性能依旧很好。

总结上文,大数据处理其实是考验了综合处理能力,并不是某一方面特别强就可以,更要考虑到稳定性、容错性。我们需要对数据进行分析,针对不同的数据级、应用场景选择不同的策略。只有对应用场景比较了解,才能选择出针对性的解决方法。在资源方面,需要综合平衡CPU、内存、磁盘、网络等。为了解决这些问题,星环将推出一体机的解决方案,希望通过合理的软件配置,提高整体的性价比。












 回复关键字,获取更多资讯
简介 | 产品 |  培训 | 投资 | 技术 | 视频监控案例集 | 运营商 | 税务 | 电商 | 医疗 | 金融 | 电力投资 | 交通 | 快递| Holodesk | TED视频 | 评测
 











您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存