技術(shù)揭秘:華為云DLI背后的核心計(jì)算引擎

      網(wǎng)友投稿 807 2022-05-28

      本文主要給大家介紹隱藏在華為云數(shù)據(jù)湖探索服務(wù)(后文簡(jiǎn)稱(chēng)DLI)背后的核心計(jì)算引擎——Spark。

      DLI團(tuán)隊(duì)在Spark之上做了大量的性能優(yōu)化與服務(wù)化改造,但其本質(zhì)還是脫離不了Spark的核心概念與思想,因此筆者從以下幾點(diǎn)闡述,讓讀者快速對(duì)Spark有一個(gè)直觀的認(rèn)識(shí),玩轉(zhuǎn)DLI。

      Spark的誕生及優(yōu)勢(shì)

      2009年,Spark誕生于伯克利大學(xué)AMPLab,誕生之初是屬于伯克利大學(xué)的研究性項(xiàng)目。于2010年開(kāi)源,2013年成為Apache開(kāi)源項(xiàng)目,經(jīng)過(guò)幾年的發(fā)展逐漸取代了Hadoop,成為了開(kāi)源社區(qū)炙手可熱的大數(shù)據(jù)處理平臺(tái)。

      Spark官方的解釋?zhuān)骸癝park是用于大規(guī)模數(shù)據(jù)處理的統(tǒng)一分析引擎”,把關(guān)鍵詞拆開(kāi)來(lái)看,“大規(guī)模數(shù)據(jù)”指的是Spark的使用場(chǎng)景是大數(shù)據(jù)場(chǎng)景;“統(tǒng)一”主要體現(xiàn)在將大數(shù)據(jù)的編程模型進(jìn)行了歸一化,同時(shí)滿(mǎn)足多種類(lèi)型的大數(shù)據(jù)處理場(chǎng)景(批處理、流處理、機(jī)器學(xué)習(xí)等),降低學(xué)習(xí)和維護(hù)不同大數(shù)據(jù)引擎的成本;“分析引擎”表明Spark聚焦在計(jì)算分析,對(duì)標(biāo)的是Hadoop中的MapReduce,對(duì)其模型進(jìn)行優(yōu)化與擴(kuò)展。

      Spark為了解決MapReduce模型的優(yōu)化和擴(kuò)展,那么我們先探討一下MapReduce存在的問(wèn)題,然后分析Spark在MapReduce之上的改進(jìn)。

      (1)MapReduce中間結(jié)果落盤(pán),計(jì)算效率低下

      隨著業(yè)務(wù)數(shù)據(jù)不斷增多,業(yè)務(wù)邏輯不斷多樣化,很多ETL和數(shù)據(jù)預(yù)處理的工作需要多個(gè)MapReduce作業(yè)才能完成,但是MapReduce作業(yè)之間的數(shù)據(jù)交換需要通過(guò)寫(xiě)入外部存儲(chǔ)才能完成,這樣會(huì)導(dǎo)致頻繁地磁盤(pán)讀寫(xiě),降低作業(yè)執(zhí)行效率。

      Spark設(shè)計(jì)之初,就想要解決頻繁落盤(pán)問(wèn)題。Spark只在需要交換數(shù)據(jù)的Shuffle階段(Shuffle中文翻譯為“洗牌”,需要Shuffle的關(guān)鍵性原因是某種具有共同特征的數(shù)據(jù)需要最終匯聚到一個(gè)計(jì)算節(jié)點(diǎn)上進(jìn)行計(jì)算)才會(huì)寫(xiě)磁盤(pán),其它階段,數(shù)據(jù)都是按流式的方式進(jìn)行并行處理。

      (2)編程模型單一,場(chǎng)景表達(dá)能力有限

      技術(shù)揭秘:華為云DLI背后的核心計(jì)算引擎

      MapReduce模型只有Map和Reduce兩個(gè)算子,計(jì)算場(chǎng)景的表達(dá)能力有限,這會(huì)導(dǎo)致用戶(hù)在編寫(xiě)復(fù)雜的邏輯(例如join)時(shí),需要自己寫(xiě)關(guān)聯(lián)的邏輯,如果邏輯寫(xiě)得不夠高效,還會(huì)影響性能。

      與MapReduce不同,Spark將所有的邏輯業(yè)務(wù)流程都抽象成是對(duì)數(shù)據(jù)集合的操作,并提供了豐富的操作算子,如:join、sortBy、groupByKey等,用戶(hù)只需要像編寫(xiě)單機(jī)程序一樣去編寫(xiě)分布式程序,而不用關(guān)心底層Spark是如何將對(duì)數(shù)據(jù)集合的操作轉(zhuǎn)換成分布式并行計(jì)算任務(wù),極大的簡(jiǎn)化了編程模型

      Spark的核心概念:RDD

      Spark中最核心的概念是RDD(Resilient Distributed Dataset)——彈性分布式數(shù)據(jù)集,顧名思義,它是一個(gè)邏輯上統(tǒng)一、物理上分布的數(shù)據(jù)集合,Spark通過(guò)對(duì)RDD的一系列轉(zhuǎn)換操作來(lái)表達(dá)業(yè)務(wù)邏輯流程,就像數(shù)學(xué)中對(duì)一個(gè)向量的一系列函數(shù)轉(zhuǎn)換。

      Spark通過(guò)RDD的轉(zhuǎn)換依賴(lài)關(guān)系生成對(duì)任務(wù)的調(diào)度執(zhí)行的有向無(wú)環(huán)圖,并通過(guò)任務(wù)調(diào)度器將任務(wù)提交到計(jì)算節(jié)點(diǎn)上執(zhí)行,任務(wù)的劃分與調(diào)度是對(duì)業(yè)務(wù)邏輯透明的,極大的簡(jiǎn)化了分布式編程模型,RDD也豐富了分布式并行計(jì)算的表達(dá)能力。

      RDD上的操作分為T(mén)ransformation算子和Action算子。Transformation算子用于編寫(xiě)數(shù)據(jù)的變換過(guò)程,是指邏輯上組成變換過(guò)程。Action算子放在程序的最后一步,用于對(duì)結(jié)果進(jìn)行操作,例如:將結(jié)果匯總到Driver端(collect)、將結(jié)果輸出到HDFS(saveAsTextFile)等,這一步會(huì)真正地觸發(fā)執(zhí)行。

      常見(jiàn)的Transformation算子包括:map、filter、groupByKey、join等,這里面又可以分為Shuffle算子和非Shuffle算子,Shuffle算子是指處理過(guò)程需要對(duì)數(shù)據(jù)進(jìn)行重新分布的算子,如:groupByKey、join、sortBy等。常見(jiàn)的Action算子如:count、collect、saveAsTextFile等

      如下是使用Spark編程模型編寫(xiě)經(jīng)典的WordCount程序:

      該程序通過(guò)RDD的算子對(duì)文本進(jìn)行拆分、統(tǒng)計(jì)、匯總與輸出。

      Spark程序中涉及到幾個(gè)概念,Application、Job、Stage、Task。每一個(gè)用戶(hù)寫(xiě)的程序?qū)?yīng)于一個(gè)Application,每一個(gè)Action生成一個(gè)Job(默認(rèn)包含一個(gè)Stage),每一個(gè)Shuffle算子生成一個(gè)新的Stage,每一個(gè)Stage中會(huì)有N個(gè)Task(N取決于數(shù)據(jù)量或用戶(hù)指定值)。

      Spark的架構(gòu)設(shè)計(jì)

      前面講述了Spark 核心邏輯概念,那么Spark的任務(wù)是如何運(yùn)行在分布式計(jì)算環(huán)境的呢?接下來(lái)我們來(lái)看看開(kāi)源框架Spark的架構(gòu)設(shè)計(jì)。

      (注:涂色表示進(jìn)程)

      Spark是典型的主從(Master- Worker)架構(gòu),Master 節(jié)點(diǎn)上常駐 Master守護(hù)進(jìn)程,負(fù)責(zé)管理全部的 Worker 節(jié)點(diǎn)。Worker 節(jié)點(diǎn)上常駐 Worker 守護(hù)進(jìn)程,負(fù)責(zé)與 Master 節(jié)點(diǎn)通信并管理 Executor。

      (注:橙色和綠色表示進(jìn)程)

      Spark程序在客戶(hù)端提交時(shí),會(huì)在Application的進(jìn)程中啟動(dòng)一個(gè)Driver。看一下官方對(duì)Driver的解釋“The process running the main() function of the application and creating the SparkContext”。

      我們可以把Master和Worker看成是生產(chǎn)部總部老大(負(fù)責(zé)全局統(tǒng)一調(diào)度資源、協(xié)調(diào)生產(chǎn)任務(wù))和生產(chǎn)部分部部長(zhǎng)(負(fù)責(zé)分配、上報(bào)分部的資源,接收總部的命令,協(xié)調(diào)員工執(zhí)行任務(wù)),把Driver和Executor看成是項(xiàng)目經(jīng)理(負(fù)責(zé)分配任務(wù)和管理任務(wù)進(jìn)度)和普通員工(負(fù)責(zé)執(zhí)行任務(wù)、向項(xiàng)目經(jīng)理匯報(bào)任務(wù)執(zhí)行進(jìn)度)。

      項(xiàng)目經(jīng)理D to 總部老大M:Hi,老大,我剛接了一個(gè)大項(xiàng)目,需要你通知下面的分部部長(zhǎng)W安排一些員工組成聯(lián)合工作小組。

      總部老大M to 分部部長(zhǎng)W:最近項(xiàng)目經(jīng)理D接了一個(gè)大項(xiàng)目,你們幾個(gè)部長(zhǎng)都安排幾個(gè)員工,跟項(xiàng)目經(jīng)理D一起組成一個(gè)聯(lián)合工作小組。

      分部部長(zhǎng)W to 員工E:今天把大家叫到一起,是有個(gè)大項(xiàng)目需要各位配合項(xiàng)目經(jīng)理D去一起完成,稍后會(huì)成立聯(lián)合工作小組,任務(wù)的分配和進(jìn)度都直接匯報(bào)給項(xiàng)目經(jīng)理D。

      項(xiàng)目經(jīng)理D to 員工E:從今天開(kāi)始,我們會(huì)一起在這個(gè)聯(lián)合工作小組工作一段時(shí)間,希望我們好好配合,把項(xiàng)目做好。好,現(xiàn)在開(kāi)始分配任務(wù)…

      員工E to 項(xiàng)目經(jīng)理D:你分配的xxx任務(wù)已完成,請(qǐng)分配其它任務(wù)。

      項(xiàng)目所有任務(wù)都完成后,項(xiàng)目經(jīng)理D to 總部老大M:Hi,老大,項(xiàng)目所有的任務(wù)都已經(jīng)完成了,聯(lián)合工作小組可以解散了,感謝老大的支持。

      以上就是Spark的基本框架,基于Apache Spark/Flink生態(tài),DLI提供了完全托管的大數(shù)據(jù)處理分析服務(wù)。借助DLI服務(wù),你只需要關(guān)注應(yīng)用的處理邏輯,提供構(gòu)建好的應(yīng)用程序包,就可以輕松完成你的大規(guī)模數(shù)據(jù)處理分析任務(wù),即開(kāi)即用,按需計(jì)費(fèi)。

      華為云828企業(yè)上云節(jié)期間,購(gòu)買(mǎi)數(shù)據(jù)湖探索DLI優(yōu)惠更多。

      企業(yè)上云節(jié) 華為云828

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:關(guān)于Linux運(yùn)維中監(jiān)控方面的一些基礎(chǔ)筆記
      下一篇:用Python繪制專(zhuān)業(yè)的K線圖【含源代碼】
      相關(guān)文章
      亚洲中文字幕无码一区| 亚洲美日韩Av中文字幕无码久久久妻妇 | 亚洲人成图片网站| 亚洲精品无码久久久影院相关影片| 亚洲成AⅤ人影院在线观看| 国产亚洲精品免费| 亚洲精品成人在线| 亚洲欧美日韩中文无线码 | 亚洲色欲久久久综合网| 亚洲色偷偷偷鲁综合| 亚洲精品无码不卡在线播放HE| 亚洲色偷偷综合亚洲AVYP| 亚洲日韩精品射精日| 国产亚洲精品va在线| 亚洲AV人无码激艳猛片| 亚洲人成在线影院| 亚洲精品资源在线| 亚洲资源最新版在线观看| 亚洲日韩精品无码专区| 色偷偷亚洲第一综合网| 香蕉视频亚洲一级| 亚洲乱码日产精品a级毛片久久| 国产亚洲精品高清在线| 久久亚洲精品视频| 国产亚洲精品a在线观看app | 亚洲国产成人久久精品软件 | 亚洲AV无码乱码在线观看性色扶| 亚洲国产精品毛片av不卡在线| 国产成人精品亚洲精品| 亚洲成色WWW久久网站| 亚洲一二成人精品区| 亚洲毛片免费观看| 亚洲日韩精品无码专区| 亚洲AV日韩AV永久无码色欲| 欧洲亚洲综合一区二区三区| 精品国产亚洲AV麻豆 | 亚洲综合色成在线播放| 亚洲国产精品无码久久久不卡 | 人人狠狠综合久久亚洲高清| 中文字幕亚洲激情| 亚洲精品私拍国产福利在线|