數(shù)據(jù)業(yè)務(wù)現(xiàn)狀
隨著業(yè)務(wù)數(shù)據(jù)量越來越大、數(shù)據(jù)任務(wù)越來越多以及數(shù)據(jù)計算類型越來越豐富,G行的原有以Hadoop、MPP為核心的數(shù)據(jù)平臺現(xiàn)有組件表現(xiàn)出了一定的局限性。例如:大數(shù)據(jù)平臺和數(shù)據(jù)倉庫上任務(wù)總量已經(jīng)達(dá)到了3萬以上,而且還在急劇增長。由于數(shù)據(jù)存放在了不同數(shù)據(jù)源中,對于需要對多種數(shù)據(jù)源的查詢?nèi)蝿?wù),首先要進行數(shù)據(jù)遷移操作,匯總到MPP或Hadoop后進行查詢操作,這一過程耗時費力,已經(jīng)很難滿足用戶快捷數(shù)據(jù)查詢的需求。
而數(shù)據(jù)平臺建設(shè)的一個重要目標(biāo)就是滿足用戶方便快捷的使用數(shù)據(jù),用戶不需要關(guān)心數(shù)據(jù)的存放方式,能夠使用標(biāo)準(zhǔn)的數(shù)據(jù)調(diào)用接口,隨時使用自己關(guān)心的數(shù)據(jù)。為滿足對上述的多數(shù)據(jù)源無差別的查詢,使用遠(yuǎn)端數(shù)據(jù)完成交互式查詢,G行選擇的方式是Presto。
Presto提供豐富的Connector,通過Connector機制可以將所連接的數(shù)據(jù)SQL化。Presto的Connector可以連接傳統(tǒng)的RDBMS數(shù)據(jù)庫,也可以連接HBase、Hive等大數(shù)據(jù)的開源軟件,還可以使用FileConnector連接本地文件。有了Connector,可以直接在Presto的客戶端發(fā)起查詢請求,通過Presto解析查詢語句對不同的數(shù)據(jù)源發(fā)起數(shù)據(jù)查詢。通過Connector的方式,避免了數(shù)據(jù)搬移,節(jié)省了大量的數(shù)據(jù)存儲空間,也避免了時間消耗。這個場景非常適合數(shù)據(jù)科學(xué)家對多種數(shù)據(jù)分析的需求。
Presto架構(gòu)特點
執(zhí)行效率方面,Presto是一個開源的基于內(nèi)存的分布式SQL查詢的執(zhí)行引擎,可以支持TB到PB級數(shù)據(jù)量的秒級到分鐘級的快速響應(yīng)。在查詢效率方面,比MapReduce的查詢引擎有很大的提升。
Presto查詢引擎是一個Master-Slave的架構(gòu),由一個Coordinator節(jié)點,多個Worker節(jié)點組成。Coordinator負(fù)責(zé)解析SQL語句,生成執(zhí)行計劃,Coordinator將一個完整的Query,拆分成了多個Stage,每個Stage拆分出多個可以并行的Task,分發(fā)執(zhí)行任務(wù)給Worker節(jié)點執(zhí)行。
Worker節(jié)點負(fù)責(zé)實際執(zhí)行查詢Task。通過配置外部數(shù)據(jù)源的Connector,部分Task負(fù)責(zé)到外部存儲系統(tǒng)拉取數(shù)據(jù),這部分Task會先執(zhí)行,之后再執(zhí)行那些負(fù)責(zé)計算的Task。Worker節(jié)點的數(shù)量影響到Presto執(zhí)行效率,可以通過增加worker節(jié)點的數(shù)量,提升數(shù)據(jù)查詢的的效率。而Coordinator在Presto只有一個,需要使用高可用的部署方法,進行災(zāi)備保護。
Presto是一個原生的計算和存儲分離的分布式的SQL框架。Presto負(fù)責(zé)SQL的解析和執(zhí)行,數(shù)據(jù)本身都由外部數(shù)據(jù)源進行存儲和維護。這種存儲和計算分離的架構(gòu),在進行資源擴容時可以分別對存儲資源和計算資源進行單獨擴容,非常符合當(dāng)今云計算的架構(gòu)和發(fā)展方向。在設(shè)備選型時,可以針對IO密集型和CPU密集型采購不同的設(shè)備來滿足需求。
Presto提供了豐富的Connector,可以連接多種流行的數(shù)據(jù)源,比如MySql、Hive、Elasticsearch等。同時Presto還提供了API接口,開發(fā)人員可以根據(jù)自己的實際情況開發(fā)自己的應(yīng)用接口。例如openlookeng,這個軟件提供了高斯數(shù)據(jù)庫的訪問接口,可以完成Hive和高斯數(shù)據(jù)庫之間的跨數(shù)據(jù)源的聯(lián)合查詢。
Presto存在的問題
Presto是一個完全基于內(nèi)存的SQL計算框架,在運行過程中采用高并發(fā)的查詢方式。當(dāng)處理數(shù)據(jù)過于龐大、SQL需要的內(nèi)存超出了物理服務(wù)器承受能力時,會出現(xiàn)內(nèi)存溢出。如果需要穩(wěn)定運行長時間的任務(wù),可以使用Hive的SQL引擎。此外,由于Presto在設(shè)計初始,就是為了OLAP業(yè)務(wù)而進行開發(fā),Presto雖然支持delete和insert,但內(nèi)部結(jié)構(gòu)不適合頻繁的數(shù)據(jù)修改操作。
Presto未來發(fā)展
許多企業(yè)在大數(shù)據(jù)建設(shè)道路上都產(chǎn)生了相類似的多數(shù)據(jù)源匯總查詢的問題,數(shù)據(jù)分布在多種數(shù)據(jù)產(chǎn)品中,各種數(shù)據(jù)產(chǎn)品之間沒有直接交互的方法,需要通過數(shù)據(jù)遷移完成數(shù)據(jù)分析工作。而Presto的出現(xiàn),解決了多數(shù)企業(yè)面臨的問題。G行的即席查詢系統(tǒng)正是以Presto技術(shù)為核心構(gòu)建的。隨著Presto應(yīng)用范圍的擴大,穩(wěn)定性將隨之不斷的改善,相信會給各個企業(yè)在數(shù)據(jù)業(yè)務(wù)方面帶來更多的便利性。
原文鏈接:https://mp.weixin.qq.com/s/5az4p66v1UE8eAGu5Bj9dQ