本發(fā)明涉及一種基于mpp(massivelyparallelprocessor,大規(guī)模并行處理)引擎的跨數(shù)據(jù)中心快速查詢技術(shù),特別是涉及元數(shù)據(jù)統(tǒng)一標(biāo)識,實現(xiàn)數(shù)據(jù)可靠快速傳輸,優(yōu)化查詢分析引擎和支持多種結(jié)果導(dǎo)出方式的關(guān)鍵技術(shù),屬于大數(shù)據(jù)檢索領(lǐng)域。
背景技術(shù):
::隨著網(wǎng)絡(luò)和信息技術(shù)的不斷普及,人類產(chǎn)生的數(shù)據(jù)量正在呈指數(shù)級增長。大約每兩年翻一番,根據(jù)監(jiān)測,這個速度在2020年之前會繼續(xù)保持下去。這意味著人類在最近兩年產(chǎn)生的數(shù)據(jù)量相當(dāng)于之前產(chǎn)生的全部數(shù)據(jù)量??深A(yù)計,到2020年全球數(shù)據(jù)將達(dá)到40zb。大量新數(shù)據(jù)源的出現(xiàn)則導(dǎo)致了非結(jié)構(gòu)化、半結(jié)構(gòu)化數(shù)據(jù)爆發(fā)式的增長。信息數(shù)據(jù)的單位已達(dá)到tb-pb-eb-zb的級別。這些由我們創(chuàng)造的信息背后產(chǎn)生的這些數(shù)據(jù)早已經(jīng)遠(yuǎn)遠(yuǎn)超越了目前人力所能處理的范疇。如何管理和使用這些數(shù)據(jù),逐漸成為一個新的挑戰(zhàn)。在數(shù)據(jù)增長的同時,越來越多的企業(yè)依賴于海量數(shù)據(jù)分析結(jié)果來進(jìn)行關(guān)鍵業(yè)務(wù)決策。大規(guī)模數(shù)據(jù)下的交互式/離線數(shù)據(jù)分析,是實施數(shù)據(jù)分析和數(shù)據(jù)探索的主要途徑,具有廣泛的商業(yè)前景。在大數(shù)據(jù)存儲方面,出現(xiàn)了多種以分布式存儲系統(tǒng)和nosql數(shù)據(jù)庫為基礎(chǔ)的解決方案;分布式存儲系統(tǒng),支持在多臺存儲服務(wù)器上分擔(dān)存儲負(fù)荷和數(shù)據(jù)保存多副本,利用高性能的計算網(wǎng)絡(luò)提高傳輸速度和可靠性,利用位置服務(wù)器定位存儲信息,它不但提高了系統(tǒng)的可靠性、可用性和存取效率,還易于擴(kuò)展。nosql數(shù)據(jù)庫,即非關(guān)系型數(shù)據(jù)庫,包括key-value型(hbase)數(shù)據(jù)庫、文檔型(monogodb)數(shù)據(jù)庫、圖型(neo4j)數(shù)據(jù)庫。在數(shù)據(jù)檢索分析方面出現(xiàn)了側(cè)重不同應(yīng)用場景的檢索引擎,主要包括:1)hive?;趆adoop的一個數(shù)據(jù)倉庫工具,它提供了一些列工具,可以用來進(jìn)行數(shù)據(jù)提取轉(zhuǎn)換加載(etl),可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供完整的sql(structuredquerylanguage,結(jié)構(gòu)化查詢語言)查詢功能,為方便用戶使用map-reduce而封裝了一層sql。hive架構(gòu)主要包括如下組件:cli(commandlineinterface)、jdbc/odbc、thriftserver、webgui、metastore和driver(complier、optimizer和executor),這些組件可以分為兩大類:服務(wù)端組件和客戶端組件。服務(wù)端組件:driver組件,該組件包括complier、optimizer和executor,它的作用是將hiveql(類sql)語句進(jìn)行解析、編譯優(yōu)化,生成執(zhí)行計劃,然后調(diào)用底層mapreduce計算框架;metastore組件,元數(shù)據(jù)服務(wù)組件,該組件存儲hive元數(shù)據(jù),存儲在關(guān)系數(shù)據(jù)庫里,支持的關(guān)系數(shù)據(jù)庫包括derby、mysql,元數(shù)據(jù)對于hive十分重要,因此支持把metastore服務(wù)獨立安裝到遠(yuǎn)程的服務(wù)器集群中,從而解耦hive服務(wù)和metastore服務(wù),保證系統(tǒng)的健壯性;thrift服務(wù),thrift是facebook開發(fā)的一個軟件框架,hive集成了該服務(wù),因此支持多種的編程語言調(diào)用hive接口。客戶端組件:cli(commandlineinterface),即命令行接口;thrift客戶端,用于支持多種hive架構(gòu)的客戶端接口,包括jdbc和odbc接口;webgui,支持通過網(wǎng)頁的方式訪問hive所提供的服務(wù)。hive和關(guān)系數(shù)據(jù)庫存儲文件的系統(tǒng)不同,hive使用的是hadoop的hdfs(hadoop的分布式文件系統(tǒng)),關(guān)系數(shù)據(jù)庫則是服務(wù)器本地的文件系統(tǒng);hive使用的計算模型是mapreduce,而關(guān)系數(shù)據(jù)庫則是自己設(shè)計的計算模型;關(guān)系數(shù)據(jù)庫適用于實時查詢的業(yè)務(wù),hive則適用于海量數(shù)據(jù)數(shù)據(jù)挖掘;由于繼承自hadoop,hive易于擴(kuò)展存儲規(guī)模和計算能力,而關(guān)系數(shù)據(jù)庫不易擴(kuò)展。由于hive采用了sql,它的問題域比map-reduce更窄,因為很多問題,無法通過sql表達(dá),比如一些數(shù)據(jù)挖掘算法,推薦算法、圖像識別算法等,這些仍只能通過編寫map-reduce完成。2)impala。impala是架構(gòu)于hadoop之上的開源、高并發(fā)的mpp查詢引擎,被廣泛應(yīng)用于各種行業(yè)。impala是完全集成的,用以平衡hadoop的靈活性和可擴(kuò)展性,為bi/數(shù)據(jù)分析師提供低延遲、高并發(fā)的以讀為主的查詢。它將傳統(tǒng)分析數(shù)據(jù)庫的sql支持和多用戶性能與hadoop的靈活性和可擴(kuò)展性結(jié)合起來,它通過利用hdfs、hbase、metastore、yarn、sentry等標(biāo)準(zhǔn)組件能夠讀取大多數(shù)廣泛使用的文件格式比如parquet、avro、rcfile來維護(hù)hadoop的靈活性;為了降低延遲,避免利用mr或者讀遠(yuǎn)程數(shù)據(jù),基于負(fù)責(zé)查詢執(zhí)行所有方面、作為hadoop基礎(chǔ)設(shè)施一部分運行于各臺服務(wù)器上的deamon進(jìn)程實現(xiàn)了一個分布式架構(gòu)。impala是海量并發(fā)的查詢執(zhí)行引擎,運行在現(xiàn)存hadoop集群的上百臺機(jī)器上。與傳統(tǒng)數(shù)據(jù)庫不同,與底層存儲引擎解耦。impala由三種服務(wù)構(gòu)成:impalad、statestored和catalogd。impalad(impaladaemonservice),接收客戶端查詢請求并生成查詢計劃,同時執(zhí)行從其他daemon發(fā)來的單個執(zhí)行片段。對于某一查詢,作為第一角色管理的daemon稱為協(xié)調(diào)者,impalad角色功能等同,有助于容錯和負(fù)載均衡,可部署在集群中運行datanode進(jìn)程的所有機(jī)器上,可允許impala利用數(shù)據(jù)本地化而不必通過網(wǎng)絡(luò)傳輸即可在文件系統(tǒng)中讀取數(shù)據(jù)塊。statestored是impala的元數(shù)據(jù)訂閱-發(fā)布服務(wù),它是單一實例,將集群元數(shù)據(jù)傳播到所有的impalad進(jìn)程。catalogd,impala的目錄資源庫和元數(shù)據(jù)訪問網(wǎng)關(guān),通過catalogd,impalad可執(zhí)行ddl命令且與外部元數(shù)據(jù)存儲如hivemetastore同步,系統(tǒng)目錄的改變將由statestored廣播。技術(shù)實現(xiàn)要素:本發(fā)明的主要目的是在基于mpp引擎之上,實現(xiàn)跨數(shù)據(jù)中心的快速查詢,采用統(tǒng)一的元數(shù)據(jù)標(biāo)識,依靠數(shù)據(jù)可靠快速傳輸實現(xiàn)跨數(shù)據(jù)中心快速查詢,同時優(yōu)化查詢分析引擎和支持多種結(jié)果導(dǎo)出方式,提升查詢效率,有效解決跨數(shù)據(jù)中心的查詢問題。本發(fā)明采用的技術(shù)方案如下:一種基于mpp引擎的跨數(shù)據(jù)中心快速查詢方法,其步驟包括:1)將不同mpp引擎中的數(shù)據(jù)進(jìn)行統(tǒng)一標(biāo)記并存儲到元數(shù)據(jù)中,保證元數(shù)據(jù)在全局中心節(jié)點和各數(shù)據(jù)分中心節(jié)點的一致性;2)全局中心節(jié)點接收查詢請求并對其進(jìn)行語法解析,解析成功后生成每個數(shù)據(jù)分中心節(jié)點的查詢請求并將其發(fā)送到對應(yīng)的數(shù)據(jù)分中心節(jié)點;3)各數(shù)據(jù)分中心節(jié)點接收查詢請求并對其進(jìn)行語法解析,通過元數(shù)據(jù)的相應(yīng)mpp引擎進(jìn)行查詢,查詢成功后將數(shù)據(jù)傳輸給全局中心節(jié)點;4)全局中心節(jié)點接收到所有數(shù)據(jù)分中心節(jié)點回傳的數(shù)據(jù)后,將數(shù)據(jù)存儲到底層存儲引擎;5)全局中心節(jié)點利用mpp引擎對數(shù)據(jù)分中心節(jié)點返回的數(shù)據(jù)進(jìn)行快速查詢,并輸出查詢結(jié)果。進(jìn)一步地,步驟1)利用hive元數(shù)據(jù)組件將不同mpp引擎中的數(shù)據(jù)以數(shù)據(jù)表屬性的方式統(tǒng)一存儲到元數(shù)據(jù)中。進(jìn)一步地,步驟2)中若解析失敗,則返回語法錯誤。進(jìn)一步地,步驟3)中若查詢失敗且沒有超過重查次數(shù),則進(jìn)行重查,若超過重查次數(shù),則返回查詢錯誤。進(jìn)一步地,步驟3)中若數(shù)據(jù)傳輸成功,則數(shù)據(jù)分中心節(jié)點結(jié)束本次查詢,若傳輸失敗且沒有超過重傳次數(shù),則進(jìn)行重傳,否則返回傳輸錯誤。進(jìn)一步地,步驟3)中各數(shù)據(jù)分中心節(jié)點在接受查詢請求后,通過jdbc/odbc在內(nèi)部執(zhí)行查詢,將查詢結(jié)果經(jīng)過http批量返回到全局中心節(jié)點。進(jìn)一步地,步驟5)中若全局中心節(jié)點查詢失敗且沒有超過重查次數(shù),則進(jìn)行重查,若超過重查次數(shù),則返回查詢錯誤。進(jìn)一步地,步驟5)支持將查詢結(jié)果以多種方式導(dǎo)出保存,包括:以csv文件格式導(dǎo)出到本地磁盤中,并支持指定分隔符;導(dǎo)出到分布式文件系統(tǒng)中,并支持指定分隔符;支持導(dǎo)入到多種存儲引擎和nosql數(shù)據(jù)庫中。一種采用上述方法的基于mpp引擎的跨數(shù)據(jù)中心快速查詢系統(tǒng),其包括:元數(shù)據(jù)模塊,用于將不同mpp引擎中的數(shù)據(jù)進(jìn)行統(tǒng)一標(biāo)記并存儲到元數(shù)據(jù)中,保證元數(shù)據(jù)在全局中心節(jié)點和各數(shù)據(jù)分中心節(jié)點的一致性;數(shù)據(jù)傳輸模塊,負(fù)責(zé)跨數(shù)據(jù)中心的數(shù)據(jù)傳輸,其中包括全局中心節(jié)點下發(fā)查詢請求和數(shù)據(jù)分中心節(jié)點節(jié)點返回查詢數(shù)據(jù);查詢引擎模塊,負(fù)責(zé)各數(shù)據(jù)中心的具體查詢?nèi)蝿?wù),通過兼容多種mpp引擎實現(xiàn)透明查詢,通過重查機(jī)制屏蔽網(wǎng)絡(luò)和硬件問題;結(jié)果導(dǎo)出模塊,負(fù)責(zé)將查詢結(jié)果導(dǎo)出并保存。進(jìn)一步地,所述結(jié)果導(dǎo)出模塊支持將查詢結(jié)果以多種方式導(dǎo)出并保存,包括:以csv文件格式導(dǎo)出到本地磁盤中,并支持指定分隔符;導(dǎo)出到分布式文件系統(tǒng)中,并支持指定分隔符;支持導(dǎo)入到多種存儲引擎和nosql數(shù)據(jù)庫中。本發(fā)明的主要創(chuàng)新點及有益效果如下:1)在元數(shù)據(jù)統(tǒng)一標(biāo)識方面,基于hive元數(shù)據(jù)組件,將不同存儲引擎的數(shù)據(jù)以數(shù)據(jù)表屬性的方式統(tǒng)一存儲到元數(shù)據(jù)中,保證元數(shù)據(jù)全局一致性。2)在跨數(shù)據(jù)中心傳輸方面,各數(shù)據(jù)中心獨立存儲、處理本中心內(nèi)數(shù)據(jù),同時實現(xiàn)多數(shù)據(jù)中心關(guān)聯(lián)查詢。利用確認(rèn)重發(fā)機(jī)制保證數(shù)據(jù)可靠高速傳輸,提高查詢效率。3)在查詢引擎方面,本發(fā)明兼容多種mpp引擎,使存儲于不同系統(tǒng)中的數(shù)據(jù)實現(xiàn)聯(lián)合查詢。4)在導(dǎo)出方面,本發(fā)明支持指定查詢結(jié)果導(dǎo)出格式,減少后續(xù)數(shù)據(jù)處理分析時間。結(jié)果由查詢結(jié)束后直接導(dǎo)出,避免大量中間過程的磁盤io操作,提高查詢效率。附圖說明圖1為元數(shù)據(jù)統(tǒng)一標(biāo)識流程圖;圖2為跨數(shù)據(jù)中心傳輸數(shù)據(jù)模型示意圖;圖3為查詢分析流程圖;圖4為結(jié)果模型示意圖。具體實施方式下面通過具體實施例和附圖,對本發(fā)明做進(jìn)一步說明。本發(fā)明的內(nèi)容主要包括以下幾個方面。第一,元數(shù)據(jù)標(biāo)識上,本發(fā)明采用統(tǒng)一的元數(shù)據(jù)標(biāo)識,利用hive元數(shù)據(jù)組件將不同mpp引擎中的數(shù)據(jù)進(jìn)行統(tǒng)一標(biāo)記。包括數(shù)據(jù)表所屬存儲結(jié)構(gòu)、存儲類型等。并利用對應(yīng)mpp引擎進(jìn)行快速查詢。本發(fā)明所述的不同mpp引擎包括hive、spark、hbase等,使用mpp的方式將上述引擎統(tǒng)一整合在了一起,集中調(diào)度,并采用mpp的方式使用。第二,數(shù)據(jù)傳輸上,本發(fā)明通過確認(rèn)、重傳等機(jī)制提供高效可靠的數(shù)據(jù)傳輸。在數(shù)據(jù)中心內(nèi)部,通過jdbc/odbc(jdbc為javadatabaseconnectivity,java數(shù)據(jù)庫連接,odbc為opendatabaseconnectivity,開放數(shù)據(jù)庫連接)等進(jìn)行查詢,實現(xiàn)批量數(shù)據(jù)傳輸;通過連接池實現(xiàn)并行快速查詢。在全局中心和數(shù)據(jù)分中心之間,利用http進(jìn)行快速數(shù)據(jù)傳輸,并通過確認(rèn)和重傳機(jī)制保證數(shù)據(jù)準(zhǔn)確性和可靠性,同時提高物理網(wǎng)絡(luò)容錯性。第三,查詢分析引擎上,本發(fā)明通過優(yōu)化查詢計劃樹等機(jī)制實現(xiàn)高效快速查詢。在全局中心(或稱全局節(jié)點、全局中心節(jié)點),進(jìn)行查詢解析,驗證查詢語法是否正確,盡快發(fā)現(xiàn)無效查詢;并重新生成每個數(shù)據(jù)中心對應(yīng)的查詢語法,并行分發(fā)給相應(yīng)數(shù)據(jù)分中心(或稱數(shù)據(jù)分中心節(jié)點);在數(shù)據(jù)分中心接收查詢請求后,語法解析組件進(jìn)行語法分析,生成相應(yīng)查詢計劃,利用不同mpp引擎進(jìn)行查詢,返回查詢結(jié)果。第四,結(jié)果導(dǎo)出。本發(fā)明支持多種數(shù)據(jù)導(dǎo)出方式,以便于后續(xù)對結(jié)果數(shù)據(jù)的查看分析等。主要包括,支持以csv文件格式導(dǎo)出到本地磁盤中,并支持指定分隔符;支持導(dǎo)出到分布式文件系統(tǒng)(hdfs)中,并支持指定分隔符;支持導(dǎo)入到多種存儲引擎和nosql數(shù)據(jù)庫中。在基于mpp的跨數(shù)據(jù)中心快速查詢技術(shù)的設(shè)計上,本發(fā)明包括元數(shù)據(jù)模塊,數(shù)據(jù)傳輸模塊,查詢引擎模塊和結(jié)果導(dǎo)出模塊。元數(shù)據(jù)模塊,在hive元數(shù)據(jù)基礎(chǔ)上,增加統(tǒng)一標(biāo)識,并實現(xiàn)持久化存儲,同時保證元數(shù)據(jù)在全局節(jié)點和各數(shù)據(jù)中心的一致性。數(shù)據(jù)傳輸模塊,負(fù)責(zé)跨數(shù)據(jù)中心的數(shù)據(jù)傳輸,其中包括全局中心下發(fā)查詢請求和數(shù)據(jù)分中心節(jié)點返回查詢數(shù)據(jù)。查詢引擎模塊,負(fù)責(zé)各數(shù)據(jù)中心的具體查詢?nèi)蝿?wù),通過兼容多種mpp引擎實現(xiàn)透明查詢;通過重查機(jī)制屏蔽網(wǎng)絡(luò)和硬件問題。結(jié)果導(dǎo)出模塊,負(fù)責(zé)結(jié)果數(shù)據(jù)重定向,通過指定重定向方式,將查詢結(jié)果保存至存儲系統(tǒng)中,便于后續(xù)數(shù)據(jù)再處理。其中重定向是指將結(jié)果的數(shù)據(jù)流按照要求導(dǎo)入到新的存儲的位置。其實現(xiàn)方式取決于程序?qū)崿F(xiàn),可以是文件的形式,也可以是一個數(shù)據(jù)流。圖1給出了元數(shù)據(jù)統(tǒng)一標(biāo)識流程圖,如圖所示,主要包括以下核心步驟。其中庫是對數(shù)據(jù)的邏輯抽象,與傳統(tǒng)關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)庫(database)是相同、等價的;表是指傳統(tǒng)意義上的關(guān)系型二維表,即關(guān)系型數(shù)據(jù)中的table。(1)根據(jù)數(shù)據(jù)庫名稱獲取系統(tǒng)內(nèi)唯一庫標(biāo)識,即db_id。(2)若庫存在則繼續(xù)獲取表標(biāo)識,如果庫不存在,返回語法錯誤。(3)根據(jù)db_id和表名獲取系統(tǒng)內(nèi)唯一表標(biāo)識,即tbl_id,若表不存在返回語法錯誤。(4)根據(jù)tbl_id獲取表屬性,根據(jù)store屬性字段的屬性值選擇不同mpp查詢引擎。其中store是內(nèi)部的一個標(biāo)識,用于識別存儲的類型,store可以譯為存儲類型。圖2給出了跨數(shù)據(jù)中心傳輸數(shù)據(jù)模型示意圖。通過全局中心下發(fā)查詢請求,各數(shù)據(jù)中心在接受查詢請求后,通過jdbc/odbc在本中心內(nèi)部執(zhí)行查詢,將查詢結(jié)果經(jīng)過http批量返回到全局中心節(jié)點。圖3給出了查詢分析流程圖,如圖所示,主要包括以下核心步驟:(1)全局中心節(jié)點在接收查詢請求后,進(jìn)行語法解析。(2)若解析成功,則重新生成每個數(shù)據(jù)分中心的查詢請求并將該請求發(fā)送到對應(yīng)數(shù)據(jù)分中心,并等待回傳數(shù)據(jù)。若解析失敗,則返回語法錯誤。(3)數(shù)據(jù)分中心節(jié)點接收查詢請求后,進(jìn)行語法解析,通過元數(shù)據(jù)信息的相應(yīng)mpp引擎進(jìn)行查詢,若查詢成功則將數(shù)據(jù)返回給全局節(jié)點,若查詢失敗且沒有超過重查次數(shù),則進(jìn)行重查,若超過重查次數(shù),則返回查詢失敗(返回查詢錯誤)。(4)若數(shù)據(jù)傳輸成功,則數(shù)據(jù)分中心節(jié)點結(jié)束本次查詢,若傳輸失敗且沒有超過重傳次數(shù),則進(jìn)行重傳,否則返回傳輸失敗(返回傳輸錯誤)。(5)若全局節(jié)點在規(guī)定時間內(nèi)接收到所有分中心回傳數(shù)據(jù),則將數(shù)據(jù)存儲到底層存儲引擎,否則返回查詢錯誤。其中底層存儲引擎是指本地的存儲組件(服務(wù)),即部署在本地的hdfs組件。(6)全局節(jié)點利用mpp引擎對返回數(shù)據(jù)進(jìn)行快速查詢,若查詢成功則將結(jié)果返回,若查詢失敗且沒有超過重查次數(shù),則進(jìn)行重查,若超過重查次數(shù),則返回查詢失敗(返回查詢錯誤)。上述步驟(3)中的查詢是在分中心,涉及到的數(shù)據(jù)是該分中心的數(shù)據(jù);步驟(6)是將各個分中心的數(shù)據(jù)匯總后的再次處理,涉及到的數(shù)據(jù)來自各個分中心,是一個匯總的操作。這兩者執(zhí)行的層次不同,一個范圍較小,一個范圍較大。另外,兩者執(zhí)行的內(nèi)容也不同,比如一個統(tǒng)計結(jié)果,每個分中心返回分中心的統(tǒng)計結(jié)果,即步驟(3);但是需要在匯總點再累加一次才能返回最終的結(jié)果,即步驟(6)。上述重查次數(shù)、重傳次數(shù)可使用配置文件設(shè)定,即在配置文件中預(yù)先設(shè)定合適的值。圖4給出了導(dǎo)出模型示意圖。在查詢結(jié)束后,本發(fā)明支持將查詢結(jié)果以多種方式導(dǎo)出保存,包括以csv文件格式導(dǎo)出到本地磁盤中,并支持指定分隔符;支持導(dǎo)出到分布式文件系統(tǒng)(hdfs)中,并支持指定分隔符;支持導(dǎo)入到多種存儲引擎和nosql數(shù)據(jù)庫中。以上實施例僅用以說明本發(fā)明的技術(shù)方案而非對其進(jìn)行限制,本領(lǐng)域的普通技術(shù)人員可以對本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明的精神和范圍,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求書所述為準(zhǔn)。當(dāng)前第1頁12當(dāng)前第1頁12