Presto 在 B 站的实践
摘要
在介绍Presto在B站的实践之前,先从整体来看看SQL在B站的使用情况,在B站的离线平台,核心由三大计算引擎Presto、Spark、Hive以及分布式存储系统HDFS和调度系统Yarn组成。
如下架构图所示,我们的ADHOC、BI、DQC以及数据探查等服务都是通过自研的Dispatcher路由服务来进行统一SQL调度,Dispatcher会结合查询语句的语法特征,库表读HDFS的数据量以及引擎的负载情况等因素动态决定选择最合适的计算引擎执行,如果是Hive的语法需要用Presto执行的,目前利用Linkedin开源的coral对语句进行转化,如果执行的SQL失败了会做引擎自动降级,降低用户使用门槛;调度平台支持Spark、Hive、Presto cli的方式提交ETL作业到Yarn进行调度;Presto gateway服务负责对Presto进行多集群管理和路由;我们通过Kyuubi来提供多租户能力,对不同部门管理各自的Spark Engine,提供adhoc查询;目前各大引擎Hive、Spark、Presto以及HDFS都接入了Ranger来进行权限认证,HDFS通过路径来控制权限,计算引擎通过库/表来控制权限,并且我们通过一套Policy来实现表, column masking和row filter的权限控制;部分组件比如Presto、Alluxio、Kyuubi、Presto Gateway、Dispatcher, 包括混部Yarn集群都已经通过公司k8s平台统一部署调度。
欢迎在评论区写下你对这篇文章的看法。