1、DataFunSummitDataFunSummit#20232023TrinoTrino引擎在小米的应用实践引擎在小米的应用实践周渝豪-小米-大数据软件工程师架构定位架构定位介绍小米的OLAP整体架构,以及Trino的定位和发展主要工作主要工作包括小米对Trino的内部适配,功能完善和核心能力建设应用场景应用场景简单说明Trino在小米的维护使用方式和几个实际的应用场景未来规划未来规划目前Trino正在进行的工作和进展,以及未来的方向目录目录 CONTENTCONTENTDataFunSummitDataFunSummit#202320230101架构定位架构定位Trino历史Trino架构
2、TrinoTrinoCLICLITrinoTrinoJDBCJDBCTrinoTrinoHTTPHTTPMetadataMetadataTrinoTrinoCoordinatorCoordinatorTrinoTrinoWorkerWorkerTrinoTrinoWorkerWorkerTrinoTrinoWorkerWorkerHDFSHDFSOSSOSSMySQLMySQLHiveHiveIcebergIcebergKuduKuduMySQLMySQLTrino优缺点架构清晰Master-Slave架构 存算分离 无依赖系统独立速度快全内存运算 Pipeline模式 动态代码生成扩展性强可
3、拔插Connector 跨源联邦查询 方便自定义函数内存要求高单个节点一般32G以上失败容忍低基于内存模式设计并发能力不足单主节点加上内存限制小米的OLAP架构Authorization ServiceEngine ManagerMetastore Service统一认证、授权统一认证、授权和元数据服务和元数据服务HTTPJDBC/ThriftWeb UIOLAPOLAP接入方式接入方式SQL ParserKyuubi ServerSQLSQL代理层代理层Kyuubi EngineTrinoDorisKylinSQLSQL引擎层引擎层权限验证引擎发现元信息获取小米的Trino定位 统一使用Sp
4、ark SQL语法 Trino只用于查询操作 Kyuubi负责接入和权限控制 Metacat统一元数据管理用户用户擅长Hive、Spark和MySQLKyuubi ProxyKyuubi Proxy对接Spark语法解析Kyuubi EngineKyuubi Engine执行执行Spark SQLSpark SQL任务任务,读写,读写TrinoTrino兼容兼容Spark SQLSpark SQL语法,只读语法,只读MetacatMetacat对统一管理元数据小米Trino目标让大数据更快到达用户眼前。让大数据更快到达用户眼前。更快更快的接入新数据源,更快的分析处理速度。内部场景测试相比Spa
5、rk SQL,Trino能够提供5-10倍的性能提升。大数据不仅是数据量大,还有种类来源丰富:Hive数仓Kudu存储引擎Iceberg数据湖关系型数据库眼前在小米Trino主要被用来提升用户可见部分的性能提升,比如数据预览,即席查询,统计报表等等。小米Trino发展基于352版本内部特性适配升级386版本应用场景优化升级421版本核心能力提升紧跟社区的步伐,每年进行一次大版本升级DataFunSummitDataFunSummit#202320230202主要工作主要工作主要工作核心能力核心能力 兼容Spark SQL 优化Iceberg使用0101扩展能力扩展能力 动态Catalog加载
6、动态UDF加载0202运维能力运维能力 审计日志和历史服务 集成测试和自动发布0303核心能力兼容Spark SQL 字面量和标识符的引用方式不同 Spark:单双引号字面量,反引号标识符 Trino:单引号字面量,双引号标识符 语法不同,比如Array Spark:Array()Trino:Array 语义不同,比如Array Spark:下标从0开始 Trino:下标从1开始SELECT 1 id,“Bobs Son”name FROM test WHERE array(1,2,3)0=1;Spark SQLSELECT 1“id”,Bobs Son“name”FROM test WHER