01
實(shí)/力/平/臺(tái)
about us
金華市全民健身中心 浙中體育發(fā)展有限公司具備多樣化體育場(chǎng)館,滿足市民健身需求,并具有承辦市級(jí)、省級(jí)、國(guó)家級(jí)等專業(yè)比賽場(chǎng)所資質(zhì),是本市地標(biāo)性建設(shè)之一,是亞運(yùn)會(huì)、省運(yùn)會(huì)的比賽場(chǎng)館。
02
崗/位/需/求
Position requirements
03
工/作/時(shí)/間
Job recruitment
白班:8:00-16:00;晚班:14:30-21:30
04
招/聘/條/件
Recruitment conditions
1.在校大學(xué)生或高考畢業(yè)生,年齡18周歲以上,男女不限;
2.吃苦耐勞,對(duì)工作認(rèn)真負(fù)責(zé),服從單位安排;
3.身體健康,無疾??;
4.五官端正,形象氣質(zhì)佳。
05
實(shí)/習(xí)/時(shí)/間
Practice time
2022年7月1日-2022年8月31日
06
薪/資/待/遇
Compensation Package
1.1500元/月+意外險(xiǎn),簽訂臨時(shí)勞務(wù)合同
2.餐費(fèi)補(bǔ)貼300元/月+全勤補(bǔ)貼600元(實(shí)習(xí)期滿兩個(gè)月后可享受)
3.有應(yīng)急救護(hù)相關(guān)的專技特長(zhǎng)證書額外給予200元/月補(bǔ)貼(多證書不重復(fù)計(jì)算)
4.本單位可以給予實(shí)習(xí)證明。
07
報(bào)/名/方/式
Registration details
報(bào)名方式一:
報(bào)名地點(diǎn):金華市雙龍南街2688號(hào)(金華市體育中心)體育場(chǎng)北區(qū)一樓1115辦公室
報(bào)名電話:89161660(朱女士)
報(bào)名郵箱:544304804@qq.com
報(bào)名時(shí)請(qǐng)攜帶學(xué)生證、身份證等相關(guān)證件的原件及復(fù)印件,近期免冠1寸照片。
報(bào)名方式二
通過亞運(yùn)省運(yùn)領(lǐng)導(dǎo)小組志愿服務(wù)部已招募人員中推選。
08
注/意/事/項(xiàng)
attention
本次招聘采取面試考核方式。
導(dǎo)讀:今天分享的主題是《Kyuubi 在小米大數(shù)據(jù)平臺(tái)的應(yīng)用實(shí)踐》,主要分為四部分內(nèi)容:
01
Kyuubi 在小米的落地過程
第一個(gè)主題:關(guān)于Kyuubi在小米的大數(shù)據(jù)平臺(tái)落地過程和實(shí)施路徑的分享。
1. 背景介紹
先介紹一下背景,小米的大數(shù)據(jù)體系在不斷更新和迭代,隨著業(yè)務(wù)架構(gòu)、組織架構(gòu)和技術(shù)架構(gòu)的調(diào)整,內(nèi)部大數(shù)據(jù)平臺(tái)逐漸出現(xiàn)一些狀況:
a. MySQL/Doris: 系統(tǒng)的自有的 User&Password 認(rèn)證和權(quán)限體系
b. Hive/Kudu基于 Kerberos 認(rèn)證和 Sentry 的權(quán)限體系
c. Talos是基于小米內(nèi)部平臺(tái)組織和團(tuán)隊(duì)的認(rèn)證與授權(quán)體系
2. 構(gòu)建一站式的大數(shù)據(jù)開發(fā)平臺(tái)
上述現(xiàn)象直接導(dǎo)致了如下問題:
①對(duì)用戶:
②對(duì)平臺(tái):
面對(duì)數(shù)據(jù)平臺(tái)難用的情況,提出了構(gòu)建統(tǒng)一易用的大數(shù)據(jù)服務(wù)平臺(tái)整體目標(biāo)。整體架構(gòu)能力圍繞數(shù)據(jù)鏈路解決方案、數(shù)倉(cāng)解決方案、數(shù)據(jù)服務(wù)解決方案來進(jìn)行建設(shè),提供統(tǒng)一的元數(shù)據(jù)管理和權(quán)限管理體系。
在這個(gè)大背景和動(dòng)機(jī)下,統(tǒng)一的數(shù)據(jù)入口服務(wù)成為了一個(gè)非常重要的能力,它主要解決:
3. 小米SQL服務(wù)歷史發(fā)展情況
從上面的背景問題中可以看到,小米內(nèi)部有幾套大數(shù)據(jù)處理的SQL服務(wù)入口,總體還是圍繞經(jīng)典的SQL On hadoop架構(gòu)體系來構(gòu)建,逐步從ThriftServer演進(jìn)到向上抽象一層的SQL Proxy服務(wù),在底層集成了Hive/Spark/Doris等引擎為ETL作業(yè)、Ad-Hoc查詢提供支持。
抽離的SparkThriftServer的實(shí)現(xiàn)模塊作為獨(dú)立的SQL Proxy服務(wù),提供:
從這里可以看到SQL Proxy和Kyuubi Server的定位非常相似,但是存在很多不足:
a. SQL Proxy 沒有完全剝離STS的實(shí)現(xiàn),通過反射的方式進(jìn)行復(fù)用,代碼耦合很高,依賴Spark特定版本,升級(jí)困難
b. 底層引擎代理層沒有統(tǒng)一抽象,與其他引擎適配困難,對(duì)底層引擎擴(kuò)展性差
c. 無法本地調(diào)試,依賴Hadoop配置,在辦公和服務(wù)環(huán)境網(wǎng)絡(luò)隔離情況下,必須在開發(fā)機(jī)上完成完整的功能測(cè)試和調(diào)試,開發(fā)和部署路徑長(zhǎng)
4. 基于Kyuubi 構(gòu)建統(tǒng)一SQL入口
(1) 為什么選擇Kyuubi
通過上面的分析,我們發(fā)現(xiàn)在業(yè)務(wù)和架構(gòu)上都存在著一些問題需要解決。
① 業(yè)務(wù)上:
SQLProxy架構(gòu)需要升級(jí):
Kyuubi的優(yōu)勢(shì)在于:
SQLProxy和Kyuubi的架構(gòu)非常相似,切換成本低。在業(yè)務(wù)需求和架構(gòu)升級(jí)的雙重推動(dòng)下,我們選擇了Kyuubi。
(2)架構(gòu)升級(jí)
升級(jí)過程和效果與我們的預(yù)期一致,可以看到架構(gòu)相比SQLProxy更加簡(jiǎn)潔,擴(kuò)展底層引擎非常容易,而且本地可測(cè)試可調(diào)試,極大提升了開發(fā)效率。從開發(fā)到上線新架構(gòu)兩周時(shí)間就完成了平滑遷移。
升級(jí)新架構(gòu)帶來的效果也非常明顯,相比之前的架構(gòu)不論代碼質(zhì)量、服務(wù)穩(wěn)定性、可維護(hù)性和可擴(kuò)展性上都有了重大提升:
(3) 統(tǒng)一SQL服務(wù)的現(xiàn)狀
經(jīng)過半年的遷移推動(dòng),每日SQL有效處理量從5W提升到現(xiàn)在的50W規(guī)模,已經(jīng)占據(jù)了整個(gè)SQL流量的80%。特別是SparkSQL的流量半年新增到30W。大體流量分布:Spark 36w/ Trino 12w / Hive 2.5w
各個(gè)引擎請(qǐng)求耗時(shí):
目前Kyuubi Server 承載真實(shí)的SQL流量日均100w左右,可用性仍然可達(dá)99.9%以上,非常穩(wěn)定。
—
02
打造易用易維護(hù)高可用的Kyuubi服務(wù)
1. 構(gòu)建符合業(yè)務(wù)需求的Kyuubi
(1) 整體架構(gòu)
整體架構(gòu)和流程,主要分為入口服務(wù)、認(rèn)證和權(quán)限適配、底層引擎管理及服務(wù)的可觀測(cè)性:
(2) 用戶使用交互
以工作空間(workspace)粒度來保計(jì)算資源的隔離的存儲(chǔ)資源(表)安全,與Kyuubi Group 的多租戶類似,我們這里擴(kuò)展到了其他引擎。
一次完成交互過程:
WorkspaceA下面的用戶使用平臺(tái)發(fā)放的Token,選擇各類客戶端工具,向引擎提交SQL查詢,Kyuubi Server會(huì)自動(dòng)將用戶SQL提交到該空間所屬的計(jì)算引擎上去,來保證用戶使用資源的隔離性。與其他workspace用戶雖是同一入口,但是資源的使用上是隔離的。
Kyuubi Server服務(wù)并不具體執(zhí)行SQL,同一的入口服務(wù)不會(huì)有太大壓力。
2. 提升用戶側(cè)的易用性
(1) 統(tǒng)一認(rèn)證和表坐標(biāo)的統(tǒng)一
去Kerberos化,采用平臺(tái)統(tǒng)一Token方式,解決:
表資源命名的統(tǒng)一規(guī)范化,小米內(nèi)部存在多區(qū)域和多類數(shù)據(jù)源,如果使用統(tǒng)一的SQL入口服務(wù),需要統(tǒng)一SQL語(yǔ)句的表名規(guī)范來避免沖突和統(tǒng)一的管理:
(2) Kyuubi Engine 公共資源池
引入Kyuubi Engine公共池主要解決用戶首次進(jìn)入空間提交SparkSQL的查詢性能問題。上面提到的用戶提交的SQL分析統(tǒng)計(jì),50%的SQL查詢延時(shí)都在5秒以下。在沒有提前分配的資源的情況下,用戶提交查詢會(huì)冷啟動(dòng)一個(gè)Kyuubi Engine,這是Kyuubi當(dāng)前的機(jī)制。由于小米Yarn提交一個(gè)APP的延時(shí)在分鐘級(jí)別,用戶一個(gè)簡(jiǎn)單的秒級(jí)查詢會(huì)延遲到分鐘級(jí)別,體感非常差。
因此,借助Kyuubi Engine Pool的實(shí)現(xiàn),對(duì)沒有提前配置和指定資源的workspace用戶,會(huì)將SQL路由到已經(jīng)預(yù)先啟動(dòng)好的Kyuubi Engine Pool,以加快用戶的查詢速度,提升SQL查詢體驗(yàn)。
3. 升級(jí)Spark2.X到Kyuubi Engine
Kyuubi Engine目前只支持Spark3以上,之前我們內(nèi)部版本都是Spark2,在升級(jí)到Kyuubi Engine之前做了相關(guān)對(duì)比測(cè)試,在Kyuubi 架構(gòu)和SQLProxy架構(gòu)下,有明顯的性能提升:
4. Kyuubi Server的容器化
在Kyuubi Server的高可用上利用容器化的方式替換了當(dāng)前Kyuubi Client端通過ZK進(jìn)行服務(wù)發(fā)現(xiàn)的高可用模式:
5. 基于Workspace的計(jì)算資源管理
(1)Engine Manager
由于之前已經(jīng)實(shí)現(xiàn)了對(duì)Spark Engine的管理服務(wù),我們將Kyuubi Engine的管理直接從Kyuubi Server剝離,形成了單獨(dú)的Engine Manager服務(wù),負(fù)責(zé)Engine的生命周期管理,配置上下文管理,同時(shí)提供服務(wù)發(fā)現(xiàn)和負(fù)載均衡能力。
用戶提交的SQL的流程:
(2) 用戶提交
圖上是我們的用戶平臺(tái)SQL查詢?nèi)肟?,在workspace下的用戶可以非常方便地啟動(dòng)一個(gè)Kyuubi Engine。為降低用戶的門檻,只暴露了資源相關(guān)和排隊(duì)策略的配置。同時(shí),用戶還可以配置多個(gè)Kyuubi Engine實(shí)例,來保障當(dāng)前workspace下的SQL執(zhí)行的高可用。
(3) Engine的高可用
為什么需要Kyuubi Engine的高可用?因?yàn)樵趯?shí)際環(huán)境中,Kyuubi Engine是一直長(zhǎng)時(shí)間運(yùn)行的,Spark的SQL執(zhí)行過程非常復(fù)雜,時(shí)間一長(zhǎng)其穩(wěn)定性就有了問題:
因此實(shí)施了一些高可用的保障策略:
—
03
基于Kyuubi的改造
1. Trino和Doris的代理
引入Trino和Doris主要解決OLAP場(chǎng)景的查詢效率問題。
對(duì)于Doris的適配也采用了JDBC的方式,由于Doris客戶端本身支持Mysql JDBC,MySQL JDBC的實(shí)現(xiàn)方式是全量拉取模式,Kyuubi Server端有OOM的風(fēng)險(xiǎn)。目前通過限制Doris查詢的超時(shí)時(shí)間來降低大結(jié)果集導(dǎo)致OOM的風(fēng)險(xiǎn)。
如果大家后面要擴(kuò)展Kyuubi代理其他JDBC的數(shù)據(jù)庫(kù)支持,一定謹(jǐn)慎處理。
2. SQL HTTP API的支持
關(guān)于HTTP API的支持一共實(shí)現(xiàn)了V1版本和V2版本,相比社區(qū)還是有一些區(qū)別。
① V1版本
但是也存在一些問題:
②V2版本
為了徹底解決V1的水平擴(kuò)展性問題,在V2版本中將Kyuubi HTTP Server完全無狀態(tài)化,通過Kyuubi Engine 直接提供HTTP SQL API。Kyuubi Server只起到出代理的作用。
另外的兩點(diǎn)改進(jìn):
同時(shí),也不用維持長(zhǎng)鏈接,非常適合ETL的場(chǎng)景。
3. SQL 表列解析
我們?cè)贙yuubi Server端做了權(quán)限認(rèn)證,需要獲取用戶SQL的真實(shí)表名,單獨(dú)開發(fā)了一個(gè)純SQL的解析模塊:支持表列血緣關(guān)系和SQL類型的提取,支持SparkSQL、Trino兩種語(yǔ)法。
具體解析后的格式如圖,包括類型、輸入輸出表和隊(duì)列的列。
后續(xù)在具體實(shí)際場(chǎng)景中該模塊的也應(yīng)用到了其業(yè)務(wù)場(chǎng)景,比如表血緣審計(jì)日志,SQL的統(tǒng)計(jì)請(qǐng)求分析等安全質(zhì)量場(chǎng)景,完全復(fù)用了我們的SQL表列提取的能力。
—
04
Kyuubi 新特性的應(yīng)用
1. 小文件合并
解決用戶寫場(chǎng)景可能導(dǎo)致的小文件過多的問題。用戶一般會(huì)提交兩個(gè)SQL:一個(gè)是業(yè)務(wù)處理SQL,一個(gè)是合并SQL,通過通過workflow方式串聯(lián)起來,維護(hù)不變。
開啟也非常簡(jiǎn)單,可以在Kyuubi Engine啟動(dòng)階段,SQL提交階段開啟開關(guān)。
2. 增量獲取和獲取結(jié)果集限制
3. Z-Ordering
在我們內(nèi)部畫像場(chǎng)景做相關(guān)的測(cè)試,Z-Ordering有顯著的提升。
在具體應(yīng)用中,Z-Ordering的排序規(guī)則需要根據(jù)實(shí)際業(yè)務(wù)表的數(shù)據(jù)做相應(yīng)調(diào)整:
Kyuubi Engine Z-Ordering的實(shí)現(xiàn)非常巧妙,沒有增加額外的列,直接復(fù)用了parquet的原生能力,所以一次生成可以支持多個(gè)引擎查詢(只要該引擎支持parequet格式的讀?。?。
4. PlanOnly 模式
主要用于非SQL執(zhí)行的SQL相關(guān)場(chǎng)景,比如:
PlanOnly模式下SQL不會(huì)真正執(zhí)行,只會(huì)輸出解析后的LogicalPlan/SparkPlan。目前為數(shù)據(jù)平臺(tái)單獨(dú)提供了語(yǔ)法語(yǔ)義校驗(yàn)服務(wù),就是采用Kyuubi Engine的PlanOnly模式。
這種應(yīng)用場(chǎng)景也為我們提供了一種新思路:將Kyuubi Engine作為Yarn APP的服務(wù)框架,提供其他場(chǎng)景的服務(wù),比如校驗(yàn)服務(wù)、血緣關(guān)系提取服務(wù)和SQL的預(yù)計(jì)算服務(wù)等。
5. Scala mode
Scala Code模式完全解放了Kyuubi Engine能力,具備直接通過JDBC提交Scala 代碼的能力,專門處理一些復(fù)雜邏輯的業(yè)務(wù)。
目前我們的應(yīng)用場(chǎng)景在運(yùn)維這塊做了一些嘗試,主要解決我們的運(yùn)維效率。例如我們要在運(yùn)行時(shí)動(dòng)態(tài)加載用戶自定義的jar包,讀取Thrift格式化的數(shù)據(jù)。相比之前登錄到生產(chǎn)集群機(jī)器打包代碼運(yùn)行的流程大大簡(jiǎn)化。
—
05
未來規(guī)劃和總結(jié)
規(guī)劃:
總結(jié):
今天的分享就到這里,謝謝大家。
閱讀更多技術(shù)干貨文章、下載講師PPT
請(qǐng)關(guān)注微信公眾號(hào)“DataFunSummit”
分享嘉賓:張耀東 小米 高級(jí)研發(fā)工程師
出品平臺(tái):DataFunTalk
01/分享嘉賓
02/報(bào)名看直播 免費(fèi)領(lǐng)PPT
03/關(guān)于我們
DataFun:專注于大數(shù)據(jù)、人工智能技術(shù)應(yīng)用的分享與交流。發(fā)起于2017年,在北京、上海、深圳、杭州等城市舉辦超過100+線下和100+線上沙龍、論壇及峰會(huì),已邀請(qǐng)超過2000位專家和學(xué)者參與分享。其公眾號(hào) DataFunTalk 累計(jì)生產(chǎn)原創(chuàng)文章700+,百萬+閱讀,14萬+精準(zhǔn)粉絲。
歡迎轉(zhuǎn)載分享,轉(zhuǎn)載請(qǐng)私信留言。
]]>