AI加持的阿里雲飛天大數據平臺技術揭祕

摘要:2019雲棲大會大數據&AI專場,阿里雲智能計算平臺事業部研究員關濤、資深專家徐晟來爲咱們分享《AI加持的阿里雲飛天大數據平臺技術揭祕》。本文主要講了三大部分,一是原創技術優化+系統融合,打破了數據增加和成本增加的線性關係,二是從雲原生大數據平臺到全域雲數倉,阿里開始從原生系統走入到全域系統模式,三是大數據與AI雙生系統,講如何更好的支撐AI系統以及經過AI系統來優化大數據系統。web

如下是精彩視頻內容整理算法

說到阿里巴巴大數據,不得不提到的是10年前王堅博士率領建構的飛天大數據平臺,十年磨一劍,今天飛天大數據平臺已經是阿里巴巴10年大平臺建設最佳實踐的結晶,是阿里大數據生產的基石。飛天大數據平臺在阿里巴巴集團內天天有數萬名數據和算法開發工程師在使用,承載了阿里99%的數據業務構建。同時也已經普遍應用於城市大腦、數字政府、電力、金融、新零售、智能製造、智慧農業等各領域的大數據建設。
sql



在2015年的時候,咱們開始關注到數據的海量增加對系統帶來了愈來愈高的要求,隨着深度學習的需求增加,數據和數據對應的處理能力是制約人工智能發展的關鍵問題,咱們在給客戶聊到一個擺在每一個CIO/CTO面前的現實問題——若是數據增加10倍,應該怎麼辦?圖中數字你們看得很是清晰,很是簡單的拍立淘系統背後是PB的數據在作支撐,阿里小蜜客服系統有20個PB,你們天天在淘寶上平常使用的個性化推薦系統,後臺要超過100個PB的數據來支撐後臺的決策,10倍到100倍的數據增加是很是常見的。從這個角度上來說,10倍的數據增加一般意味着什麼問題?

第一,意味着10倍成本的增加,若是考慮到增加不是均勻的,會有波峯和波谷,可能須要30倍彈性要求;第二,實際上由於人工智能的興起,二維結構性的關係型數據持續性增加的同時,帶來的是非結構化數據,這種持續的數據增加里面,一半的增加來自於這種非結構化數據,咱們除了可以處理好這種二維的數據化以後,咱們如何來作好多種數據融合的計算?第三,阿里有一個龐大的中臺團隊,若是說咱們的數據增加了10倍,咱們的團隊是否是增加了10倍?若是說數據增加了10倍,數據的關係複雜度也超過了10倍,那麼人工的成本是否是也超過了10倍以上,咱們的飛天平臺在2015年後就是圍繞這三個關鍵性的問題來作工做的。
數據庫

原創技術優化 + 系統融合

當阿里巴巴的大數據走過10萬臺規模的時候,咱們已經走入到技術的無人區,這樣的挑戰絕大多數公司不必定能遇到,可是對於阿里巴巴這樣的體量來說,這個挑戰是一直襬在咱們面前的。
編程




你們能夠看到,2015年的時候,咱們整個的體系創建起來以後,就開始作各類各樣的Benchmark,好比2015年100TB的Sorting,2016年咱們作CloudSort,去看性價比,2017年咱們選擇了Bigbench。如圖是咱們最新發布的數據,在201七、2018和2019年,每一年都有一倍的性能提高,同時咱們在30TB的規模上比第二名的產品有一倍的性能增加,而且有一半的成本節省,這是咱們的計算力持續上升的優化趨勢。

緩存




那麼,計算力持續升級是如何作到的?如圖是咱們常常用到的系統升級的三角理論,最底層的計算模型是高效的算子層和存儲層,這是很是底層的基礎優化,往上面要找到最優的執行計劃,也就是算子組合,再往上是新的方向,即怎麼作到動態調整與自學習的調優。
安全



咱們先來看單一算子和引擎框架的極致優化,咱們用的是比較難寫難維護的框架,可是由於它比較貼近物理硬件,因此帶來了更極致的性能追求。對於不少系統來講可能5%的性能提高並不關鍵,但對於飛天技術平臺來說,5%的性能提高就是5千臺的規模,大概就是2~3億的成本。如圖作了一個簡單的小例子作單一算子的極致優化,在shuffle子場景中,利用Non-temporal Store優化shuffling中的緩存策略,在這樣的策略上有30%的性能提高。

除了計算模塊,它還有存儲模塊,存儲分爲4個象限。一四象限是存儲數據自己的壓縮能力,數據增加最直接的成本就是存儲成本的上升,咱們怎麼作更好的壓縮和編碼以及indexing?這是一四象限作的相關工做;二三象限是在性能節省上作的相關工做,咱們存儲層實際上是基於開源ORC的標準,咱們在上面作了很是多的改進和優化,其中白框裏面都有很是多的標準改動,咱們讀取性能對比開源Java ORC 均快 50%,咱們是ORC社區過去兩年最大貢獻者,貢獻了2W+行代碼,這是咱們在算子層和存儲層的優化,這是最底層的架構。

性能優化



可是從另一個層面上來說,單一的算子和部分的算子組合很難知足部分的場景需求,因此咱們就提到靈活的算子組合。舉幾個數字,咱們在Join上有4種模式,有3種Shuffling模式提供,有3種做業運行模式,有多種硬件支持和多種存儲介質支持。圖右是怎樣去動態判別Join模式,使得運算效率更高。經過這種動態的算子組合,是咱們優化的第二個維度。
服務器



從引擎優化到自學習調優是咱們在最近1年多的時間裏花精力比較多的,咱們在考慮如何用人工智能及自學習技術來作大數據系統,你們能夠想象學騎自行車,剛開始騎得很差,速度比較慢甚至有的時候會摔倒,經過慢慢的學習,人的能力會愈來愈好。對於一個系統而言,咱們是否能夠用一樣的方式來作?當一個全新的做業提交到這個系統時,系統對做業的優化是比較保守的,好比稍微多給一點資源,那麼我選擇的執行計劃會相對比較保守一點,使得至少可以跑過去,當跑過以後就可以蒐集到信息和經驗,經過這些經驗再反哺去優化數據,因此咱們提出一個基於歷史信息的自學習迴歸優化,底層是如圖的架構圖,咱們把歷史信息放在OFFLINE system去作各類各樣的統計分析,看成業來了以後咱們把這些信息反哺到系統之中去,讓系統進行自學習。一般狀況下,一個類似的做業大概跑了3到4次的時候,進入到一個相對比較優的過程,優指的是做業運行時間和系統資源節省。這套系統大概在阿里內部3年前上線的,咱們經過這樣的系統把阿里的水位線從40%提高到70%以上。

另外圖中右側也是一個自學習的例子,咱們怎麼區分熱數據和冷數據,以前可讓用戶本身去set,能夠用一個普通的configuration去配置,後來發現咱們採用動態的根據做業方式來作,效果會更好,這個技術是去年上線的,去年爲阿里節約了1億+人民幣。從以上幾個例子上來說引擎層面和存儲層面作的極致性能優化,性能優化又帶來了用戶成本的下降,在2019年9月1號,飛天大數據平臺的總體存儲成本下降了30%,同時咱們發佈了基於原生計算的新規格,能夠實現最高70%的成本節省。

以上都是在引擎層面的優化,隨着AI的普惠優化,AI的開發人員會愈來愈多,甚至不少人都不太具有代碼的能力,阿里內部有10萬名員工,天天有超過1萬個員工在飛天大數據平臺上作開發,從這個角度上來說,不只系統的優化是重要的,平臺和開發平臺的優化也是很是關鍵的。

網絡




計算引擎對你們來講看不見摸不着,咱們要去用它確定但願用最簡單的方式,先來看一下Maxcompute計算引擎。首先咱們須要有用戶,用戶怎麼來使用?須要資源隔離,也就是說每一個用戶在系統上面使用的時候會對應着帳號,帳號會對應着權限,這樣就把整套東西串聯起來。今天個人用戶怎麼用?用哪些部分?這是第一部分。第二部分是開發,開發有IDE,IDE用來寫代碼,寫完代碼以後提交,提交以後存在一個調度的問題,這麼多的資源任務順序是什麼?誰先誰後,出了問題要不要中斷,這些都由調度系統來管,咱們的這些任務就有可能在不一樣的地方來運行,能夠經過數據集成把它拉到不一樣的區域,讓這些數據可以在整個的平臺上跑起來,咱們全部的任務跑起來以後咱們須要有一個監控,同時咱們的operation也須要自動化、運維化,再往下咱們會進行數據的分析或者BI報表之類的,咱們也不可以忘記machine learning也是在咱們的平臺上集成起來的。最後,最重要的就是數據安全,這一塊整個東西構起一個大數據引擎的外沿+大數據引擎自己,這一套咱們稱之爲單引擎的完備大數據系統,這一套系統咱們在2017年的時候就具有了。



2018年的時候咱們作什麼?2018年咱們在單引擎的基礎上對接到多引擎,咱們整個開發鏈路要讓它閉環化,數據集成能夠把數據在不一樣的數據源之間進行拖動,咱們把數據開發完以後,傳統的方式是再用數據引擎把它拖走,而咱們作的事情是但願這個數據是雲上的服務,這個服務可以直接對用戶提供想要的數據,而不須要把數據整個拖走,由於數據在傳輸過程當中有存儲的消耗、網絡的消耗和一致性消耗,全部的這些東西都在消耗用戶的成本,咱們但願經過數據服務讓用戶拿到他想要的東西。再往下,若是數據服務之上還有自定義的應用,用戶還須要去建一個機房,搭一個web服務,而後把數據拿過來,這樣也很麻煩,因此咱們提供一個託管的web應用的雲上開發平臺,可以讓用戶直接看到全部的數據服務,在這個方向上來講,咱們就能夠構建任意的數據智能解決方案。



到2019年,咱們會把理念再拓展一層,首先對於用戶來講是用戶交互層,可是用戶的交互層不只僅是開發,因此咱們會把用戶分紅兩類,一部分叫作數據的生產者,也就是寫任務、寫調度、運維等,這些是數據的生產者,數據的生產者作好的東西給誰呢?給數據的消費者,咱們的數據分散在各個地方,全部的東西都會在治理的交互層對數據的消費者提供服務,這樣咱們就在一個新的角度來詮釋飛天大數據平臺。除了引擎存儲之外,咱們有全域的數據集成進行拉動,統一的調度能夠在不一樣的引擎之間來切換協同工做,同時咱們有統一的元數據管理,在這之上咱們對數據的生產者和數據的消費者也都進行了相應的支持,那麼這個總體就是全域的大數據平臺產品架構。

雲原平生臺到全域雲數倉

咱們整個平臺都是雲原生的,雲原生有哪些技術呢?



飛天大數據平臺在10年前就堅持雲原生的數據,雲原生意味着三件事情,第一開箱即用、不用不花錢,這個和傳統的買硬件方式有很是大的不一樣;第二咱們具有了秒級自適應的彈性擴展,用多少買多少;第三由於是雲上的框架,咱們不少運維和安全的東西由雲自動來完成了,因此是安全免運維的。從系統架構上講,飛天大數據包括傳統的CPU、GPU集羣,以及平頭哥芯片集羣,再往上是咱們的伏羲智能調度系統和元數據系統,再往上咱們提供了多種計算能力,咱們最重要的目標就是經過雲原生設計把10萬臺在物理上分佈在不一樣地域的服務器讓用戶以爲像一臺計算機。咱們今天已經達到了10年前的設計要求,具有了更強的服務擴展能力,可以支撐5到10年的數據進步的發展。

咱們充分利用雲原生設計的理念,支持大數據和機器學習的快速大規模彈性負載需求。咱們支撐0~100倍的彈性擴容能力,去年開始,雙十一60%的數據處理量來自於大數據平臺的處理能力,當雙11巔峯來的時候,咱們把大數據的資源彈回來讓給在線系統去處理問題。從另一個角度來說,咱們具有彈性能力,相比物理的IDC模式,咱們有80%成本的節省,按做業的計費模式,咱們提供秒級彈性伸縮的同時,不使用不收費。相比自建IDC,綜合成本只有1/5。除了堅持原生以外,咱們最近發現,隨着人工智能的發展,語音視圖的數據愈來愈多了,處理的能力就要增強,咱們要從二維的大數據平臺變成全域的數據平臺。



如圖所示,業界有一個比較火的概念叫數據湖,咱們要把客戶多種多樣的數據拿到一塊兒來進行統一的查詢和管理。可是對於真正的企業級服務實踐,咱們看到一些問題,首先數據的來源對於客戶來講是不可控的,也是多種多樣的,並且很大程度上沒有辦法把全部的數據統一用一種系統和引擎來管理起來,在這種狀況下咱們須要更大的能力是什麼呢?咱們今天經過不一樣的數據源,能夠進行統一的計算和統一的查詢和分析,統一的管理,因此咱們提出一個更新的概念叫邏輯數據湖,對於用戶來講,不須要把他的數據進行物理上的搬遷,可是咱們同樣可以進行聯邦計算和查詢,這就是咱們講的邏輯數據湖的核心理念。

爲了支撐這件事情,咱們會有統一的元數據管理系統和調度系統,可以讓不一樣的計算引擎協同起來工做,最後把全部的工做匯聚到全域數據治理上面,而且提供給數據開發者一個編程平臺,讓他可以直接的產生數據,或者是去定製本身的應用。那麼,經過這樣的方式,咱們把原來的單維度大數據平臺去作大數據處理,拓展到一個全域的數據治理,這個數據其實能夠包含簡單的大數據的,也能夠包含數據庫的,甚至是一些OSS的file,這些咱們在整個的平臺裏面都會加以處理。



如圖爲飛天大數據的產品架構,下面是存儲計算引擎,能夠看到咱們除了計算引擎自帶的存儲以外還有其它開放的OSS,還有IOT端採集的數據和數據庫的數據,全部數據進行全域數據集成,集成後進行統一的元數據管理,統一的混合任務調度,再往上是開發層和數據綜合治理層,經過這種方式,咱們立體化的把整個大數據圈起來管理。

大數據與AI 雙生系統

提到了大數據咱們確定會想到AI,AI和大數據是雙生的,對於AI來講它是須要大數據來empower的,也就說bigdata for AI。下面能夠經過一個demo來看咱們怎麼來作這件事情。對於AI的開發工程師來講,他們比較經常使用的方式是用交互式的notebook來進行AI的開發,由於它比較直觀,可是如何把大數據也進行交互式開發,而且和AI來綁定,下面來看一下這個簡單的例子。



如圖是咱們DSW的平臺,咱們能夠直接的用一個magic命令,connect到現存的maxcompute集羣,而且選擇project後,能夠直接輸入sql語句,這些都是智能的。而後咱們去執行,結果出來以後咱們能夠對feature進行相應的分析,包括能夠去改變這些feature的橫縱座標作出不一樣的charts,同時咱們甚至能夠把生成的結果直接web到excel方式進行編輯和處理,處理完以後咱們再把數據拉回來,也能夠切換到GPU或者CPU進行深度學習和訓練,訓練完了以後,咱們會把整個的代碼變成一個模型,咱們會把這個模型導入到一個相應的地方以後提供一個Web服務,這個服務也就是咱們的在線推理服務。整套流程作完以後,甚至咱們能夠再接數據應用,能夠在託管的WEB上構建,這就是大數據平臺給AI提供數據和算力。



大數據和AI是雙生系統,AI是一個工具層,能夠優化全部的事情。咱們但願飛天的大數據平臺可以賦能給AI。咱們在最開始的時候但願build一個可用的系統,可以面臨雙11的彈性負載仍然是可用的。經過這些年的努力,咱們追求極致的性能,咱們可以打破數據的增加和成本增加的線性關係,咱們也但願它是一個智能的,咱們但願更多的數據開發工程師來支持它,咱們須要更復雜的人力投入來理解他,咱們但願有更強的大數據來優化大數據系統。



咱們提出一個概念叫Auto Data Warehouse,咱們但願經過智能化的方式把大數據作得更聰明。總體上能夠分紅3個階段:

  • 第一階段是計算層面和效率層面,咱們嘗試尋找計算的第一層原理,咱們去找百萬到千萬級別裏面的哪些做業是類似的,所以能夠合併,經過這種方式來節省成本,還有當你有千萬級別的表以後,究竟哪些表建索引全局是最優的,以及咱們怎麼去作冷熱的數據分層和作自適應編碼。
  • 第二階段是資源規劃,AI和Auto Data Warehouse能夠幫助咱們作更好的資源優化,包括咱們有3種的執行做業模式,哪種模式更好,是能夠經過學習的方式學出來的,還有包括做業的運行預測和自動預報警,這套系統保證了你們看獲得或者看不到的阿里關鍵做業的核心,好比每過一段時間你們會刷一下芝麻信用分,天天早上九點阿里的商戶系統會和下游系統作結算,和央行作結算,這些基線是由千百個做業組成的一條線,從天天早上凌晨開始運行到早上八點跑完,系統由於各類各樣的緣由會出現各類的情況,可能個別的機器會宕機。咱們作了一個自動預測系統,去預測這個系統是否可以在關鍵時間點上完成,若是不可以完成,會把更多的資源加進來,保證關鍵做業的完成。這些系統保證了咱們你們平常看不見的關鍵數據的流轉,以及雙十一等重要的資源彈性。
  • 第三階段是智能建模,當數據進來以後和裏面已有的數據究竟有多少的重疊?這些數據有多少的關聯?當數據是幾百張表時,搞DBA手工的方式能夠調優的,如今阿里內部的系統有超過千萬級別的表,咱們有很是好的開發人員理解表裏面徹底的邏輯關係。這些自動調優和自動建模可以幫助咱們在這些方面作一些輔助性的工做。


這是Auto Data Warehouse系統架構圖,從多集羣的負載均衡到自動冷存,到中間的隱形做業優化,再到上層的隱私數據自動識別,這是咱們和螞蟻一塊兒開發的技術,當隱私的數據自動顯示到屏幕上來,系統會自動檢測並打碼。咱們其中的三項技術,包括自動隱私保護,包括重複子查詢自動合併優化,包括多集羣的自動容災,咱們有3篇paper發表,你們有興趣的話能夠去網站上讀一下相關的論文。

原文連接

本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索