Trino引擎在小米的應(yīng)用實(shí)踐_第1頁(yè)
Trino引擎在小米的應(yīng)用實(shí)踐_第2頁(yè)
Trino引擎在小米的應(yīng)用實(shí)踐_第3頁(yè)
Trino引擎在小米的應(yīng)用實(shí)踐_第4頁(yè)
Trino引擎在小米的應(yīng)用實(shí)踐_第5頁(yè)
已閱讀5頁(yè),還剩57頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

周渝豪-小米-大數(shù)據(jù)軟件工程師DataFunSummit#2023CONTENT01架構(gòu)定位DataFunSummit#2023CLIMetadataWorkerJDBCCLIMetadataWorkerJDBCWorkerHTTPWorkerHiveIcebergKuduMySQL…HDFSHDFSOSSOSSMySQLMySQL……架構(gòu)清晰架構(gòu)清晰Master-Slave架構(gòu)全內(nèi)存運(yùn)算Pipeline模式動(dòng)態(tài)代碼生成可拔插Connector數(shù)跨源聯(lián)邦查詢(xún)方便自定義函存算分離無(wú)依賴(lài)系統(tǒng)獨(dú)立單主節(jié)點(diǎn)加上內(nèi)存限制單個(gè)節(jié)點(diǎn)一般32G以上基于內(nèi)存模式設(shè)計(jì)和元數(shù)據(jù)服務(wù)小米的OLAP和元數(shù)據(jù)服務(wù)ServiceEngineEngineManagerMetastoreMetastoreService權(quán)限驗(yàn)證引擎發(fā)現(xiàn)元信息獲取HTTPHTTPJDBC/ThriftJDBC/ThriftWebWebUISQLSQLParserKyuubiKyuubiServerEngineOLAP接入方式SQL代理層SQL引擎層KyuubiEngine執(zhí)行SparkSQL任務(wù),讀寫(xiě)擅長(zhǎng)Hive、KyuubiEngine執(zhí)行SparkSQL任務(wù),讀寫(xiě)擅長(zhǎng)Hive、Spark和MySQL對(duì)接Spark語(yǔ)法解析兼容SparkSQL語(yǔ)法,只讀Metacat對(duì)統(tǒng)一管理元數(shù)據(jù)>>統(tǒng)一使用SparkSQL語(yǔ)法不僅是數(shù)據(jù)量大,還有種類(lèi)來(lái)源豐富:不僅是數(shù)據(jù)量大,還有種類(lèi)來(lái)源豐富:?Kudu存儲(chǔ)引擎?Iceberg數(shù)據(jù)湖?關(guān)系型數(shù)據(jù)庫(kù)在小米Trino主要被用來(lái)提升用戶(hù)可見(jiàn)部分的性即席查詢(xún),統(tǒng)計(jì)報(bào)表等讓大數(shù)據(jù)更快到達(dá)用戶(hù)眼前。更快的接入新數(shù)據(jù)源,更快的分析處理速度。內(nèi)部場(chǎng)景測(cè)試相比SparkSQL,Trino能夠提供5-10倍的性能提升。初步引入功能完善基本成熟初步引入功能完善基本成熟升級(jí)386版本應(yīng)用場(chǎng)景優(yōu)化升級(jí)386版本應(yīng)用場(chǎng)景優(yōu)化基于352版本內(nèi)部特性適配核心能力提升緊跟社區(qū)的步伐,每年進(jìn)行一次大版本升級(jí)02DataFunSummit#20230203010203兼容SparkSQL兼容SparkSQL優(yōu)化Iceberg使用動(dòng)態(tài)Catalog加載動(dòng)態(tài)UDF加載集成測(cè)試和自動(dòng)發(fā)布兼容SparkSQLSparkSQLSELECTSELECT‘1’`id`,“Bob’sSon”`name`FROMtestSELECTSELECT‘1’“id”,‘Bob’’sSon’FROMtest“”Tips:小米統(tǒng)一使用SparkSQL作為標(biāo)準(zhǔn)OLAP查詢(xún)語(yǔ)言>字面量和標(biāo)識(shí)符的引用方式不同>語(yǔ)法不同,比如Array>語(yǔ)義不同,比如ArraySpark和Trino的SQL語(yǔ)法和語(yǔ)義都存在不同SparkSqlRewriterSparkSQLSparkSQLSQLParserYesSQLSuccess?QuerySparkSqlRewriterSparkSQLSparkSQLSQLParserYesSQLSuccess?QueryExecuteSparkSparkSQLParserSparkSparkSQLSparkSQLRewriter解決了80%以上的語(yǔ)法兼容問(wèn)題隱式轉(zhuǎn)換兼容SparkSQL隱式轉(zhuǎn)換類(lèi)型轉(zhuǎn)換類(lèi)型轉(zhuǎn)換?INT轉(zhuǎn)成BIGINT:加寬類(lèi)型(Typewidening)?STRING轉(zhuǎn)INT:翻譯類(lèi)型(Typetranslation)顯/隱式轉(zhuǎn)換顯/隱式轉(zhuǎn)換?顯示轉(zhuǎn)換:用CAST進(jìn)行類(lèi)型轉(zhuǎn)換,比如CAST(1ASDOUBLE)?隱式轉(zhuǎn)換:計(jì)算引擎自動(dòng)根據(jù)需要的類(lèi)型對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換,比如1/‘2’(String轉(zhuǎn)換成Int)Trino只支持加寬類(lèi)型的隱式轉(zhuǎn)換>session參數(shù)use_spark_syntax>配置級(jí)別參數(shù)use-spark-syntax>ANTI/SEMIJOIN>ANTI/SEMIJOIN>Hints語(yǔ)法>Table-valuedFunctions>部分Spark函數(shù)99.6%99.6%兼容率核心能力優(yōu)化Iceberg使用IcebergIceberg?適用于大型分析數(shù)據(jù)集的開(kāi)放表格式?支持事務(wù)性,模式演進(jìn),隱式分區(qū)和行級(jí)更新等?適用于各種云存儲(chǔ)和HDFS等?讀取內(nèi)存占用高,容易導(dǎo)致集群OOM?對(duì)Timestamp處理和Spark不一致(非錯(cuò)誤)?表的讀取存在正確性和性能問(wèn)題>降低讀取Iceberg元數(shù)據(jù)內(nèi)存需求>優(yōu)化Trino計(jì)算過(guò)程內(nèi)存統(tǒng)計(jì)>支持按照session時(shí)區(qū)讀取timestamp>支持高效讀取Iceberg行級(jí)更新表>修復(fù)Iceberg表讀取列錯(cuò)誤問(wèn)題Unixtimestamp0Spark核心能力優(yōu)化Iceberg使用Unixtimestamp0SparkTimestampTimestamp1970-01-0100:00:00Timestamp類(lèi)型一般與Unix時(shí)間戳對(duì)應(yīng)IcebergIcebergTableSchema1970-01-0100:00:000TimestampTimestamp1970-01-0108:00:00Spark會(huì)將Timestamp轉(zhuǎn)換成本地時(shí)間TimestampTimestamp1970-01-0100:00:00Iceberg定義使用Unixtimestamp存儲(chǔ)timestamp類(lèi)型數(shù)據(jù)Trino會(huì)直接使用Timestamp時(shí)間為保持用戶(hù)查詢(xún)結(jié)果一致,Trino也修改為轉(zhuǎn)換成本地時(shí)間part000.parqupart001.parqupart000-.parquetpart000.parqupart001.parqupart000-.parquet優(yōu)化前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優(yōu)化后partpart000.parqu將相同Schema的equality-delete文件先合并再進(jìn)行merge,加快讀取速度。部分場(chǎng)景能將查詢(xún)耗時(shí)由數(shù)十分鐘降低到幾十秒。社區(qū)實(shí)現(xiàn)Worker從Coordinator動(dòng)態(tài)獲取Catalog8社區(qū)實(shí)現(xiàn)Worker從Coordinator動(dòng)態(tài)獲取Catalog8Coordinator暫不支持動(dòng)態(tài)注冊(cè)CatalogWorker負(fù)載高時(shí)獲取Catalog失敗小米實(shí)現(xiàn)所有節(jié)點(diǎn)從Metacat獲取動(dòng)態(tài)Catalog零失敗并發(fā)加載數(shù)千CatalogLazy?啟動(dòng)預(yù)加載時(shí)間隨Catalog數(shù)線(xiàn)性增加靜態(tài)靜態(tài)Catalog動(dòng)態(tài)獲取Catalog…動(dòng)態(tài)UDF加載PUSHFDSFDSPULL實(shí)時(shí)生效發(fā)布訂閱插件模式版本管理實(shí)時(shí)生效發(fā)布訂閱插件模式Push審計(jì)日志和歷史服務(wù)PushReadIcebergIceberg消息中間件消息中間件TalosCluster1Cluster2運(yùn)維能力Cluster1Cluster2>測(cè)試SQL的語(yǔ)法語(yǔ)義正確性>從SQL文件、審計(jì)日志表中獲取語(yǔ)句進(jìn)行查詢(xún)采用SparkHash算法對(duì)每行數(shù)據(jù)進(jìn)行運(yùn)算并求和……));>>HiveMetastore使用連接池提升元數(shù)據(jù)訪(fǎng)問(wèn)穩(wěn)定性>增加管理接口和Metrics指標(biāo)管理集群實(shí)時(shí)狀態(tài)>支持使用Nacos管理集群資源組配置>支持集群的快速重啟和worker優(yōu)雅滾動(dòng)重啟03DataFunSummit#2023優(yōu)點(diǎn):>大集群,支持更多更復(fù)雜的查詢(xún)?nèi)秉c(diǎn):>大集群對(duì)Coordinator配置要求更高>資源隔離效果更難把握 WorkerWorker優(yōu)點(diǎn):>多集群可以利用集群進(jìn)行資源隔離>根據(jù)不同的需求定制集群缺點(diǎn):>只能通過(guò)失敗重試保證容錯(cuò)>多集群的運(yùn)維管理更為復(fù)雜>對(duì)長(zhǎng)時(shí)間復(fù)雜查詢(xún)不能保證成功率 WorkerWorkerWorkerSQLSQLProxy WorkerWorker WorkerWorker集群容器平臺(tái)Code安裝包存儲(chǔ)系統(tǒng)管理集群容器平臺(tái)Code安裝包存儲(chǔ)系統(tǒng)管理平臺(tái)集群Code對(duì)象存儲(chǔ)多集群管理鏡像鏡像存儲(chǔ)CICI平臺(tái)CICI平臺(tái)開(kāi)發(fā)管理>服務(wù)配置解耦>統(tǒng)一集群管理公共集群集群組A來(lái)源用戶(hù)角色公共集群集群組A來(lái)源用戶(hù)角色多集群管理 集群組B集群組B空間空間路由和資源管理>按業(yè)務(wù)區(qū)分集群,保證資源的隔離>動(dòng)態(tài)路由規(guī)則配置,支持黑白名單,保證負(fù)載均衡>資源組配置,單集群限制資源占用,保證穩(wěn)定性即席查詢(xún)即席查詢(xún)數(shù)據(jù)預(yù)覽即席查詢(xún)場(chǎng)景說(shuō)明:>追求的極致的速度,秒級(jí)>獨(dú)立的集群,保證資源隔離>集群內(nèi)嚴(yán)格限制大查詢(xún)>快速失敗小米BI數(shù)鯨微軟PowerBI場(chǎng)景說(shuō)明:>較快的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論