订阅业界RSS CSDN首页> 业界

Palo Meetup No.1: Hello Palo

发表于2018-04-16 14:40| 来源CSDN| 作者csdn

摘要:2018年3月24号,百度多维分析数据库Palo在北京雕刻时光咖啡馆,举办了自开源以来的第一次线下沙龙。

Palo Meetup No.1: Hello Palo

 

2018324号,百度多维分析数据库Palo在北京雕刻时光咖啡馆,举办了自开源以来的第一次线下沙龙。

 

Palo是百度大数据部自研的一款面向OLAP领域的数据库系统。其名称来源于将“OLAP4个字母进行转置,寓意“玩转OLAP”。Palo定位为一个基于大规模并行处理架构的交互式SQL分析数据库。主要面向TBPB级别的结构化数据的多维分析场景。典型的包括高并发的点查询以及高吞吐的即席查询。目前Palo在百度内部支撑200多条业务线,部署了1000多台服务器。单一业务最大700+TB

Palo的架构非常简单,只有两个主要的进程模块。其中FrontendFE)节点负责元数据的管理、查询计划生成,同时实现了Mysql协议层负责接入用户请求。BackendBE)主要负责数据存储以及查询计划的执行。

 

Palo的设计理念,是构建一款不依赖第三方系统的、高性能、易运维的OLAP数据库系统。这里简要罗列下Palo的一些技术特点:

1.      简单且高度集成的数据库系统,不依赖其他第三方系统。

2.      高可用、高可用。支持扩容缩容,以及自动的副本补齐和均衡。

3.      支持建立物化视图(上卷表),并且多表间原子更新。

4.      支持Mysql协议;标准SQL语句。

5.      数据支持两级分区;支持冷热数据的存储介质分离以及自动迁移。

6.      向量化执行引擎;并行算子。

7.      支持批量导入,以及正在研发中的流式导入。

 

本次沙龙我们准备丰盛的甜点饮品,以及为每一位来宾准备了精美的小礼品。

 

 

 

下面是本次沙龙的一些现场实况:

 

 

 

 

 

 

作为Palo第一次线下沙龙,内容上自然是干货满满。本次沙龙,我们精心准备了3个主题演讲:

 

1.      From Google Mesa to Baidu Palo

在这个主题中,我们的研发工程师李超勇同学,为大家介绍了Palo存储模型相关的设计和实现细节,帮助大家了解Palo独特的数据模型,以便更好的适应不同的业务场景。

 

2.      Holmes on Palo

在这个主题中,我们邀请到了百度统计的陈振宇同学,为我们介绍百度统计的业务场景、以及在Palo上的应用情况。

 

3.      Xiaomi Ads OLAP in Action

最后,我们邀请了来自小米广告业务部的贾菁辉同学,为我们介绍小米广告业务上的OLAP实践。

 

下面我们就每个演讲主题,节选一些本次沙龙的干货片段。

 

1.   From Google Mesa to Baidu Palo

Google2014年发表了一篇论文,向外界展示了其内部用于支撑广告报表业务的数据存储引擎Mesa,以解决包括近实时的数据原子更新、一致性、高可用、可扩展等一系列广告报表业务需求。其独特的聚合模型和MVCC多版本管理,很大程度上解决了一些固定维度报表业务在查询性能等各方面的需求。而Palo正是实现了类似Mesa的这种带有聚合语义的数据模型。

 

 

 

Palo中,数据以关系表的形式存储。表中的列被定义为维度(Key)和指标(Value)。对于Key相同的数据行,会在Value列上进行聚合。目前Palo支持SUMMINMAXREPLACE四种固定的存储预聚合方式。同时,用户可以在基础表之上,指定基础表列的子集创建任意个数的上卷表(ROLLUP),对存储的数据进行进一步的上卷聚合。查询时,Palo会根据查询语句,自动的选择最合适的上卷表进行读取。这种聚合模型,能够极大的减少查询时需要扫描的数据量。

 

当然,这种基于Key-Value的聚合数据模型,在某些场景下并不适用。比如一部分多维分析场景,数据表的列并不区分KeyValue,同时也没有预聚合的需求。在这些场景下,聚合模型为了保证语义正确,可能需要读取大量不相关数据列进行计算,降低了查询效率。因此,Palo还实现了包括Unique Key Duplicate Key在内的其他两种数据模型。这两种数据模型,再加上Palo的列式存储,基本可以满足绝大多数多维分析的业务场景。

 

Palo的另一大特点是多表的原子更新。

 

Palo采用批量的方式进行数据导入。每一批次的数据都一个唯一递增的版本号。Palo支持同一批次的导入在多张表上(包括ROLLUP)原子生效。在业务同一份数据需要导入多张相关联的业务表中的时候,这个功能极大的简化了业务方对多表数据原子可见的开发工作。

 

此外,在这个主题演讲中,我们还介绍了包括在线变更表结构(Online Schema Change)、列存文件组织、查询模型、向量化执行引擎在内的Palo的一些技术特点,以及一些使用上的小Tips。更多的详情,可以在文末下载本次沙龙的PPT合集,或者访问 github.com/baidu/palo/Wiki 查看更多关于Palo的说明和介绍。

 

2.   Holmes on Palo

 

 百度统计在百度内部被称为Holmes项目。百度统计是目前最大的中文网站+APP分析平台。日覆盖活跃站点100w,合作APP达到6w+

 

 

百度统计为用户提供了包括统计报表、多维分析、用户圈选、智能预警等等多角度的用户行为分析功能。其底层的技术栈涵盖了包括Palo在内的众多大数据处理技术。

 

其中Palo主要用于支撑百度统计在统计报表和高级分析(留存分析、转化、用户理解等)方面的功能。

 

 

 

百度统计在Palo中存储了大约6.4万亿条数据,压缩后的单副本数据量大约60T。其中统计报表类的峰值QPS达到1800,平均响应延时在88ms左右,而95分为的响应延时大约为220ms。很好的满足了百度统计在报表方面的需求。

同时,百度统计也将部分高级分析功能构建在了Palo之上。当然,因为目前Palo暂不支持UDF功能。因此譬如漏斗分析之类的一部分高级分析功能,百度统计通过Impala+Parquet的方式实现。随着Palo的发展,我们也会不断根据用户的需求,在Palo中实现更多的功能。

 

3.   Xiaomi Ads OLAP in Action

 

小米广告业务,从流量方看,主要在小米的各个生态产品中进行包括投屏、横幅、锁屏画报、视频广告等形式的广告展示。从广告主的角度来说,包括广告的定向投放,比如按地域、设备、时间、人群等等。以及根据投放的效果进行定制化的策略调整。

 

这些使用需求,映射到OLAP场景,就是转化为不同的维度和指标,进行各种多维分析。

 

小米当前使用的是Mysql+Druid的多维分析解决方案。每日的数据量大约2TB。整个系统每秒需要处理5W+的事件数。并且需要处理22各维度和26个指标的多维分析。

 

Druid作为一款发展多年的分部署数据分析引擎,其优点在于支持实时的数据流导入,并且系统足够稳定,查询性能优良。但也有一些使用上的限制。比如随着业务的发展,不支持维度表的修改,很大程度上限制了业务的灵活性,也提高了业务的数据转换成本。其次,对内存的严重依赖也限制了一些大型查询的成功率。

目前,我们也在积极配合小米的同学,将Palo引入到小米广告的OLAP系统架构中。相比于DruidPalo不仅解决了上面提到的Druid的使用限制,也提供了包括易部署、兼容Mysql、使用预聚合表提升效率等多方面的优势。

 

当然,Palo作为一款刚刚开源的数据库产品,在系统稳定性、功能丰富方面,依然有很大的进步空间。在沙龙的最后,我们也给出了一个初步和GreenPlum的性能对比,让大家对Palo的查询性能有一个比较直观的感受:

 

 

这个是在Star Schema Benchmark上进行的一次查询性能对比。其中黄色部分是GP的查询耗时;灰色部分是当前开源版本的Palo的查询耗时;而蓝色部分是我们正在进行内部稳定性测试的Palo最新版本的查询耗时。可以看到,在最新版本上,Palo相比如GP,有2-6的性能优势。最新版本的Palo正在百度内部进行大规模的线上测试,预计在未来1-2个月,大家就可以在github上下载体验啦。

 

当然,性能只是衡量一个数据库产品的指标之一。性能之外,功能的丰富性、易用性方面,Palo还有很长的路要走。最后,我们给出了PaloRoadMap

 

 

 

其中支持流式导入是Palo 2018上半年的重点开发功能。这个功能的发布,能够极大地提高Palo对各种其他数据源的接入能力,更好的帮助业务从原有的系统迁移到Palo。其次,包括更多的导入文件格式支持、备份恢复、监控报警功能,都将和流式导入一起,在2018年中旬左右与大家见面。而后续的包括查询性能优化在内的功能研发也将逐步提上日程。

 

最后,感谢百度统计和小米的同学为我们带来的精彩主题演讲。同时感谢到场的每一位嘉宾的参与和提出的宝贵意见。希望在我们的共同努力下,Palo能够更好地服务于更多的领域。

 

本次MeetupPPT猛戳这里下载:

https://pan.baidu.com/s/1Lv2ciYipsEXGyuh3rTqBVQ

 

Palo Github

Github.com/baidu/palo

 

最后的最后,招贤纳士!

百度大数据部欢迎各位对大数据领域有见地、有经验、有兴趣的朋友加入!简历请发送至:muyuhang@baidu.com

0
0