中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

1年將30PB數(shù)據(jù)遷移到Spark,eBay的經(jīng)驗(yàn)有何可借鑒之處?

2018-11-02    來(lái)源:raincent

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

eBay使用Teradata已經(jīng)有二十年的歷史,這個(gè)數(shù)倉(cāng)系統(tǒng)中積累了60PB數(shù)據(jù)和上萬(wàn)張核心表,他們支撐著eBay最核心的商務(wù)邏輯和站點(diǎn)功能。從今年開(kāi)始,eBay開(kāi)始將這個(gè)龐大的數(shù)倉(cāng)由Teradata向Spark做遷移,使用eBay自己開(kāi)發(fā)的工具,遷移過(guò)程中90%的工作都可以由自動(dòng)化完成。與此同時(shí),研究人員通過(guò)優(yōu)化Spark框架,節(jié)省了一半的內(nèi)存。

正所謂“數(shù)據(jù)遷移無(wú)小事”,是什么痛點(diǎn)促使eBay決定要啟動(dòng)數(shù)據(jù)倉(cāng)庫(kù)遷移這項(xiàng)工作?eBay在數(shù)據(jù)倉(cāng)庫(kù)遷移的過(guò)程中做了哪些嘗試?又得到了哪些經(jīng)驗(yàn)和教訓(xùn)?為了進(jìn)一步了解eBay將數(shù)據(jù)倉(cāng)庫(kù)從Teradata遷移到Spark過(guò)程中的實(shí)踐和經(jīng)驗(yàn),我們與eBay大數(shù)據(jù)架構(gòu)師俞育才聊了聊。

Teradata在過(guò)去的二十年為eBay提供了非常優(yōu)秀的數(shù)倉(cāng)服務(wù),支撐起了eBay龐大的業(yè)務(wù)規(guī)模。二十多年積累下來(lái)的數(shù)據(jù)已經(jīng)將數(shù)據(jù)倉(cāng)庫(kù)變得非常龐大,所謂“牽一發(fā)而動(dòng)全身”,哪怕只是微小的改動(dòng)也會(huì)牽涉大量數(shù)據(jù)和業(yè)務(wù)邏輯,更何況是數(shù)據(jù)倉(cāng)庫(kù)遷移這樣的大動(dòng)作。

為什么決定遷移?

俞育才表示,隨著業(yè)務(wù)的發(fā)展,原有的模式體現(xiàn)出了一些不方便的地方,這些問(wèn)題促使eBay開(kāi)始嘗試數(shù)據(jù)倉(cāng)庫(kù)遷移的工作。

首先,技術(shù)上不夠靈活。eBay有很多自己特有的場(chǎng)景,供應(yīng)商的軟件很難為此去定制,或者需要eBay去適應(yīng)供應(yīng)商的路線圖,這存在很大的局限性。如果使用開(kāi)源軟件,可以主動(dòng)地參與開(kāi)發(fā),為自己的需求做深度的定制,更好地滿(mǎn)足業(yè)務(wù)的發(fā)展。

其次,通過(guò)開(kāi)源軟件可以大大擴(kuò)展數(shù)倉(cāng)的能力。傳統(tǒng)的數(shù)倉(cāng)就是做批處理,但是現(xiàn)代的數(shù)倉(cāng)是個(gè)很寬泛的概念。除了批處理,eBay還需要處理實(shí)時(shí)數(shù)據(jù)、做圖計(jì)算、做機(jī)器學(xué)習(xí)。不可能要求Teradata來(lái)提供這么多的功能。

另外,eBay還可以基于開(kāi)源軟件對(duì)成本和性能做極致的優(yōu)化。早在2014年的時(shí)候,eBay就開(kāi)始嘗試使用開(kāi)源軟件。剛開(kāi)始,開(kāi)源軟件的成本也是很高的。隨著持續(xù)地優(yōu)化,成本下降得很快。到2018年,開(kāi)源軟件的開(kāi)銷(xiāo)已經(jīng)和供應(yīng)商的專(zhuān)有軟件差不多了。按照這個(gè)趨勢(shì),明年的開(kāi)源系統(tǒng)的TCO甚至可以超過(guò)專(zhuān)有軟件。”

最后,從公司的角度講,也希望有更加多樣化多元化的投資。

Spark是新數(shù)據(jù)倉(cāng)庫(kù)的最優(yōu)選擇

下定了遷移的決心,下一步就要開(kāi)始技術(shù)選型工作了,市面上開(kāi)源的大數(shù)據(jù)框架、數(shù)據(jù)倉(cāng)庫(kù)那么多,eBay最終選擇了Spark。

問(wèn)及個(gè)中緣由,俞育才表示:“我們想要打造一個(gè)真正的現(xiàn)代化數(shù)倉(cāng),除了支持超大規(guī)模數(shù)據(jù)處理,還要能夠支持實(shí)時(shí)化和智能化。Spark提供了一站式數(shù)據(jù)處理的能力,不僅可以做傳統(tǒng)的批處理,還可以做流處理、圖計(jì)算和機(jī)器學(xué)習(xí),這非常符合我們的期望,也是其他系統(tǒng)所不具備的。其次,Spark的性能非常好。這得益于它強(qiáng)大的內(nèi)存計(jì)算能力,以及Catalyst、Tungsten帶來(lái)的諸多優(yōu)化。另外,Spark的社區(qū)很強(qiáng)大。Spark是Github上最活躍的大數(shù)據(jù)框架之一,各種問(wèn)題都可以得到很快的反饋。最后,在兼容性方面, Spark對(duì)SQL有非常好的支持,使得我們的分析師可以很方便地遷移到Spark上。隨著2.0的發(fā)布,Spark已經(jīng)日趨成熟,我們認(rèn)為在這個(gè)時(shí)間點(diǎn)做遷移是個(gè)非常正確的選擇。”

技術(shù)選型方面,eBay做了很多嘗試。一開(kāi)始嘗試的是MapReduce和Cascading,但它們的開(kāi)發(fā)周期太長(zhǎng)了。而且分析師的強(qiáng)項(xiàng)并不是編程,他們需要花費(fèi)很大的精力去學(xué)習(xí)怎么開(kāi)發(fā)一個(gè)好的作業(yè)。接下來(lái),團(tuán)隊(duì)又嘗試了Hive。但是Hive的性能不是非常好,一些案例并沒(méi)能跑出來(lái),并且Hive也不支持流和機(jī)器學(xué)習(xí)。Presto在數(shù)據(jù)量不大的情況下,是可以做內(nèi)存計(jì)算的,性能也很不錯(cuò),但是大查詢(xún)可能會(huì)直接失敗,因?yàn)樗菫榻换ナ讲樵?xún)?cè)O(shè)計(jì)的,容錯(cuò)并不是第一考慮。

綜合以上這些,Spark幾乎是一個(gè)不二選擇。在做原型的時(shí)候,eBay大數(shù)據(jù)團(tuán)隊(duì)找了一些非常核心也相對(duì)比較重的作業(yè),用Spark去跑,發(fā)現(xiàn)不僅僅是跑下來(lái)了,而且調(diào)優(yōu)之后,性能成本都還不錯(cuò),這給了整個(gè)團(tuán)隊(duì)很大的信心。

需要1000個(gè)人月的數(shù)據(jù)遷移如何從不可能變?yōu)榭赡?

數(shù)據(jù)倉(cāng)庫(kù)的遷移主要包含兩方面工作,一個(gè)是表的遷移,另一個(gè)是作業(yè)的遷移。

eBay第一期遷移的數(shù)倉(cāng)就有30PB之大,包括5000張的目標(biāo)表、20000張的臨時(shí)表和50000個(gè)作業(yè)。經(jīng)過(guò)估算,如果是手動(dòng)遷移,大概需要1000個(gè)人月,相當(dāng)于50個(gè)數(shù)據(jù)工程師,專(zhuān)職做遷移也需要兩年,這是非常大的開(kāi)銷(xiāo)。所以必須做自動(dòng)化遷移。

另一方面,表和作業(yè)之間是有依賴(lài)關(guān)系的。比如,想要把一張目標(biāo)表遷移過(guò)來(lái),需要把它的依賴(lài)表都先遷移過(guò)來(lái)。同時(shí)還要搞清楚依賴(lài)表用的是什么時(shí)候的數(shù)據(jù),是當(dāng)天的,還是前一天的,這是作業(yè)上的依賴(lài)。正是因?yàn)榇嬖谶@樣的依賴(lài)關(guān)系,eBay采用了分層進(jìn)行的自動(dòng)化遷移方案,首先那些沒(méi)有依賴(lài)的表和作業(yè),然后是一級(jí)依賴(lài),二級(jí)依賴(lài),以此類(lèi)推。

除此之外,并不是所有的表都適合做自動(dòng)化遷移。在老的數(shù)倉(cāng)里面,有些表和作業(yè)并不是按照標(biāo)準(zhǔn)流程構(gòu)建的,這些例外情況往往不大方便在自動(dòng)化框架中做統(tǒng)一處理。這時(shí)候,就需要和相應(yīng)的開(kāi)發(fā)人員溝通,或者讓他們?nèi)プ鲂薷膩?lái)符合標(biāo)準(zhǔn)流程,或者由他們自行手動(dòng)遷移。綜上所述,eBay制定出了一個(gè)以自動(dòng)化的分層遷移為主,輔之必要的手動(dòng)遷移的混合遷移方案。

基于eBay的經(jīng)驗(yàn),俞育才總結(jié)出了企業(yè)在制定數(shù)據(jù)遷移方案時(shí)最需要考慮的幾點(diǎn)問(wèn)題:

1. 軟硬件基礎(chǔ)設(shè)施的架構(gòu)和實(shí)現(xiàn)。在硬件層,eBay采用了計(jì)算存儲(chǔ)分離的結(jié)構(gòu),這會(huì)直接影響到接下來(lái)的服務(wù)器選型、網(wǎng)絡(luò)拓?fù)浼皫捲O(shè)計(jì)等。在軟件層,需要選擇合適版本的Hadoop、Hive、Spark等組件。

2. 資源容量。遷移一個(gè)30PB的Teradata集群需要規(guī)劃多大的Spark集群?在Teradata上,一般使用CPU-Seconds作為資源的度量。在開(kāi)始遷移后,團(tuán)隊(duì)發(fā)現(xiàn)Spark集群上的內(nèi)存消耗是很大的,成為了主要瓶頸,所以使用Memory-Seconds作為主要的資源度量。根據(jù)業(yè)務(wù)的實(shí)際情況,將Teradata的CPU-Seconds換算成Spark的Memory-Seconds就可以估算出需要的集群規(guī)模。

3. 數(shù)據(jù)質(zhì)量。數(shù)倉(cāng)遷移不僅僅是遷過(guò)去就了事了,還需要保證作業(yè)結(jié)果的正確性。在大規(guī)模數(shù)據(jù)的情況下,這是個(gè)相當(dāng)棘手的問(wèn)題,有很多細(xì)節(jié)需要考慮。

4. 遷移的效率。為了加快遷移,eBay開(kāi)發(fā)了很多的工具來(lái)幫助提升遷移的效率。這包括一套自動(dòng)化的遷移框架,大部分的自動(dòng)化遷移都是通過(guò)這個(gè)框架完成的,同時(shí)框架的各種功能會(huì)以Restful API的方式暴露出來(lái),團(tuán)隊(duì)還做了一個(gè)界面去調(diào)用這些功能,這就使得手動(dòng)遷移的部分也可以盡可能高效。

5. 優(yōu)化集群。優(yōu)化對(duì)于遷移是非常重要的,因?yàn)檫w移的時(shí)候集群的資源通常都很緊張,一個(gè)優(yōu)化良好的系統(tǒng)就可以在有限的資源中容納更多的作業(yè)。為此,eBay研發(fā)了兩個(gè)主要的技術(shù)來(lái)做性能的優(yōu)化。一個(gè)是Spark的自適應(yīng)執(zhí)行(Adaptive Execution),它可以動(dòng)態(tài)的優(yōu)化執(zhí)行計(jì)劃;另一個(gè)是Indexed Bucket,它是對(duì)數(shù)據(jù)物理布局的優(yōu)化。這兩個(gè)優(yōu)化為eBay節(jié)省了一半的內(nèi)存資源。

盡管團(tuán)隊(duì)已經(jīng)預(yù)先為大型數(shù)據(jù)倉(cāng)庫(kù)遷移可能會(huì)面臨的問(wèn)題設(shè)計(jì)了應(yīng)對(duì)方案,但在真正啟動(dòng)數(shù)據(jù)倉(cāng)庫(kù)遷移后,依然遇到了很多挑戰(zhàn)。俞育才給我們舉了幾個(gè)例子:

“1. 大規(guī)模數(shù)據(jù)下的正確性驗(yàn)證。我們可能會(huì)直觀地認(rèn)為,雙跑驗(yàn)證就可以了。盡管理論上是這樣,實(shí)際情況往往會(huì)復(fù)雜很多。首先,數(shù)據(jù)源是不斷變化的,目標(biāo)表依賴(lài)的任何一張?jiān)幢頂?shù)據(jù)發(fā)生了變化,結(jié)果就會(huì)不一致。所以,雙跑的時(shí)間點(diǎn)很重要。其次,即使數(shù)據(jù)源固定,跑多次結(jié)果未必是一致的。比如,在Spark中有個(gè)UDF,可以給返回每一行加上個(gè)ID。但實(shí)際上,這并不是一個(gè)冪等操作,因?yàn)镾huffle不保證每次返回行的順序,所以每次編上ID都是不一樣的。對(duì)于這樣的列,我們就不能做比較。類(lèi)似這樣的問(wèn)題還有很多,都需要特別注意。

2. 非標(biāo)準(zhǔn)流程作業(yè)的遷移。在老的Teradata數(shù)倉(cāng)中,大約有10-15%的作業(yè)并不是按照標(biāo)準(zhǔn)流程創(chuàng)建的,這些作業(yè)無(wú)法做自動(dòng)化遷移,或者自動(dòng)化的成本很高。所以,在初期做規(guī)劃的時(shí)候,要盡可能收集到足夠的信息,把他們都標(biāo)識(shí)出來(lái),然后盡早地聯(lián)系相應(yīng)的開(kāi)發(fā),或者修改作業(yè),或者做手動(dòng)遷移。

3. 開(kāi)源軟件的企業(yè)級(jí)特性的支持。一些企業(yè)級(jí)軟件提供的易用功能,現(xiàn)在的Spark、Hadoop還沒(méi)有提供。比如:監(jiān)控和調(diào)試信息還不是很完善,排錯(cuò)起來(lái)不是那么方便;對(duì)分析師來(lái)說(shuō),他們也缺乏一個(gè)好的IDE幫助他們做開(kāi)發(fā)。這并不全是Spark的問(wèn)題,我們自己開(kāi)發(fā)了很多外圍的組件來(lái)幫助改善這些問(wèn)題。”

eBay在數(shù)倉(cāng)建設(shè)方面經(jīng)驗(yàn)比較多,在大的方向上沒(méi)有特別多意料之外的狀況,但有些問(wèn)題還是挺值得注意的。俞育才強(qiáng)調(diào)道:“各個(gè)系統(tǒng)雖說(shuō)都支持標(biāo)準(zhǔn)SQL,但實(shí)現(xiàn)的細(xì)節(jié)上是有些差異的。比如字符集編碼,大家都支持Unicode,但實(shí)現(xiàn)的方式卻不一樣。Teradata使用的是UTF-16,Spark使用的是UTF-8,做工具的時(shí)候需要考慮到。再比如case sensitive,我們一般的理解就是列名,表名的大小寫(xiě)是否敏感,但是在Teradata里面,它還支持查詢(xún)的內(nèi)容是否大小寫(xiě)敏感,遷移到Spark SQL以后,我們就需要做些特殊的處理。”

遷移工作90%自動(dòng)化是如何做到的?

俞育才對(duì)eBay整個(gè)數(shù)據(jù)倉(cāng)庫(kù)的自動(dòng)遷移工作流程進(jìn)行了梳理,主要包括以下10個(gè)環(huán)節(jié)。

根據(jù)自動(dòng)化需求,定義和采集元數(shù)據(jù),并對(duì)元數(shù)據(jù)進(jìn)行分析。提取出遷移目標(biāo)表和作業(yè)的屬性,比如表的大小、相關(guān)SQL文件及腳本的復(fù)雜程度,作業(yè)Pipeline信息,數(shù)據(jù)血緣等。

根據(jù)元數(shù)據(jù)分析結(jié)果制定整體遷移策略,劃分自動(dòng)遷移的scope,并決定遷移的順序 。除非復(fù)雜度過(guò)高,默認(rèn)采用自動(dòng)遷移。無(wú)依賴(lài)關(guān)系的表先進(jìn)行遷移,上游表遷移完成后才開(kāi)始下游表的遷移。

創(chuàng)建目標(biāo)表及所需中間表。

準(zhǔn)備靜態(tài)測(cè)試數(shù)據(jù),包括目標(biāo)表的前一天數(shù)據(jù)、當(dāng)天增量數(shù)據(jù)和當(dāng)天數(shù)據(jù)。比對(duì)動(dòng)態(tài)數(shù)據(jù)是相當(dāng)麻煩的,靜態(tài)數(shù)據(jù)則方便得多。

把 Teradata SQL 翻譯成Spark SQL;舅枷胧菍eradata SQL語(yǔ)句解析成邏輯計(jì)劃,再將邏輯計(jì)劃反向轉(zhuǎn)換為Spark SQL的語(yǔ)句。

結(jié)合表的大小等屬性以及Spark集群的參數(shù)特征,生成優(yōu)化的Spark作業(yè)配置參數(shù)。

將原始包含Teradata SQL的pipeline轉(zhuǎn)換成調(diào)用Spark SQL的pipeline。

啟動(dòng)pipeline進(jìn)行集成測(cè)試,驗(yàn)證各個(gè)作業(yè)和整個(gè)pipeline的正確性。

部署到生產(chǎn)環(huán)境。包括代碼發(fā)布、表的建立、歷史數(shù)據(jù)初始化、pipeline上線和定時(shí)調(diào)度、以及在生產(chǎn)環(huán)境的測(cè)試。

在連續(xù)多天數(shù)據(jù)比對(duì)通過(guò)后(默認(rèn)7天)發(fā)送通知給到表的負(fù)責(zé)人開(kāi)始準(zhǔn)備交接工作 ,即正式將Teradata的pipeline停止而采用Spark的pipeline。

上面中提到的第1到第8步均已實(shí)現(xiàn)自動(dòng)化,第9、10步由于涉及到生產(chǎn)環(huán)境,根據(jù)流程管理的需要,由相關(guān)同事半自動(dòng)化地完成。

俞育才表示,實(shí)現(xiàn)自動(dòng)化難度最大的環(huán)節(jié)是對(duì)元數(shù)據(jù)的抽象和定義。“因?yàn)樽詣?dòng)化遷移項(xiàng)目的時(shí)間線非常緊張,一些數(shù)據(jù)轉(zhuǎn)換的模式我們一開(kāi)始沒(méi)有考慮到,相應(yīng)的元數(shù)據(jù)就沒(méi)有收集,這會(huì)給后期的自動(dòng)化帶來(lái)不小的麻煩。另外從技術(shù)上看,自動(dòng)化SQL翻譯工具,依賴(lài)分析工具也是比較復(fù)雜的部分。”

對(duì)應(yīng)上面說(shuō)的每個(gè)步驟,eBay都有相應(yīng)的自動(dòng)化工具:Metadata Analyzer,Table Creator,Data Mover,SQL Converter,Spark SQL Optimizer,Pipeline Generator, Data Validator等等。這些工具基本都是eBay大數(shù)據(jù)團(tuán)隊(duì)自研的,其中還包括一個(gè)基于Zeppelin的集成開(kāi)發(fā)環(huán)境Dev Suite。

使用eBay自己開(kāi)發(fā)的工具,最終數(shù)據(jù)倉(cāng)庫(kù)遷移過(guò)程中90%的工作都由自動(dòng)化完成了,數(shù)倉(cāng)遷移原來(lái)預(yù)計(jì)需要的1000個(gè)人月銳減到了250個(gè)人月。

人工參與的部分主要包括:自動(dòng)化工具的開(kāi)發(fā)和維護(hù);非標(biāo)準(zhǔn)化流程作業(yè)的遷移;無(wú)法自動(dòng)裝換的Teradata功能,例如Recursive Query;數(shù)據(jù)模型和pipeline的重構(gòu);性能的調(diào)優(yōu)與優(yōu)化。

當(dāng)然,如此高的自動(dòng)化完成率自然也給大數(shù)據(jù)工程師帶來(lái)了與以往不同的挑戰(zhàn)。傳統(tǒng)的手動(dòng)遷移任務(wù),一般的數(shù)據(jù)工程師就可以完成,而自動(dòng)化遷移會(huì)需要我們的工程師不僅僅對(duì)數(shù)據(jù)熟悉,還要具備軟件開(kāi)發(fā)的能力。

俞育才表示,未來(lái)完全自動(dòng)化意義不是特別大,因?yàn)橛幸恍┨厥鈭?chǎng)景出現(xiàn)的頻率不是很多,為它們做專(zhuān)門(mén)自動(dòng)化就不是很有必要。

對(duì)于正如火如荼發(fā)展中的企業(yè)來(lái)說(shuō),如何保證數(shù)據(jù)倉(cāng)庫(kù)遷移過(guò)程中線上運(yùn)行的業(yè)務(wù)不受影響?俞育才也給出了eBay經(jīng)過(guò)實(shí)踐得到的經(jīng)驗(yàn):

首先,環(huán)境隔離。eBay的Spark環(huán)境和Teradata環(huán)境是完全隔離的,正在使用的Teradata不會(huì)受到影響。

其次,嚴(yán)格的數(shù)據(jù)比對(duì)。新的任務(wù)使能以后會(huì)和Teradata有一個(gè)長(zhǎng)達(dá)七天的雙跑驗(yàn)證。

最后,灰度上線。任務(wù)切換到Spark的pipeline后設(shè)置一個(gè)觀察期,如果發(fā)現(xiàn)有問(wèn)題,可以立馬切換回Teradata的pipeline。

結(jié)語(yǔ)

經(jīng)過(guò)一年的努力,第一期約30PB的數(shù)倉(cāng)遷移已經(jīng)基本完成。接下來(lái),一方面,俞育才所在的大數(shù)據(jù)團(tuán)隊(duì)將會(huì)將工作重心放在對(duì)Spark的改進(jìn)和優(yōu)化上,例如更好地支持Teradata的語(yǔ)法和特性、自適應(yīng)執(zhí)行、緩存、交互式查詢(xún)等;另一方面,他們也將繼續(xù)推動(dòng)eBay的現(xiàn)代化數(shù)倉(cāng)建設(shè),使之更加實(shí)時(shí)化、智能化。

采訪嘉賓

俞育才, eBay大數(shù)據(jù)架構(gòu)師,負(fù)責(zé)Spark數(shù)據(jù)平臺(tái)的設(shè)計(jì)與優(yōu)化。12年軟件開(kāi)發(fā)經(jīng)驗(yàn),Apache Spark的活躍開(kāi)發(fā)者,熟悉系統(tǒng)軟件的性能分析與調(diào)優(yōu),基于Spark設(shè)計(jì)和實(shí)現(xiàn)了自適應(yīng)執(zhí)行引擎和層次化存儲(chǔ)。在加入eBay之前,俞育才在英特爾工作了9年,領(lǐng)導(dǎo)團(tuán)隊(duì)研究各種前沿的硬件技術(shù)加速云和大數(shù)據(jù)計(jì)算。

來(lái)源:InfoQ

標(biāo)簽: 大數(shù)據(jù) 大數(shù)據(jù)架構(gòu) 代碼 服務(wù)器 腳本 開(kāi)發(fā)者 數(shù)據(jù)分析 網(wǎng)絡(luò)

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:業(yè)界最大規(guī)模:中國(guó)移動(dòng)將集采500萬(wàn)NB單模模組

下一篇:數(shù)據(jù)可視化的七大趨勢(shì)