用于分布式數據庫查詢引擎的系統和方法
【專利說明】用于分布式數據庫查詢弓I擎的系統和方法
[0001]交叉引用相關申請
[0002]本申請要求于2013年I月7日提交的美國專利申請號13/735,820的優先權,該申請之全文并入本文中,以作參考。
[0003]本申請要求于2013年12月19日提交的歐洲專利申請號13198563.2的優先權,該申請之全文并入本文中,以作參考。
技術領域
[0004]本發明總體上涉及數據庫,并且尤其涉及用于低查詢延遲數據庫分析的分布式數據庫查詢引擎。
【背景技術】
[0005]計算機和網絡計算的發展引起了需要大量數據存儲的應用程序。例如,數千萬用戶可以創建網頁并且將圖像和文本上傳到社會媒體網站中。因此,社會媒體網站每天可以累積大量數據,因此,需要一種用于存儲和處理數據的高度可擴展的系統(scalablesystem)。存在促進這樣的大量數據存儲的多種工具。
[0006]存在框架,通過使得應用程序能夠與成千臺計算機的簇(也稱為節點)以及千兆字節的數據交互,這些框架支持大規模數據密集型分布式應用程序。例如,稱為Hadoop的框架使用分布式、可擴展的、便攜式文件系統,稱為Hadoop分布式文件系統(HDFS),用于在Hadoop簇中在數據節點(也稱為子節點)之中分布大量數據。為了減少數據節點電力故障或網絡故障(包括開關故障)的不利影響,通常在不同的數據節點上復制HDFS內的數據。
[0007]開發了 Hive ( 一種開放源數據倉庫系統),用于在Hadoop簇的頂部上運行。Hive支持以腳本查詢語言(SQL)(像稱為HiveQL的聲明式語言)表示的數據查詢。然后,Hive系統將以HiveQL表示的查詢編譯成可以在Hadoop簇上執行的映射_歸約(map-reduce)工作,具有有向非循環圖的數學形式。HiveQL語言包括支持包含原始類型、集合(例如,陣列和映射)以及嵌套布局類型(nested composit1ns of types)的表格的類型系統。此夕卜,Hive系統包括包含方案和統計的稱為Hive-元數據存儲的系統目錄,可用于數據探索(data explorat1n)和查詢優化中。
[0008]與Hadoop簇耦合的Hive系統可以為社會網絡系統存儲和分析大量數據。例如,Hive系統可以分析在用戶之間的連接程度,以對用戶在社會網絡系統上的歷史進行分類。Hive系統可以分析活動日志,以了解社會網絡系統的服務如何被用來幫助應用程序開發員、網頁管理員以及廣告人員做出開發和業務決定。Hive系統可以運行復雜的數據挖掘程序,以優化向社會網絡系統的用戶示出的廣告。Hive系統可以進一步分析使用日志,以識別社會網絡系統的垃圾郵件和濫用。
[0009]Hive系統包括供沒有制作和執行Hive查詢的編程能力的人使用的網絡工具,用于制作、調試以及調度復雜的數據管線(data pipeline),并且用于根據存儲在Hive系統和其他關系數據庫(例如,MySQL和Oracle)內的數據,生成報告。
[0010]然而,Hive系統的查詢延遲通常較高。由于大量數據以及Hadoop簇的map-reduce方案,甚至最簡單的查詢可能需要花費幾秒到幾分鐘來完成。這對于在操作人員需要當前查詢的結果來決定一系列查詢中的下一個查詢時的交互式分析尤其是個問題。由于在等待當前查詢的結果時,分析人員不能確定下一個查詢,所以延遲問題明顯影響分析人員的生產力。
[0011]一種可能的變通方案(workaround solut1n)是創建數據管線,這些數據管線將聚集數據從Hive載入其他類型的關系數據庫管理系統(RDBMS),例如,MySQL和Oracle。然后,操作人員執行交互式分析,并且使用這些RDBMS建立報告。然而,每個RDBMS需要單獨的數據管線。數據管線也需要時間來將聚集數據從Hive傳輸給其他RDBMS。因此,這種變通方案處理依然麻煩并且不方便。
【發明內容】
[0012]在本文中介紹的技術在存儲在大規模存儲簇(例如,Hadoop簇)內的非常大量的數據上提供了低延遲查詢的優點,該簇在系統目錄(例如,Hive元數據存儲)內存儲元數據。尤其地,在本文中介紹的技術包括基于服務樹計算框架的分布式查詢引擎。分布式查詢引擎包括網關服務器和多個工作者節點。所述網關服務器將查詢任務分成局部任務。引擎的每個工作者節點處理一個局部任務,以在存儲器中生成中間查詢結果。中間查詢結果可以是通過掃描一部分相關數據所生成的近似中間結果。網關服務器接收中間查詢結果,并且根據中間查詢結果,構建查詢任務的查詢結果。
[0013]因此,根據在本文中介紹的技術,提供了用于處理數據庫的數據庫查詢的系統。該系統包括網關服務器和多個工作者節點。所述網關服務器被配置為將包含存儲在具有多個數據節點的分布式存儲簇內的數據的數據庫的數據庫查詢分成多個局部查詢,并且根據多個中間結果構建查詢結果。所述多個工作者節點中的每個工作者節點被配置為通過掃描與存儲在分布式存儲簇中的至少一個數據節點上的相應局部查詢相關的數據,來處理多個局部查詢的相應局部查詢,并且生成多個中間結果中的存儲在所述工作者節點的存儲器內的一個中間結果。
[0014]在本文中介紹的技術能夠對存儲在大規模存儲簇(例如,Hadoop簇)內的大數據集合體執行低延遲查詢處理。由于操作人員不需要等待完成當前查詢來確定下一個查詢,所以這對于交互式分析特別有利。通過掃描一部分相關數據,這個分布式查詢系統可以進一步生成近似結果。在處理對整組相關數據的一系列查詢之前,系統的操作人員可以接收一系列查詢的快速原型,以測試這一系列查詢的有效性。
[0015]尤其在所附權利要求中公開了根據本發明的實施方式,涉及一種系統、一種存儲介質以及一種方法,其中,也可以在另一個權利要求目錄(例如,方法)中要求在一個權利要求目錄(例如,系統)中提及的任何特征。
[0016]在本發明的一個實施方式中,一種系統包括:
[0017]網關服務器,被配置為從包含存儲在具有多個數據節點的分布式存儲簇內的數據的數據庫的數據庫查詢中生成多個局部查詢,并且根據多個中間結果構建查詢結果;以及
[0018]多個工作者節點,其中,所述多個工作者節點中的每個工作者節點被配置為通過掃描與相應局部查詢相關的并且存儲在分布式存儲簇的至少一個數據節點上的數據,來處理多個局部查詢的相應局部查詢,并且其中,所述多個工作者節點中的每個工作者節點進一步被配置為生成多個中間結果的存儲在所述工作者節點的存儲器內的一個中間結果。
[0019]所述多個工作者節點中的每個工作者節點進一步被配置為通過掃描與存儲在分布式存儲簇的至少一個數據節點上的相應局部查詢相關的數據的一部分,來處理多個局部查詢中的相應局部查詢,并且生成存儲在所述工作者節點的存儲器內的近似中間結果。
[0020]所述網關服務器可以進一步被配置為根據至少一個近似中間結果構建近似查詢結果。
[0021]所述網關服務器還可以進一步被配置為根據多個中間結果的一部分構建近似查詢結果。
[0022]所述網關服務器可以甚至進一步被配置為識別離散的工作者節點,進一步將分配給離散的工作者節點的局部查詢分成多個從屬局部查詢,并且將所述多個從屬局部查詢分配給所述多個工作者節點中的一些工作者節點,其中,所述離散的工作者節點是未向網關服務器報告進度或者在預定的時間段之后向網關服務器報告低于預定值的進度的工作者節點。
[0023]所述多個工作者節點中的每個工作者節點可以是在分布式存儲簇內運行相應數據節點的服務。
[0024]所述系統可以進一步包括:
[0025]元數據緩存,被配置為緩存數據庫的表格級元數據以及分布式存儲簇的文件級元數據。
[0026]所述元數據緩存可以被配置為保持來自用于所述數據庫查詢的前一數據庫查詢的緩存的元數據。
[0027]所述多個工作者節點中的每個工作者節點可以將心跳消息定期發送給網關服務器,以通過所述工作節點報告局部查詢處理的狀態。
[0028]所述網關服務器可以進一步被配置為從客戶端裝置接收指令,以返回近似查詢結果或終止數據庫查詢的處理。
[0029]所述網關服務器還可以進一步被配置為指示工作節點立即返回近似中間結果,并且根據近似中間結果,將近似查詢結果返回至客戶端裝置。
[0030]所述數據庫查詢可以包括近似查詢結果的請求。
[0031]所述查詢結果可以伴有存儲在數據節點內的已經為所述查詢結果掃描的一部分相關數據的指示。
[0032]所述數據庫可以是Hive數據倉庫系統,并且所述分布式存儲簇是Hadoop簇。
[0033]在本發明的進一步實施方式中,一種方法使用根據本發明或上述實施方式中的任一個所述的系統。
[0034]在本發明的進一步實施方式中,一種方法包括:
[0035]從客戶端裝置中接收包含存儲在具有多個數據節點的分布式存儲簇內的數據的數據庫的數據庫查詢;
[0036]將數據庫查詢分成多個局部查詢;
[0037]將每個局部查詢發送給多個工作者節點中的相應工作者節點,其中,每個工作者節點是在分布式存儲簇的數據節點上運行的服務;
[0038]從工作者節點中檢索局部查詢的多個中間結果,其中,通過掃描存儲在運行相