Trino引擎在小米的应用实践_第1页
Trino引擎在小米的应用实践_第2页
Trino引擎在小米的应用实践_第3页
Trino引擎在小米的应用实践_第4页
Trino引擎在小米的应用实践_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

周渝豪-小米-大数据软件工程师DataFunSummit#2023CONTENT01架构定位DataFunSummit#2023CLIMetadataWorkerJDBCCLIMetadataWorkerJDBCWorkerHTTPWorkerHiveIcebergKuduMySQL…HDFSHDFSOSSOSSMySQLMySQL……架构清晰架构清晰Master-Slave架构全内存运算Pipeline模式动态代码生成可拔插Connector数跨源联邦查询方便自定义函存算分离无依赖系统独立单主节点加上内存限制单个节点一般32G以上基于内存模式设计和元数据服务小米的OLAP和元数据服务ServiceEngineEngineManagerMetastoreMetastoreService权限验证引擎发现元信息获取HTTPHTTPJDBC/ThriftJDBC/ThriftWebWebUISQLSQLParserKyuubiKyuubiServerEngineOLAP接入方式SQL代理层SQL引擎层KyuubiEngine执行SparkSQL任务,读写擅长Hive、KyuubiEngine执行SparkSQL任务,读写擅长Hive、Spark和MySQL对接Spark语法解析兼容SparkSQL语法,只读Metacat对统一管理元数据>>统一使用SparkSQL语法不仅是数据量大,还有种类来源丰富:不仅是数据量大,还有种类来源丰富:•Kudu存储引擎•Iceberg数据湖•关系型数据库在小米Trino主要被用来提升用户可见部分的性即席查询,统计报表等让大数据更快到达用户眼前。更快的接入新数据源,更快的分析处理速度。内部场景测试相比SparkSQL,Trino能够提供5-10倍的性能提升。初步引入功能完善基本成熟初步引入功能完善基本成熟升级386版本应用场景优化升级386版本应用场景优化基于352版本内部特性适配核心能力提升紧跟社区的步伐,每年进行一次大版本升级02DataFunSummit#20230203010203兼容SparkSQL兼容SparkSQL优化Iceberg使用动态Catalog加载动态UDF加载集成测试和自动发布兼容SparkSQLSparkSQLSELECTSELECT‘1’`id`,“Bob’sSon”`name`FROMtestSELECTSELECT‘1’“id”,‘Bob’’sSon’FROMtest“”Tips:小米统一使用SparkSQL作为标准OLAP查询语言>字面量和标识符的引用方式不同>语法不同,比如Array>语义不同,比如ArraySpark和Trino的SQL语法和语义都存在不同SparkSqlRewriterSparkSQLSparkSQLSQLParserYesSQLSuccess?QuerySparkSqlRewriterSparkSQLSparkSQLSQLParserYesSQLSuccess?QueryExecuteSparkSparkSQLParserSparkSparkSQLSparkSQLRewriter解决了80%以上的语法兼容问题隐式转换兼容SparkSQL隐式转换类型转换类型转换•INT转成BIGINT:加宽类型(Typewidening)•STRING转INT:翻译类型(Typetranslation)显/隐式转换显/隐式转换•显示转换:用CAST进行类型转换,比如CAST(1ASDOUBLE)•隐式转换:计算引擎自动根据需要的类型对数据进行转换,比如1/‘2’(String转换成Int)Trino只支持加宽类型的隐式转换>session参数use_spark_syntax>配置级别参数use-spark-syntax>ANTI/SEMIJOIN>ANTI/SEMIJOIN>Hints语法>Table-valuedFunctions>部分Spark函数99.6%99.6%兼容率核心能力优化Iceberg使用IcebergIceberg•适用于大型分析数据集的开放表格式•支持事务性,模式演进,隐式分区和行级更新等•适用于各种云存储和HDFS等•读取内存占用高,容易导致集群OOM•对Timestamp处理和Spark不一致(非错误)•表的读取存在正确性和性能问题>降低读取Iceberg元数据内存需求>优化Trino计算过程内存统计>支持按照session时区读取timestamp>支持高效读取Iceberg行级更新表>修复Iceberg表读取列错误问题Unixtimestamp0Spark核心能力优化Iceberg使用Unixtimestamp0SparkTimestampTimestamp1970-01-0100:00:00Timestamp类型一般与Unix时间戳对应IcebergIcebergTableSchema1970-01-0100:00:000TimestampTimestamp1970-01-0108:00:00Spark会将Timestamp转换成本地时间TimestampTimestamp1970-01-0100:00:00Iceberg定义使用Unixtimestamp存储timestamp类型数据Trino会直接使用Timestamp时间为保持用户查询结果一致,Trino也修改为转换成本地时间part000.parqupart001.parqupart000-.parquetpart000.parqupart001.parqupart000-.parquet优化前part000-.parquetpart001-part000-.parquetpart001-.parquetIcebergTable`users`IcebergDataIcebergTable`users`id(key)nameage1Alice18320INSERTINSERTINTOusers/*+OPTIONS('upsert-enabled'='true')*/SELECT1,Alice,20;IcebergDataFileid(key)nameage1Alice20PositionDelete:part000.parquet,1EqualityDelete:part000.parquet,id=1partpart000.parqu..parquet优化后partpart000.parqu将相同Schema的equality-delete文件先合并再进行merge,加快读取速度。部分场景能将查询耗时由数十分钟降低到几十秒。社区实现Worker从Coordinator动态获取Catalog8社区实现Worker从Coordinator动态获取Catalog8Coordinator暂不支持动态注册CatalogWorker负载高时获取Catalog失败小米实现所有节点从Metacat获取动态Catalog零失败并发加载数千CatalogLazy?启动预加载时间随Catalog数线性增加静态静态Catalog动态获取Catalog…动态UDF加载PUSHFDSFDSPULL实时生效发布订阅插件模式版本管理实时生效发布订阅插件模式Push审计日志和历史服务PushReadIcebergIceberg消息中间件消息中间件TalosCluster1Cluster2运维能力Cluster1Cluster2>测试SQL的语法语义正确性>从SQL文件、审计日志表中获取语句进行查询采用SparkHash算法对每行数据进行运算并求和……));>>HiveMetastore使用连接池提升元数据访问稳定性>增加管理接口和Metrics指标管理集群实时状态>支持使用Nacos管理集群资源组配置>支持集群的快速重启和worker优雅滚动重启03DataFunSummit#2023优点:>大集群,支持更多更复杂的查询缺点:>大集群对Coordinator配置要求更高>资源隔离效果更难把握 WorkerWorker优点:>多集群可以利用集群进行资源隔离>根据不同的需求定制集群缺点:>只能通过失败重试保证容错>多集群的运维管理更为复杂>对长时间复杂查询不能保证成功率 WorkerWorkerWorkerSQLSQLProxy WorkerWorker WorkerWorker集群容器平台Code安装包存储系统管理集群容器平台Code安装包存储系统管理平台集群Code对象存储多集群管理镜像镜像存储CICI平台CICI平台开发管理>服务配置解耦>统一集群管理公共集群集群组A来源用户角色公共集群集群组A来源用户角色多集群管理 集群组B集群组B空间空间路由和资源管理>按业务区分集群,保证资源的隔离>动态路由规则配置,支持黑白名单,保证负载均衡>资源组配置,单集群限制资源占用,保证稳定性即席查询即席查询数据预览即席查询场景说明:>追求的极致的速度,秒级>独立的集群,保证资源隔离>集群内严格限制大查询>快速失败小米BI数鲸微软PowerBI场景说明:>较快的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论