天天看點

AI加持的阿裡雲飛天大資料平台技術揭秘原創技術優化 + 系統融合雲原生平台到全域雲數倉大資料與AI 雙生系統

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

以下是精彩視訊内容整理

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

AI加持的阿裡雲飛天大資料平台技術揭秘原創技術優化 + 系統融合雲原生平台到全域雲數倉大資料與AI 雙生系統

在2015年的時候,我們開始關注到資料的海量增長對系統帶來了越來越高的要求,随着深度學習的需求增長,資料和資料對應的處理能力是制約人工智能發展的關鍵問題,我們在給客戶聊到一個擺在每個CIO/CTO面前的現實問題——如果資料增長10倍,應該怎麼辦?圖中數字大家看得非常清晰,非常簡單的拍立淘系統背後是PB的資料在做支撐,阿裡小蜜客服系統有20個PB,大家每天在淘寶上日常使用的個性化推薦系統,背景要超過100個PB的資料來支撐背景的決策,10倍到100倍的資料增長是非常常見的。從這個角度上來講,10倍的資料增長通常意味着什麼問題?

第一,意味着10倍成本的增長,如果考慮到增長不是均勻的,會有波峰和波谷,可能需要30倍彈性要求;第二,實際上因為人工智能的興起,二維結構性的關系型資料持續性增長的同時,帶來的是非結構化資料,這種持續的資料增長裡面,一半的增長來自于這種非結構化資料,我們除了能夠處理好這種二維的資料化之後,我們如何來做好多種資料融合的計算?第三,阿裡有一個龐大的中台團隊,如果說我們的資料增長了10倍,我們的團隊是不是增長了10倍?如果說資料增長了10倍,資料的關系複雜度也超過了10倍,那麼人工的成本是不是也超過了10倍以上,我們的飛天平台在2015年後就是圍繞這三個關鍵性的問題來做工作的。

原創技術優化 + 系統融合

當阿裡巴巴的大資料走過10萬台規模的時候,我們已經走入到技術的無人區,這樣的挑戰絕大多數公司不一定能遇到,但是對于阿裡巴巴這樣的體量來講,這個挑戰是一直擺在我們面前的。

AI加持的阿裡雲飛天大資料平台技術揭秘原創技術優化 + 系統融合雲原生平台到全域雲數倉大資料與AI 雙生系統

大家可以看到,2015年的時候,我們整個的體系建立起來之後,就開始做各種各樣的Benchmark,比如2015年100TB的Sorting,2016年我們做CloudSort,去看成本效益,2017年我們選擇了Bigbench。如圖是我們最新釋出的資料,在2017、2018和2019年,每年都有一倍的性能提升,同時我們在30TB的規模上比第二名的産品有一倍的性能增長,并且有一半的成本節省,這是我們的計算力持續上升的優化趨勢。

AI加持的阿裡雲飛天大資料平台技術揭秘原創技術優化 + 系統融合雲原生平台到全域雲數倉大資料與AI 雙生系統

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

AI加持的阿裡雲飛天大資料平台技術揭秘原創技術優化 + 系統融合雲原生平台到全域雲數倉大資料與AI 雙生系統

我們先來看單一算子和引擎架構的極緻優化,我們用的是比較難寫難維護的架構,但是因為它比較貼近實體硬體,是以帶來了更極緻的性能追求。對于很多系統來說可能5%的性能提升并不關鍵,但對于飛天技術平台來講,5%的性能提升就是5千台的規模,大概就是2~3億的成本。如圖做了一個簡單的小例子做單一算子的極緻優化,在shuffle子場景中,利用Non-temporal Store優化shuffling中的緩存政策,在這樣的政策上有30%的性能提升。

除了計算子產品,它還有存儲子產品,存儲分為4個象限。一四象限是存儲資料本身的壓縮能力,資料增長最直接的成本就是存儲成本的上升,我們怎麼做更好的壓縮和編碼以及indexing?這是一四象限做的相關工作;二三象限是在性能節省上做的相關工作,我們存儲層其實是基于開源ORC的标準,我們在上面做了非常多的改進和優化,其中白框裡面都有非常多的标準改動,我們讀取性能對比開源Java ORC 均快 50%,我們是ORC社群過去兩年最大貢獻者,貢獻了2W+行代碼,這是我們在算子層和存儲層的優化,這是最底層的架構。

AI加持的阿裡雲飛天大資料平台技術揭秘原創技術優化 + 系統融合雲原生平台到全域雲數倉大資料與AI 雙生系統

但是從另外一個層面上來講,單一的算子和部分的算子組合很難滿足部分的場景需求,是以我們就提到靈活的算子組合。舉幾個數字,我們在Join上有4種模式,有3種Shuffling模式提供,有3種作業運作模式,有多種硬體支援和多種存儲媒體支援。圖右是怎樣去動态判别Join模式,使得運算效率更高。通過這種動态的算子組合,是我們優化的第二個次元。

AI加持的阿裡雲飛天大資料平台技術揭秘原創技術優化 + 系統融合雲原生平台到全域雲數倉大資料與AI 雙生系統

從引擎優化到自學習調優是我們在最近1年多的時間裡花精力比較多的,我們在考慮如何用人工智能及自學習技術來做大資料系統,大家可以想象學騎自行車,剛開始騎得不好,速度比較慢甚至有的時候會摔倒,通過慢慢的學習,人的能力會越來越好。對于一個系統而言,我們是否可以用同樣的方式來做?當一個全新的作業送出到這個系統時,系統對作業的優化是比較保守的,比如稍微多給一點資源,那麼我選擇的執行計劃會相對比較保守一點,使得至少能夠跑過去,當跑過之後就能夠搜集到資訊和經驗,通過這些經驗再反哺去優化資料,是以我們提出一個基于曆史資訊的自學習回歸優化,底層是如圖的架構圖,我們把曆史資訊放在OFFLINE system去做各種各樣的統計分析,當作業來了之後我們把這些資訊反哺到系統之中去,讓系統進行自學習。通常情況下,一個相似的作業大概跑了3到4次的時候,進入到一個相對比較優的過程,優指的是作業運作時間和系統資源節省。這套系統大概在阿裡内部3年前上線的,我們通過這樣的系統把阿裡的水位線從40%提升到70%以上。

另外圖中右側也是一個自學習的例子,我們怎麼區分熱資料和冷資料,之前可以讓使用者自己去set,可以用一個普通的configuration去配置,後來發現我們采用動态的根據作業方式來做,效果會更好,這個技術是去年上線的,去年為阿裡節約了1億+人民币。從以上幾個例子上來講引擎層面和存儲層面做的極緻性能優化,性能優化又帶來了使用者成本的降低,在2019年9月1号,飛天大資料平台的整體存儲成本降低了30%,同時我們釋出了基于原生計算的新規格,可以實作最高70%的成本節省。

以上都是在引擎層面的優化,随着AI的普惠優化,AI的開發人員會越來越多,甚至很多人都不太具備代碼的能力,阿裡内部有10萬名員工,每天有超過1萬個員工在飛天大資料平台上做開發,從這個角度上來講,不僅系統的優化是重要的,平台和開發平台的優化也是非常關鍵的。

AI加持的阿裡雲飛天大資料平台技術揭秘原創技術優化 + 系統融合雲原生平台到全域雲數倉大資料與AI 雙生系統

計算引擎對大家來說看不見摸不着,我們要去用它肯定希望用最簡單的方式,先來看一下Maxcompute計算引擎。首先我們需要有使用者,使用者怎麼來使用?需要資源隔離,也就是說每個使用者在系統上面使用的時候會對應着賬号,賬号會對應着權限,這樣就把整套東西串聯起來。今天我的使用者怎麼用?用哪些部分?這是第一部分。第二部分是開發,開發有IDE,IDE用來寫代碼,寫完代碼之後送出,送出之後存在一個排程的問題,這麼多的資源任務順序是什麼?誰先誰後,出了問題要不要中斷,這些都由排程系統來管,我們的這些任務就有可能在不同的地方來運作,可以通過資料內建把它拉到不同的區域,讓這些資料能夠在整個的平台上跑起來,我們所有的任務跑起來之後我們需要有一個監控,同時我們的operation也需要自動化、運維化,再往下我們會進行資料的分析或者BI報表之類的,我們也不能夠忘記machine learning也是在我們的平台上內建起來的。最後,最重要的就是資料安全,這一塊整個東西構起一個大資料引擎的外沿+大資料引擎本身,這一套我們稱之為單引擎的完備大資料系統,這一套系統我們在2017年的時候就具備了。

AI加持的阿裡雲飛天大資料平台技術揭秘原創技術優化 + 系統融合雲原生平台到全域雲數倉大資料與AI 雙生系統

2018年的時候我們做什麼?2018年我們在單引擎的基礎上對接到多引擎,我們整個開發鍊路要讓它閉環化,資料內建可以把資料在不同的資料源之間進行拖動,我們把資料開發完之後,傳統的方式是再用資料引擎把它拖走,而我們做的事情是希望這個資料是雲上的服務,這個服務能夠直接對使用者提供想要的資料,而不需要把資料整個拖走,因為資料在傳輸過程中有存儲的消耗、網絡的消耗和一緻性消耗,所有的這些東西都在消耗使用者的成本,我們希望通過資料服務讓使用者拿到他想要的東西。再往下,如果資料服務之上還有自定義的應用,使用者還需要去建一個機房,搭一個web服務,然後把資料拿過來,這樣也很麻煩,是以我們提供一個托管的web應用的雲上開發平台,能夠讓使用者直接看到所有的資料服務,在這個方向上來說,我們就可以建構任意的資料智能解決方案。

AI加持的阿裡雲飛天大資料平台技術揭秘原創技術優化 + 系統融合雲原生平台到全域雲數倉大資料與AI 雙生系統

到2019年,我們會把理念再拓展一層,首先對于使用者來說是使用者互動層,但是使用者的互動層不僅僅是開發,是以我們會把使用者分成兩類,一部分叫做資料的生産者,也就是寫任務、寫排程、運維等,這些是資料的生産者,資料的生産者做好的東西給誰呢?給資料的消費者,我們的資料分散在各個地方,所有的東西都會在治理的互動層對資料的消費者提供服務,這樣我們就在一個新的角度來诠釋飛天大資料平台。除了引擎存儲以外,我們有全域的資料內建進行拉動,統一的排程可以在不同的引擎之間來切換協同工作,同時我們有統一的中繼資料管理,在這之上我們對資料的生産者和資料的消費者也都進行了相應的支援,那麼這個整體就是全域的大資料平台産品架構。

雲原生平台到全域雲數倉

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

AI加持的阿裡雲飛天大資料平台技術揭秘原創技術優化 + 系統融合雲原生平台到全域雲數倉大資料與AI 雙生系統

飛天大資料平台在10年前就堅持雲原生的資料,雲原生意味着三件事情,第一開箱即用、不用不花錢,這個和傳統的買硬體方式有非常大的不同;第二我們具備了秒級自适應的彈性擴充,用多少買多少;第三因為是雲上的架構,我們很多運維和安全的東西由雲自動來完成了,是以是安全免運維的。從系統架構上講,飛天大資料包括傳統的CPU、GPU叢集,以及平頭哥晶片叢集,再往上是我們的伏羲智能排程系統和中繼資料系統,再往上我們提供了多種計算能力,我們最重要的目标就是通過雲原生設計把10萬台在實體上分布在不同地域的伺服器讓使用者覺得像一台計算機。我們今天已經達到了10年前的設計要求,具備了更強的服務擴充能力,能夠支撐5到10年的資料進步的發展。

我們充分利用雲原生設計的理念,支援大資料和機器學習的快速大規模彈性負載需求。我們支撐0~100倍的彈性擴容能力,去年開始,雙十一60%的資料處理量來自于大資料平台的處理能力,當雙11巅峰來的時候,我們把大資料的資源彈回來讓給線上系統去處理問題。從另外一個角度來講,我們具備彈性能力,相比實體的IDC模式,我們有80%成本的節省,按作業的計費模式,我們提供秒級彈性伸縮的同時,不使用不收費。相比自建IDC,綜合成本隻有1/5。除了堅持原生之外,我們最近發現,随着人工智能的發展,語音視圖的資料越來越多了,處理的能力就要加強,我們要從二維的大資料平台變成全域的資料平台。

AI加持的阿裡雲飛天大資料平台技術揭秘原創技術優化 + 系統融合雲原生平台到全域雲數倉大資料與AI 雙生系統

如圖所示,業界有一個比較火的概念叫資料湖,我們要把客戶多種多樣的資料拿到一起來進行統一的查詢和管理。但是對于真正的企業級服務實踐,我們看到一些問題,首先資料的來源對于客戶來說是不可控的,也是多種多樣的,而且很大程度上沒有辦法把所有的資料統一用一種系統和引擎來管理起來,在這種情況下我們需要更大的能力是什麼呢?我們今天通過不同的資料源,可以進行統一的計算和統一的查詢和分析,統一的管理,是以我們提出一個更新的概念叫邏輯資料湖,對于使用者來說,不需要把他的資料進行實體上的搬遷,但是我們一樣能夠進行聯邦計算和查詢,這就是我們講的邏輯資料湖的核心理念。

為了支撐這件事情,我們會有統一的中繼資料管理系統和排程系統,能夠讓不同的計算引擎協同起來工作,最後把所有的工作彙聚到全域資料治理上面,并且提供給資料開發者一個程式設計平台,讓他能夠直接的産生資料,或者是去定制自己的應用。那麼,通過這樣的方式,我們把原來的單次元大資料平台去做大資料處理,拓展到一個全域的資料治理,這個資料其實可以包含簡單的大資料的,也可以包含資料庫的,甚至是一些OSS的file,這些我們在整個的平台裡面都會加以處理。

AI加持的阿裡雲飛天大資料平台技術揭秘原創技術優化 + 系統融合雲原生平台到全域雲數倉大資料與AI 雙生系統

如圖為飛天大資料的産品架構,下面是存儲計算引擎,可以看到我們除了計算引擎自帶的存儲之外還有其它開放的OSS,還有IOT端采集的資料和資料庫的資料,所有資料進行全域資料內建,內建後進行統一的中繼資料管理,統一的混合任務排程,再往上是開發層和資料綜合治理層,通過這種方式,我們立體化的把整個大資料圈起來管理。

大資料與AI 雙生系統

提到了大資料我們肯定會想到AI,AI和大資料是雙生的,對于AI來說它是需要大資料來empower的,也就說bigdata for AI。下面可以通過一個demo來看我們怎麼來做這件事情。對于AI的開發工程師來說,他們比較常用的方式是用互動式的notebook來進行AI的開發,因為它比較直覺,但是如何把大資料也進行互動式開發,并且和AI來綁定,下面來看一下這個簡單的例子。

AI加持的阿裡雲飛天大資料平台技術揭秘原創技術優化 + 系統融合雲原生平台到全域雲數倉大資料與AI 雙生系統

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

AI加持的阿裡雲飛天大資料平台技術揭秘原創技術優化 + 系統融合雲原生平台到全域雲數倉大資料與AI 雙生系統

大資料和AI是雙生系統,AI是一個工具層,可以優化所有的事情。我們希望飛天的大資料平台能夠賦能給AI。我們在最開始的時候希望build一個可用的系統,能夠面臨雙11的彈性負載仍然是可用的。通過這些年的努力,我們追求極緻的性能,我們能夠打破資料的增長和成本增長的線性關系,我們也希望它是一個智能的,我們希望更多的資料開發工程師來支援它,我們需要更複雜的人力投入來了解他,我們希望有更強的大資料來優化大資料系統。

AI加持的阿裡雲飛天大資料平台技術揭秘原創技術優化 + 系統融合雲原生平台到全域雲數倉大資料與AI 雙生系統

我們提出一個概念叫Auto Data Warehouse,我們希望通過智能化的方式把大資料做得更聰明。整體上可以分成3個階段:

  • 第一階段是計算層面和效率層面,我們嘗試尋找計算的第一層原理,我們去找百萬到千萬級别裡面的哪些作業是相似的,是以可以合并,通過這種方式來節省成本,還有當你有千萬級别的表之後,究竟哪些表建索引全局是最優的,以及我們怎麼去做冷熱的資料分層和做自适應編碼。
  • 第二階段是資源規劃,AI和Auto Data Warehouse可以幫助我們做更好的資源優化,包括我們有3種的執行作業模式,哪一種模式更好,是可以通過學習的方式學出來的,還有包括作業的運作預測和自動預報警,這套系統保證了大家看得到或者看不到的阿裡關鍵作業的核心,比如每過一段時間大家會刷一下芝麻信用分,每天早上九點阿裡的商戶系統會和下遊系統做結算,和央行做結算,這些基線是由千百個作業組成的一條線,從每天早上淩晨開始運作到早上八點跑完,系統因為各種各樣的原因會出現各種的狀況,可能個别的機器會當機。我們做了一個自動預測系統,去預測這個系統是否能夠在關鍵時間點上完成,如果不能夠完成,會把更多的資源加進來,保證關鍵作業的完成。這些系統保證了我們大家日常看不見的關鍵資料的流轉,以及雙十一等重要的資源彈性。
  • 第三階段是智能模組化,當資料進來之後和裡面已有的資料究竟有多少的重疊?這些資料有多少的關聯?當資料是幾百張表時,搞DBA手工的方式可以調優的,現在阿裡内部的系統有超過千萬級别的表,我們有非常好的開發人員了解表裡面完全的邏輯關系。這些自動調優和自動模組化能夠幫助我們在這些方面做一些輔助性的工作。
    AI加持的阿裡雲飛天大資料平台技術揭秘原創技術優化 + 系統融合雲原生平台到全域雲數倉大資料與AI 雙生系統

這是Auto Data Warehouse系統架構圖,從多叢集的負載均衡到自動冷存,到中間的隐形作業優化,再到上層的隐私資料自動識别,這是我們和螞蟻一起開發的技術,當隐私的資料自動顯示到螢幕上來,系統會自動檢測并打碼。我們其中的三項技術,包括自動隐私保護,包括重複子查詢自動合并優化,包括多叢集的自動容災,我們有3篇paper發表,大家有興趣的話可以去網站上讀一下相關的論文。

MaxCompute 産品官網 >>> DataWorks 産品官網 >>>

繼續閱讀