1.为什么须要数据湖架构
为什么须要数据湖?与其它技术一样,数据湖自身也是由需求而生的。早期都是离线数仓,为了应答如今数据剖析中越来越多的实时性场景,以及对 ACID、事物性隔离越来越高的要求,数据湖技术应运而生。传统的数据湖三剑客为 Iceberg、Hudi 和 Delta lake,从去年开局,开源的 Apache Paimon 这个正在蓬勃开展的数据湖格局,已成为一颗徐徐升起的新星。
数据湖架构的关键好处有三慷慨面:
这些好处正是咱们选用数据湖架构的理由。
Paimon 是一个新兴的湖格局,它可以很好地联合 Flink 和 Spark 构建实时数据湖,用于流式和批处置操作。后来它只是 Flink 内置的 Table Store 的一个格局,之后经过漫长的开展,成为了一个独立完整的名目,往年从 ASF 孵化进去,成为一个正式的顶级名目。Paimon 可以完整地允许批处置和流处置,它翻新性地将 LSM Tree 与湖格局相联合,具有更高效的实时更新才干。与其它湖格局相比,有着更优的读写性能,以及更高的 compaction 效率。
Paimon 的好处关键在以下四慷慨面:
StarRocks+Paimon 的最大好处是查问快,可以用来代替传统的 OLAP 剖析方案。
例如经常使用 Paimon 为底座的数据湖,假定用 Presto、Trino 或许 Impala 去查的速度作为基准,不做任何其它更改,仅是将查问引擎换成 StarRocks,就可以带来三倍的性能优化。这关键是由于 StarRocks 有着十分低劣的 CBO 优化器,以及完整的向量化口头引擎,并且在读取数据湖启动 IO 操作的时刻,做了十分细粒度的控制,比如 IO 兼并以及提前物化技术等。
假构想要更大的性能优化,只须要开启 StarRocks 的本地缓存性能> 应用 StarRocks 外表的物化视图性能,还可以失掉更快的查问速度。经常使用该性能,StarRocks 会把湖上的数据转换老自己的格局存起来,当成是自己的内表启动存储、索引构建,这样就可以失掉 10 倍的性能优化。
同时,Paimon 物化视图可以允许多种查问个性,比如透明减速,即查问表的时刻,用户可以不感知物化视图的存在,而是将其当成 StarRocks 的一个外表就可以了,SQL 里是 StarRocks 的外表,但 StarRocks 会将查问智能路由到物化视图,用物化视图去减速查问并前往数据。
Paimon 物化视图还允许查问改写,物化视图的构建很多时刻是与查问 pattern 严密关系的。例如,查问 pattern 是三个表的 join,对这三个表做了物化视图之后,又想查其中两个表的 join 结构,StarRocks 的查问改写可以不须要再重复建两个表的物化视图,允许智能把这两个表的 join 改写到原来基于三个表的物化视图上,到达查问减速度的目的。
物化视图也允许嵌套分层,在一个物化视图在上方再加一层物化视图,也就是可以起到数据建模的作用。
Paimon 还具有冷热分别的性能。业务的数据量是不时下跌的,很多离线加工义务积聚了多年的数据,但实践 OLAP 查问最多也就查近几年、近几个月或许近几天的数据。StarRocks 冷热分别性能,性能物化视图只存近几天的数据,剩下的数据都在便宜对象存储上。用户只需写一个 SQL,不须要关心数据从哪来,StarRocks 会智能去解析这个 SQL、做一些正当的 plan,智能判别哪些数据可以间接从物化视图读,哪些数据到湖格局上读,而后把这两个局部的结果 union 进去,最后前往到最终结果里。冷热分别的效果,相当于热数据查问永远都很快,由于间接命中物化视图,但冷数据依然可以保留在便宜存储的外表里,到达降本增效的目的。
以上,就是 StarRocks+Paimon 的加快数据库剖析方案,以及在结构一个湖剖析方案时如何取得更高的性能。
上文提到,Trino 间接换成 StarRocks 就有 3 倍的性能优化,但关于业务来说间接迁徙引擎无法防止地会带来业务的变革和改 SQL 的状况,假设 SQL 很大很长,改起来会比拟费事。接上去将分享如何缩小业务迁徙的痛点。
假设业务是从 Presto 或许 Trino 迁徙到 StarRocks,这是最便捷的,不须要任何改变,由于 StarRocks 曾经内置了 Trino 的语法解析器。只需在 StarRocks 里设置 set sql_dialect=“Trino”,原来 Trino 的 SQL 间接放进 StarRocks 就可以智能实现解析,将 Trino 语法的 SQL 转换成 StarRocks 自己的逻辑方案以及物理口头方案,最后口头前往。咱们在多家客户的实践案例中测试,对 Trino 和 Presto 的兼容度基本在 90% 以上。剩下的就是一些 Corner Case,比如一些很少用到的天文计算函数或数学计算函数等,才会发生不兼容的状况。
除了最罕用的 Trino、Presto,大家还会用到一些其它的计算引擎,比如传统的 Impala、Doris、ClickHouse、Hive、Spark SQL 等,假构想往 StarRocks 迁徙,可以参考一个开源名目——SQLGlot,它相当于一个 SQL 转换器,允许各种 SQL 的转换,经常使用特意便捷,实质上是一个 python 程序,下载上去就可以间接用。
如上图中所示,转换方法就是填写三个参数,第一个参数是要转换的 SQL,第二个参数是 read 参数,通知它这个 SQL 是什么引擎的 SQL 语法,比如例子中的是“duckdb”,第三个参数是 write 参数,通知它要转换成什么引擎的 SQL 语法,例子中的是“hive”。最后运转一下,就可以实现 SQL 转换。
这个名目除了 SQL 转换,还有 SQL 优化、SQL 格局化、SQL 语法审核等性能。当咱们的客户想把其它引擎迁徙到 StarRocks 的时刻,尤其是 Impala,咱们经常会介绍这个名目。
上方引见 StarRocks 集群间的迁徙。假设如今曾经有了一个 StarRocks 集群,然而版本十分老,想要更新到最新版本。最好的方案就是开一个新集群,而后把数据复制上来,等数据复制实现之后,业务间接切换过去即可。假设新的集群有疑问,还可以间接一键回滚。假设间接原地更新,当遇到遇到疑问的时刻,还得做升级,业务也得跟着终止,这样来回做一些重复的操作,对业务是有清楚影响的。
这里引见一个 StarRocks 集群间迁徙的详细方法,除了做迁徙,很多客户也用这个工具做热备和灾备。如上图中所示,左右两个框代表两个集群,这个工具可以把原集群一切的数据智能同步到新的指标集群,实践上就是 copy 数据,提前大略在分钟级,可以做到准实时。在数据同步中,原集群不用做任何修正,导数、删表、加分区、删分区等 DDL 操作、导入操作带来的数据变卦都会无缝地经过这个工具迁徙到新集群去。这样等新集群预备好后,业务就可以间接切换了,或许罗唆将其作为一个灾备系统也是可以的。
经常使用这个工具十分便捷,下载好后,性能一些必要的参数,如性能两头集群的 IP、用户名明码等,即可开局经常使用。
4.经常使用阿里云 EMR StarRocks 构建基于 Paimon 加快实时湖仓剖析架构
大家在经常使用 StarRocks 的时刻,经常会遇到一些运维疑问,接上去引见阿里云 StarRocks 基于 Paimon 的加快实时剖析架构。阿里云的 EMR Serverless StarRocks 分为三个版本,一个是存算一体,另外一个是存算分别,第三个是当天重点讲的数据湖剖析。
上方是用 StarRocks 做数据湖剖析的一个截图。关键包括两步:第一步,以 Paimon为例建一个 Catalog,CREATE EXTERNAL CATALOG paimon_fs_catalog,增加一个参数用来指定 paimon 数据所在对象存储的位置,最后就可以间接查问 Paimon 数据湖里的数据了。
关于前面引见的数据减速的物化视图局部,可以参考上图中第二个红框中的代码,即 CREATE MATERIALIZED VIEW 语法创立物化视图,指定好物化视图的刷新频率,比如例子中的刷新频率是 1 分钟,保留好之后,就可以间接查问这个物化视图了。
阿里云的 EMR Serverless StarRocks 蕴含了各种各样运维和管控才干,例如查问剖析,Profile 可视化,导入剖析,用户权限剖析,数据血统剖析等。
以上就是本次分享的关键内容。