常雷
偶數(shù)科技在2016年底成立,主要是由EMC/Pivotal核心團(tuán)隊(duì)成員組成,現(xiàn)在做兩個(gè)事情,偶數(shù)兩大產(chǎn)品:Apache HAWQ和Oushu HAWQ++。今天我主要介紹大數(shù)據(jù)領(lǐng)域的發(fā)展趨勢(shì)中關(guān)于計(jì)算引擎的部分。
在數(shù)據(jù)平臺(tái)的演進(jìn)路線中,第一代數(shù)據(jù)倉(cāng)庫(kù)相對(duì)傳統(tǒng),以小型機(jī)或一體機(jī)的專有的硬件平臺(tái)為主,面向傳統(tǒng)的BI分析,系統(tǒng)缺乏彈性,資源固定,不易調(diào)整,很難支持突發(fā)的應(yīng)用需求或密集復(fù)雜的計(jì)算需求。第二代數(shù)據(jù)平臺(tái)是大家熟悉的MPP,可以支持密集、復(fù)雜的計(jì)算需求,但需要一定時(shí)間。到了第三代,其實(shí)是最近五六年發(fā)展起來(lái)的新型數(shù)據(jù)倉(cāng)庫(kù),可根據(jù)工作負(fù)載彈性伸縮,靈活配置,按需分配資源,還可以快速支持突發(fā)的應(yīng)用計(jì)算需求,如:沙盤演練等。
2004年左右,Hadoop出現(xiàn)之后,有2個(gè)系統(tǒng)十分知名:分布式文件系統(tǒng)HDFS和面向大數(shù)據(jù)并行處理的計(jì)算模型MapReduce。MapReduce由于其自身的復(fù)雜性,現(xiàn)在使用得越來(lái)越少。Hadoop社區(qū)也及時(shí)發(fā)現(xiàn)了這個(gè)問(wèn)題,這種情況促進(jìn)了Hive的出現(xiàn),可將SQL語(yǔ)句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行,Hive定義了簡(jiǎn)單的類SQL查詢語(yǔ)言,稱為HQL。2011年,我任職EMC時(shí)參與了剛剛啟動(dòng)的HAWQ項(xiàng)目。我們看到SQL-on-Hadoop引擎運(yùn)行特別慢,但傳統(tǒng)的MPP卻非常快,因此我們將這兩種技術(shù)結(jié)合起來(lái)形成了HAWQ。在SQL-on-Hadoop引擎的對(duì)比中,我們從兩個(gè)維度比較,第一個(gè)維度是兼容性和性能,第二個(gè)維度是可擴(kuò)展性和開放性。新的SQL-on-Hadoop引擎,以HAWQ為代表優(yōu)勢(shì)明顯。
作為新型的SQL-on-Hadoop引擎,Apache HAWQ滿足了哪些方面的用戶需求?在應(yīng)用層,比如做政務(wù)大數(shù)據(jù)、公安大數(shù)據(jù)、電力大數(shù)據(jù)等都是從應(yīng)用出發(fā),對(duì)底層技術(shù)相對(duì)缺乏了解。在做應(yīng)用的時(shí)候,與數(shù)據(jù)挖掘、報(bào)表處理等相關(guān)的方面都是通過(guò)引擎來(lái)完成的,引擎做了大部分的事情。比如HAWQ可以根據(jù)提供的數(shù)據(jù)告訴你發(fā)生了什么,數(shù)量、頻率、地點(diǎn)信息都可以知道,甚至可以告訴你為什么會(huì)發(fā)生這些事情,都可以在數(shù)據(jù)庫(kù)里實(shí)現(xiàn)。HAWQ的定位就是世界上最快的全球規(guī)模并行SQL引擎。
2011年,HAWQ啟動(dòng);2013年,HAWQ 1.0發(fā)布,性能是Hive的數(shù)百倍;2014年,HAWQ為全球多家大型企業(yè)客戶采用,包括GE;2015年,HAWQ開源成為Apache項(xiàng)目;2016年,致力于HAWQ發(fā)展的偶數(shù)科技宣告成立;2017年,偶數(shù)HAWQ++企業(yè)版本發(fā)布。
在HAWQ架構(gòu)的演進(jìn)過(guò)程中,很多人會(huì)問(wèn),HAWQ和Greenplum database(GPDB)有什么區(qū)別?GPDB其實(shí)一個(gè)擁有廣泛用戶群的MPP database,在中國(guó)的運(yùn)營(yíng)商幾乎全部都在用GPDB。從GPDB(2003)的精簡(jiǎn)架構(gòu)看,在每一個(gè)節(jié)點(diǎn)上有多個(gè)分段(Segment),每一個(gè)原體節(jié)(Primary Segment)上都有一個(gè)Mirror Segment(鏡像),相當(dāng)于數(shù)據(jù)在另外一個(gè)節(jié)點(diǎn)上有一個(gè)備份,這是一個(gè)非常經(jīng)典的MPP架構(gòu),而大部分的MPP也基本都是這種架構(gòu),其并行度也是十分固定的。
在2011年,我們做了HAWQ Alpha版本,其實(shí)就是Greenplum database on HDFS。我們?cè)谄鸩降臅r(shí)候,將Greenplum database的存儲(chǔ)層換成了HDFS。這是第一個(gè)HAWQ Alpha版本。2013年,在HAWQ1.0版本的架構(gòu)上我們做了大量的變動(dòng),去掉了Mirror Segment(鏡像),這是一個(gè)非常大的進(jìn)步,這意味著我們的復(fù)制不再通過(guò)上層的數(shù)據(jù)庫(kù)而是通過(guò)底層的文件系統(tǒng)來(lái)做,這對(duì)于節(jié)點(diǎn)的管理、備份、還原都有很大改進(jìn)。這里邊解決的最大的問(wèn)題是恢復(fù),一個(gè)節(jié)點(diǎn)“死”了以后,可以直接放棄,其他節(jié)點(diǎn)依然在工作。
HAWQ1.0版本出現(xiàn)以后,客戶大量涌現(xiàn),對(duì)底層架構(gòu)提出了非常多的要求。2016年,HAWQ2.0出現(xiàn),我們希望它能夠更多地適應(yīng)云環(huán)境的要求,因此我們對(duì)原來(lái)版本的架構(gòu)做了更多的改動(dòng),即計(jì)算和存儲(chǔ)的完全分離,解決了并行度的問(wèn)題,可以根據(jù)查詢量大小來(lái)動(dòng)態(tài)決定執(zhí)行查詢使用的節(jié)點(diǎn)及并行度,優(yōu)于傳統(tǒng)MPP的固定并行度執(zhí)行。從HAWQ2.0的架構(gòu)來(lái)看,無(wú)論是擴(kuò)容也好,升級(jí)也好,都變得十分簡(jiǎn)單,HAWQ2.0已經(jīng)實(shí)現(xiàn)了秒級(jí)擴(kuò)容,節(jié)點(diǎn)自動(dòng)進(jìn)入集群,使得整個(gè)集群的計(jì)算能力和存儲(chǔ)能力大大提升。2017年,我們做HAWQ++3.0的同時(shí)對(duì)之前的版本做了大量?jī)?yōu)化,性能提升了10到50倍。
我們的研發(fā)部門中一部分團(tuán)隊(duì)正在做HAWQ++4.0的工作,其實(shí)就是全球規(guī)模的引擎,可以解決很多實(shí)在的問(wèn)題,比如在金融、公安行業(yè)經(jīng)常會(huì)有“兩地三中心”的需求,數(shù)據(jù)可以很容易地復(fù)制到多個(gè)中心里去。這樣對(duì)于管理和運(yùn)維,以及混合負(fù)載的支持會(huì)非常高效。
在HAWQ的全球用戶體系里,有很多大企業(yè),比如GE、海爾、京東、中國(guó)移動(dòng)等。以某大型制造企業(yè)為例,他們將戰(zhàn)斗機(jī)引擎中的很多數(shù)據(jù)收集起來(lái)放在HAWQ里邊,搭建大數(shù)據(jù)平臺(tái),提高處理能力,大概有200多個(gè)節(jié)點(diǎn)的平臺(tái)集群以及PB級(jí)的數(shù)據(jù)存儲(chǔ),實(shí)現(xiàn)實(shí)時(shí)故障預(yù)測(cè)等應(yīng)用。某大型證券交易所,把所有交易數(shù)據(jù)放入Hadoop和HAWQ,把12億條記錄放到HAWQ里面進(jìn)行查詢分析,獲得更好的性能。(根據(jù)演講內(nèi)容整理,未經(jīng)本人審核)endprint