MaxCompute,基於Serverless的高可用大數據服務

2019年1月18日,由阿里巴巴MaxCompute開發者社區和阿里雲棲社區聯合主辦的「阿里雲棲開發者沙龍大數據技術專場」走近北京聯合大學,本次技術沙龍上,阿里巴巴高級技術專家吳永明爲你們分享了MaxCompute,基於Serverless的高可用大數據服務,以及MaxCompute低計算成本背後的祕密。算法

如下內容根據演講視頻以及PPT整理而成。安全

1、什麼是MaxCompute性能優化

Big Data in Alibaba
首先爲你們介紹阿里巴巴大數據技術的一些相關背景。正以下圖所示,阿里巴巴其實在很早的時候就開始佈局大數據技術,甚至能夠說阿里雲的成立就是爲了幫助阿里巴巴解決大數據相關的技術問題。現在,阿里巴巴幾乎全部的BU都在使用大數據技術。而在阿里巴巴內部,大數據技術不只應用範圍很是廣,同時也很是深刻。此外,整個集團的大數據體系最終都會聚集到一塊兒。
圖片描述服務器

Overview of Computing Platform架構

阿里雲計算平臺事業部的職責就是將阿里巴巴的大數據體系聚集到一塊兒,而且負責整個集團的存儲、計算相關的研發工做。以下圖所示的就是阿里巴巴大數據平臺的簡單架構圖,最底層的是統一存儲平臺盤古,其負責存儲大數據。存儲時靜態的,而爲了挖掘數據的價值就須要依靠計算能力實現,所以阿里巴巴大數據平臺也提供了各類計算資源,好比CPU、GPU、FPGA以及ASIC等。爲了更好地利用上述這些計算資源,須要將他們統一地進行抽象,並有效地進行管理,而在阿里雲內部,統一的資源管理系統稱爲伏羲。基於資源管理和調度系統,阿里雲還開發了各類各樣的計算引擎,好比通用計算引擎MaxCompute、流計算Blink、機器學習PAI以及圖計算平臺Flash等。在這些計算引擎之上,平臺還提供了各類各樣的開發環境,並基於這些開發環境實現了各類業務。
圖片描述負載均衡

本文中將爲你們重點介紹通用計算引擎MaxCompute。MaxCompute是一個通用分佈式大數據處理平臺,其一方面能夠存儲海量數據,另外一方面還能夠基於數據進行通用計算。less

首先看兩個數字,目前,阿里巴巴內部99%的數據存儲和95%的計算任務都由MaxCompute承載。其實,MaxCompute就是阿里巴巴的數據中臺,集團的各個BU所產生的數據最終都會彙總到MaxCompute上面,使得集團的數據資產得以不斷增長。其次,再看幾個指標。MaxCompute在BigBench測試中的表現是通常開源系統的2.5倍。在阿里巴巴集團內部,MaxCompute集羣的機器數量達到了幾萬臺,天天所承載的做業量更是達到了百萬級別。目前,MaxCompute集羣所存儲的數據量也很是大在好久以前就已經達到了EB級別,這在全球範圍內都處於領先水平。此外,MaxCompute不只對集團內部提供服務,也開放給了外部企業使用,目前所提供的行業解決方案已經達到了50多套。現在,MaxCompute的存儲量和計算量每一年都在以極高的速度增加,而藉助阿里雲的能力,使得MaxCompute不只可以在國內進行部署,還可以部署到海外的不少國家和地區。運維

MaxCompute系統架構機器學習

MaxCompute的系統架構與業界的大數據計算引擎架構比較相似。以下圖所示,用戶可以經過一些客戶端進行接入,經過接入層就能夠將數據傳輸到MaxCompute裏面。而在中間存在一個管理層,能夠管理各類各樣的用戶做業,同時也會承載各類各樣的功能,好比大數據裏面最基本的SQL編譯、優化和運行等功能。此外,MaxCompute提供了分佈式元數據服務,由於若是沒有元數據管理,那麼就沒法知道數據存儲的到底是什麼。在MaxCompute架構的最下面一層就是實際的存儲和計算髮生的地方。分佈式

圖片描述

2、MaxCompute Serverless與背後的奧祕

現在Serverless這一律念很是火爆,而當站在MaxCompute開發者的角度,Serverless的火爆既使人高興,也使人鬱悶。值得高興的是:MaxCompute技術團隊早在Serverless概念提出以前的不少年就開始研發相似功能了,而且設計理念也徹底符合Serverless,這能夠說明MaxCompute在Serverless方面的佈局較早,而且技術具備必定的先進性。但使人鬱悶的是:雖然MaxCompute團隊很早就被提出了Serverless的相關概念,也承認這種技術路線的價值,可是卻沒有可以及早地將這樣的能力包裝起來。

圖片描述

在Serverless概念提出以前,你們進行大數據實踐的時候基本都是按照下圖的步驟,首先購買服務器,搭建集羣,有了硬件以後就能夠在上面安裝大數據處理軟件「全家桶」,以後導入數據,編寫業務所須要的查詢並作計算,最終獲取結果。固然了,上述的每一個步驟都離不開運維相關工做。若是自行搭建大數據系統,那麼運維工做將會貫穿始終的,而對於運維同窗而言,也須要時時刻刻待命,以防系統出現問題。

可是,若是回顧上述的步驟,真正可以產生業務價值就是第四步的編寫查詢和進行實際的計算,可是其餘的步驟會消耗不少的資源和人力,而這對於偏向於業務型的公司而言,都是額外的負擔。而現在,Serverless就提供了幫助企業消除這些額外負擔的機會。

以MaxCompute Serverless爲例,只須要通過四個步驟就能夠實現所需的業務價值。第一步開通帳戶並建立項目,這個項目既是數據存儲載體,也是計算的載體;第二步上傳數據;第三步編寫查詢語句並進行計算;第四步就能夠獲取計算結果。在整個過程當中,無需任何運維工做,所以開發團隊能夠將精力集中在最爲核心而且可以產生業務價值的地方,這也就是Serverless的優點所在。其實,這也表明了新技術對平常工做所帶來的變化,新的技術使得你們可以更加專一於可以產生核心價值的部分,而無需關心額外的或者輔助性的工做。

和其餘的開源軟件或者大數據公司直接爲客戶提供一個大數據軟件包的作法不一樣,MaxCompute所提供的是大數據服務,並且所提供的服務可以實現365(天)X 24(小時)的高可靠,既提供了大數據計算的能力,也同時提供了數據存儲的能力,而且使得用戶能夠真正實現大數據技術的開箱即用。

在實現大數據平臺Serverless服務的過程當中須要面對不少挑戰,在本文中將會主要聚焦如下三個問題:

大數據服務如何持續迭代和升級
大數據服務的趨勢:自動化、智能化
數據安全
持續改進和發佈中的挑戰和方案

若是想要實現一套大數據系統,那麼持續改進和發佈的話題是絕對沒法脫離。這是由於用戶總會提出各類各樣的新需求,而爲了知足這些需求就須要不斷地升級和改進大數據平臺,而在改進的同時,還須要面對天天平臺之上運行的百萬級做業,並保證7*24小時的服務不間斷。那麼,如何實現平臺升級過程的平穩安全,而且使得用戶對於新功能發佈無感知,此外還須要保證新版本的穩定性,沒有Bug和性能回退問題,以及在出現問題以後可以快速止損等,這些都是須要考慮的問題。此外,在持續改進和發佈的過程當中,還須要考慮測試和數據安全性之間的矛盾。總而言之,在大數據平臺之上實現持續改進和發佈,就如同在飛行的飛機上面更換引擎。

圖片描述

面對上述的問題和挑戰,阿里雲MaxCompute團隊作了大量的工做。目前,在大數據領域,MapReduce對於用戶不夠友好已經成爲了業界的共識,類SQL的大數據引擎已經成爲了主流。而對於類SQL的處理而言,最關鍵的就是三個步驟:編譯、優化和執行。所以,MaxCompute也抓住了問題的關鍵,針對編譯和優化開發了Playback工具,針對執行則開發了Flighting工具。除了上述比較偏向於測試驗證階段所使用的兩種工具以外,在真正上線的時候,MaxCompute還提供了灰度上線等工具。

Playback工具

Playback誕生的背景就是MaxCompute須要快速地提升編譯器和優化器的表達能力和性能優化水平。而在對編譯器和優化器進行了重大改動以後,如何保證編譯器和優化器沒有問題就成爲了一個挑戰。最爲原始的作法就是經過將一些已有的SQL放到編譯器和優化器上執行,並經過執行結果的人工分析來發現編譯器和優化器的改進中存在的問題。可是經過人工方式進行分析,可能須要一百年才能完成,這顯然是沒法容忍的。所以,MaxCompute團隊但願藉助大數據計算平臺的運算能力來自我驗證新的編譯優化器。

圖片描述

其原理就是利用MaxCompute自己強大且靈活的能力,把全部真實的用戶查詢收集起來並放到MaxCompute系統裏面,將用戶查詢以大規模、分佈式的方式運行起來,並經過新版的編譯優化器來完成這些做業的編譯和優化。而因爲MaxCompute採用了業內通行的模式,所以可以很容易地將做業插件插入到任務之中,進而對編譯優化任務進行校驗,若是存在問題也可以很容易地暴露出來。

圖片描述

總結而言,Playback一方面利用MaxCompute靈活且強大的計算能力來分析海量用戶任務,另一方面還藉助對於UDF的支持和良好的隔離方案來進行編譯優化和驗證。這就使得對於新版本編譯優化器的驗證變得很是容易,對於以前想要實現可是卻無能爲力的任務,現在藉助於大數據平臺的強大能力得以實現。

Flighting工具

Flighting是針對於運行時的工具。其實,對於改進的優化器進行測試優化的常規作法就是搭建一個測試集羣進行測試,這是最常規而且最天然的作法,可是也會形成極大的資源浪費,由於測試集羣的成本很是大。因爲測試環境與真實環境的任務復負載狀況不一樣,所以,測試集羣也沒法真實地模擬出實際場景。此外,爲了在測試環境中進行驗證,須要測試人員來創造出一些數據,可是這些被創造出來的數據可能過於簡單。不然就須要從真實場景中拿一些數據,可是這樣作不只須要通過用戶的贊成,還須要進行數據脫敏,這也是一件極其麻煩的事情。不只可能產生數據泄露的風險,並且最終數據和真實數據也會存在必定的差別,不少狀況沒法驗證出新功能所存在的問題。

圖片描述

而MaxCompute的運行時驗證工具Flighting所使用的就是線上真實的集羣和環境。藉助於資源隔離的能力,使得MaxCompute集羣中99%的計算資源交給用戶來運行做業,而剩下的1%的資源交給Flighting工具進行執行器的新功能驗證測試。這樣的作法很是高效,不只不須要拖取數據,還能夠在生產環境中直接運行,能夠容易地暴露出真實執行器所存在的問題。

灰度上線

MaxCompute平臺具備灰度上線的能力,能夠將任務按照重要性進行分級,進行細粒度發佈,而且支持瞬時回滾,這樣就能夠將風險降到最低。
圖片描述
MaxCompute平臺的持續開發驗證迭代流程

以下圖所示的是MaxCompute平臺的持續開發驗證迭代流程,其結合了針對編譯優化器的Playback工具、針對運行器的Flighting工具以及灰度上線的能力。在這樣的流程中, 第二個週期並不須要等待第一個週期完成再開始,這樣就使得整個研發流程更加高效。目前,MaxCompute的持續開發和交付過程在編譯優化、執行以及灰度等都具備較強的技術優點,在整個行業內也具備較強的技術競爭力,這就使得MaxCompute可以更好地向前演進,爲客戶帶來更多更好的功能,同時也保證了MaxCompute平臺在升級的過程當中不會影響用戶的正常使用。
圖片描述
自動化、智能化

隨着人工智能和大數據技術的不斷髮展,現在對於服務而言,不只須要實現高可用,還須要實現自動化。針對於這樣的思想,能夠從兩個角度來看,即服務自己的角度和用戶運維的角度。針對於服務自己,首先須要實現自動化,更進一步能夠實現人工智能化。
圖片描述
任何服務都會出現各類各樣的問題,存在各類各樣的Bug,在出現問題的時候,傳統解決方案中須要依靠人力來解決。而服務自動化和智能化的終極目標就是在系統出現問題的時候,不須要人工來修復,而徹底經過系統的自愈能力來發現並解決問題。而服務自動化和智能化的目標須要一步步實現,從用戶運維的角度來看,就是從本來用戶自身負責的運維工做,轉交給完成大數據任務的雲上大數據平臺,好比阿里雲MaxCompute,這時候就至關於將客戶的運維工做轉移給了MaxCompute團隊。而第三步就是MaxCompute團隊也但願從大數據平臺繁瑣的運維任務中解脫出來,實現服務的自動化和智能化運維,進一步釋放MaxCompute團隊的精力,將所有的精力投入到更加有價值的工做上。而實現大數據服務自動化和智能化的目的在於提升服務可靠性,解放生產力,經過作更有價值的事情來回饋用戶。基本思想就是定時地收集和監控服務的各項指標,針對異常指標及時做出應對措施。

除了大數據服務的自動化和智能化以外,對於用戶查詢而言,自動識別出可優化的查詢並提供優化建議也很是關鍵。你們所寫的SQL查詢未必是最高效的,可能存在一些更加有效的方式或者更好的技術,所以須要自動識別出用戶查詢中可優化的部分,並給出相應的優化建議。對於這部分而言,也是業內的發展方向,目前MaxCompute團隊也正在進行相應的研究工做。

3、MaxCompute低成本的奧祕

低成本使得MaxCompute更加具備競爭力,而在低成本的背後,是MaxCompute發揮出技術紅利使得成本確確實實地下降下來。爲了使得大數據任務的成本更低,MaxCompute主要在計算、存儲和調度這三個方面進行改進和提升。

在計算方面,MaxCompute優化了自身的計算引擎,可以提升性能,下降做業佔用資源的數量,這兩種作法均可以使得平臺可以承載更多計算任務,每一個任務要麼可以減小計算時間,要麼能夠減小做業大小,最終下降計算任務所佔用的資源,這樣就可以使得更多的資源得以空出來,承載更多的計算任務。
在存儲方面,也有各類各樣的優化方式。好比優化壓縮算法,使用比較先進的列式存儲,對於數據存儲進行分級,對於冷數據進行歸檔,對於沒有價值的數據進行及時回收等。
在調度方面,爲了下降成本進行優化方式主要包括集羣內調度和跨集羣全局調度。

圖片描述
對於集羣內部調度而言,所須要解決的問題很是多。一方面,每時每刻都有不少的做業實例在等待調度,另一方面還有不少資源等着運行做業。

集羣內調度

那麼如何將二者結合起來就顯得很是關鍵,也很是考驗調度能力。目前,MaxCompute大數據平臺的調度決策頻率達到了4000+/s,這裏所做出的調度決策是將必定大小的做業放入到相應的資源中去,儘量作到既能知足做業所需資源,又不能浪費資源。

圖片描述

在性能方面,須要支持增量式調度,使得資源可以獲得很好地利用;此外,還提供了彈性配額能力,使得多用戶在運行計算任務的時候能夠實現削峯填谷。由於在真正使用大數據平臺的時候,你們不可能同時提交任務,在絕大多數狀況下每每會錯峯提交任務,所以就會出現資源使用的峯和谷,而經過彈性配額能力能夠儘可能實現削峯填谷,使得資源可以充分利用。對於任務的最優化調度而言,則須要考慮延遲與吞吐之間的平衡。在負載均衡方面,須要規避一些熱點。此外,MaxCompute的調度決策系統還支持任務優先級和搶佔,可以實現實時性和公平性。

此外,針對於複雜任務調度而言,還進一步劃分了服務和做業的調度。這裏所謂的任務就是一次性做業,而對於服務而言,在啓動以後則會在一段時間以內一直不間斷地處理數據做業。其實,服務和做業的調度存在着很大的差別,服務調度要求較高的可靠性,不能被打斷,由於一旦被打斷,從新恢復起來的成本將會很是高;而做業對於間斷的容忍程度則要高一些,即便被打斷,後續也能夠拉起來繼續運行。

二級配額組

對於單集羣內的調度而言,重點介紹一下在通常的大數據平臺中比較少見的二級配額組概念。在介紹二級配額組以前,首先介紹關於配額組的相關內容。簡單而言,將物理集羣的各類資源作成資源池以後,將一些資源整合到一個組裏面就稱之爲配額組。在大數據平臺上,做業就運行在配額組裏面,而同一個配額組中的做業將會共享該配額組中的全部資源。而常見的一級配額組策略,存在着不少的問題。舉例而言,若是一級配額組具備1000個CPU內核,而有100個用戶在共同使用該配額組,某一時刻某一用戶提交了一個很是大的做業,因而佔滿了整個配額組的1000個CPU內核,進而致使其餘用戶的做業所有須要等待。

圖片描述

爲了解決上述狀況中所出現的問題,就須要使用二級配額組。二級配額組在一級配額組的基礎之上進行了進一步細分,設定了每一個用戶所可以使用的資源上限。每一個一級配額組能夠分爲多個二級配額組,這樣作的目的就是爲了更好地利用資源。在二級配額組中,資源能夠實現共享,可是即使某個用戶須要使用的資源不少,也沒法超過該二級配額組資源上限,所以能夠比較好地保證用戶體驗。

與通常的大數據系統不一樣,MaxCompute除了可以實現單集羣內部調度以外,還能夠實現多集羣之間跨集羣的全局調度,這也是MaxCompute強大能力的體現。單個集羣可能會受制於各類因素而沒法實現擴容,所以須要實現集羣級別的水平擴展。

對於業務量巨大的應用而言,爲了保證當單個集羣發生宕機的時候業務依舊可以正常運行,因此須要讓業務在多個集羣上運行,來保證保證業務的高可用。這時候就須要全局的跨集羣調度能力,當一個做業進來以後,須要分析該做業能夠向哪些集羣上進行調度,以及目前哪些集羣可供使用而且比較空閒。而此時還會涉及數據多版本的問題,由於同一份數據存儲在不一樣的集羣之中,就會帶來數據不一致的問題。此外,對於同一份數據的不一樣版本,也須要考慮應該具體的計算和數據複製策略,而阿里雲MaxCompute也是通過了大量經驗的積累才使得上述策略更加完善。

4、數據安全

對於一個企業而言,使用大數據計算平臺時最爲關心的就是數據安全問題。從阿里巴巴的經驗來看,在數據安全方面,用戶最爲擔心的主要有三點,第一點:將數據放在平臺之上,其餘人可否看到;第二點:將數據放到平臺或者服務之上,提供服務的人是否會看到數據。第三點:將數據託管到大數據平臺之上,若是平臺出現了問題,那麼數據怎麼辦。

圖片描述

對於用戶的這些憂慮,MaxCompute都能比較完善地進行處理,用戶基本上無需擔憂數據的安全性。首先,MaxCompute平臺具備完善的鑑權和受權機制,數據是屬於用戶的,而不是平臺的,雖然平臺幫助用戶進行存儲和計算,可是卻不具備數據全部權,不管是對數據進行訪問仍是計算都須要鑑權和受權。不管是其餘用戶仍是平臺方,在沒有受權的狀況下,都沒法看到數據。此外,受權的維度也比較多樣,包括表級別、列級別和做業級別。而由於MaxCompute是雲上大數據平臺,自然地具有多租戶的特色,所以須要實現各個租戶之間的數據和計算隔離。對於數據而言,MaxCompute平臺實現了物理隔離,從根本上消除了數據的安全性問題。此外,平臺還提供了嚴格的權限控制策略,用戶沒法查看其餘用戶的數據。此外,MaxCompute還提供了E2E全鏈路存儲加密,這對於金融機構顯得尤其重要;還提供了CRC校驗,保證了數據正確性,並且這部分能力已經在阿里巴巴內部使用了多年,已經很是完善;最後MaxCompute平臺還爲用戶提供了數據脫敏等功能,方便用戶使用。

相關文章
相關標籤/搜索