基于SparkSQL與Tachyon的PINGO架構(gòu)
大?。?/span>0.5 MB 人氣: 2017-10-11 需要積分:1
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
標(biāo)簽:
PINGO是一個(gè)由百度大數(shù)據(jù)部與百度美國(guó)研發(fā)中心合作而成的分布式交換查詢平臺(tái)。在PINGO之前,百度的大數(shù)據(jù)查詢作業(yè)主要由基于Hive的百度QueryEngine去完成。QueryEngine很好的支持著百度的離線計(jì)算任務(wù),可是它對(duì)交互式的在線計(jì)算任務(wù)支持并不好。為了更好的支持交互式任務(wù),我們?cè)诖蠹s一年前設(shè)計(jì)了基于SparkSQL與Tachyon的PINGO的雛形。在過(guò)去一年中, 通過(guò)跟不同業(yè)務(wù)的結(jié)合,PINGO逐漸的演變成一套成熟高效的交互式查詢系統(tǒng)。本文將詳細(xì)介紹PINGO的架構(gòu)迭代過(guò)程以及性能評(píng)估。PINGO設(shè)計(jì)目標(biāo)
QueryEngine是基于Hive的百度內(nèi)部的大數(shù)據(jù)查詢平臺(tái),這套系統(tǒng)在過(guò)去幾年中較好的支撐了百度的相關(guān)業(yè)務(wù)。 圖1展示了QueryEngine的架構(gòu)圖,其服務(wù)入口叫做Magi。用戶向Magi提交查詢請(qǐng)求, Magi為這次請(qǐng)求分配一個(gè)執(zhí)行機(jī), 執(zhí)行機(jī)會(huì)調(diào)用Hive讀取Meta信息并向Hadoop隊(duì)列提交任務(wù)。 在這一過(guò)程中, 用戶需要自行提供計(jì)算需要的隊(duì)列資源。隨著近幾年對(duì)大數(shù)據(jù)平臺(tái)的要求越來(lái)越高, 我們?cè)谑褂肣ueryEngine過(guò)程中也發(fā)現(xiàn)了一些問(wèn)題:首先QueryEngine需要由用戶提供計(jì)算資源, 這使得數(shù)據(jù)倉(cāng)庫(kù)的用戶需要去了解Hadoop以及相關(guān)的管理流程, 這增加了用戶使用數(shù)據(jù)的門(mén)檻。 第二, 對(duì)于很多小型計(jì)算任務(wù)而言, MR的任務(wù)的起動(dòng)時(shí)間也較長(zhǎng), 往往用戶的計(jì)算任務(wù)只需要1分鐘, 但是排隊(duì)/提交任務(wù)就需要超過(guò)一分鐘甚至更長(zhǎng)的時(shí)間。這樣的結(jié)果是,QueryEngine雖然很好的支持線下執(zhí)行時(shí)間長(zhǎng)的任務(wù),但是對(duì)線上的一些交換式查詢?nèi)蝿?wù)(要求延時(shí)在一到兩分鐘內(nèi))確是無(wú)能為力。

圖1: Query Engine 的執(zhí)行流程
為了解決這些問(wèn)題, 在大約一年前,我們嘗試在離線計(jì)算的技術(shù)棧上搭建起一套具有在線服務(wù)屬性的SQL計(jì)算服務(wù) PINGO。如圖2所示: PINGO使用了SparkSQL為主要的執(zhí)行引擎, 主要是因?yàn)镾park具有下面的特點(diǎn):
內(nèi)存計(jì)算:Spark以RDD形式把許多數(shù)據(jù)存放在內(nèi)存中,盡量減少落盤(pán),從而提升了計(jì)算性能??沙qv服務(wù):Spark可以幫助實(shí)現(xiàn)常駐式的計(jì)算服務(wù), 而傳統(tǒng)的Hadoop做不到這一點(diǎn)。常駐式的計(jì)算服務(wù)有助于降低數(shù)據(jù)查詢服務(wù)的響應(yīng)延遲。機(jī)器學(xué)習(xí)支持:對(duì)于數(shù)據(jù)倉(cāng)庫(kù)的使用, 不應(yīng)僅僅局限于SQL類(lèi)的統(tǒng)計(jì)任務(wù)。 Spark的機(jī)器學(xué)習(xí)庫(kù)可以幫助我們將來(lái)擴(kuò)展數(shù)據(jù)倉(cāng)庫(kù), 提供的交互式的數(shù)據(jù)挖掘功能。計(jì)算功能多元:雖然PINGO是一個(gè)查詢服務(wù), 不過(guò)仍然有其他類(lèi)型的計(jì)算需求, 如數(shù)據(jù)預(yù)處理等。 使用Spark可以使我們用一個(gè)計(jì)算引擎完成所有的任務(wù), 簡(jiǎn)化系統(tǒng)的設(shè)計(jì)。

圖2: PINGO初版系統(tǒng)架構(gòu)設(shè)計(jì)
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
