數據聚合查詢方法及裝置的制造方法
【技術領域】
[0001]本發明屬于大規模數據處理技術領域,尤其涉及數據聚合查詢方法及裝置。
【背景技術】
[0002]在數據庫集群中,聚合查詢是數據查詢與分析的主要手段之一。數據庫集群的查詢涉及到數據庫集群中的多個節點。現有的對數據庫集群進行聚合查詢的方式將分布在多個節點的數據匯聚到主節點后,由主節點執行聚合查詢。
[0003]現有的數據聚合查詢的方式在將多個節點的數據匯聚到主節點的過程中需要傳輸大量數據,網絡開銷很大。此外,現有的數據聚合查詢的方式僅由主節點對大量數據進行聚合查詢,數據聚合查詢的執行受到主節點的數據處理能力的限制,導致現有的數據聚合查詢的效率較低。
【發明內容】
[0004]鑒于此,本發明實施例提供了一種數據聚合查詢的方法及裝置,以解決現有的數據聚合查詢的網絡開銷較大且效率較低的問題。
[0005]第一方面,本發明實施例提供了一種數據聚合查詢的方法,包括:
[0006]當接收到針對數據庫集群的查詢請求時,確定所述查詢請求對應的哈希表,并確定所述哈希表對應的多個分區表,多個所述分區表在所述數據庫集群中相關聯;
[0007]根據所述查詢請求確定每個所述分區表對應的查詢條件,并根據每個所述分區表對應的查詢條件生成MapReduce查詢任務;
[0008]通過Hadoop Yarn框架中的調度節點根據所述MapReduce查詢任務確定多個子任務,并將多個所述子任務分配到多個計算節點;
[0009]通過多個所述計算節點執行多個所述子任務,得到多個計算結果,并通過多個所述計算節點將多個所述計算結果反饋給所述調度節點;
[0010]通過所述調度節點對多個所述計算結果進行化簡,得到所述查詢請求對應的查詢結果。
[0011]第二方面,本發明實施例提供了一種數據聚合查詢的裝置,包括:
[0012]分區表確定單元,用于當接收到針對數據庫集群的查詢請求時,確定所述查詢請求對應的哈希表,并確定所述哈希表對應的多個分區表,多個所述分區表在所述數據庫集群中相關聯;
[0013]查詢任務生成單元,用于根據所述查詢請求確定每個所述分區表對應的查詢條件,并根據每個所述分區表對應的查詢條件生成MapReduce查詢任務;
[0014]子任務分配單元,用于通過Hadoop Yarn框架中的調度節點根據所述MapReduce查詢任務確定多個子任務,并將多個所述子任務分配到多個計算節點;
[0015]分布式計算單元,用于通過多個所述計算節點執行多個所述子任務,得到多個計算結果,并通過多個所述計算節點將多個所述計算結果反饋給所述調度節點;
[0016]化簡單元,用于通過所述調度節點對多個所述計算結果進行化簡,得到所述查詢請求對應的查詢結果。
[0017]本發明實施例與現有技術相比存在的有益效果是:本發明實施例根據針對數據庫集群的查詢請求對應的哈希表生成MapReduce查詢任務,由Hadoop Yarn框架中的調度節點將MapReduce查詢任務劃分為多個子任務,并將多個子任務分配到多個計算節點執行,由此由多個計算節點分別執行Map任務,并由調度節點執行Reduce任務,從而實現了數據庫集群中相關聯的多個分區表的關系型查詢與統計,并減小了網絡開銷,提高了數據聚合查詢的效率。
【附圖說明】
[0018]為了更清楚地說明本發明實施例中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
[0019]圖1是本發明實施例提供的數據聚合查詢的方法的實現流程圖;
[0020]圖2是本發明實施例提供的數據聚合查詢方法步驟S103中所述通過Hadoop Yarn框架中的調度節點根據所述MapReduce查詢任務確定多個子任務的具體實現流程圖;
[0021]圖3是本發明實施例提供的數據聚合查詢方法步驟S103中所述將多個所述子任務分配到多個計算節點的具體實現流程圖;
[0022]圖4是本發明實施例提供的數據聚合查詢裝置的結構框圖。
【具體實施方式】
[0023]為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
[0024]圖1示出了本發明實施例提供的數據聚合查詢的方法的實現流程圖,詳述如下:
[0025]在步驟SlOl中,當接收到針對數據庫集群的查詢請求時,確定查詢請求對應的哈希表,并確定哈希表對應的多個分區表,多個分區表在數據庫集群中相關聯。
[0026]在本發明實施例中,數據庫集群包括至少兩臺數據庫服務器。查詢請求可以為用戶發出的SQL (Structured Query Language,結構化查詢語言)查詢請求。分區表指的是查詢請求對應的哈希表在每個數據庫服務器中的哈希分區表。
[0027]在步驟S102中,根據查詢請求確定每個分區表對應的查詢條件,并根據每個分區表對應的查詢條件生成MapReduce查詢任務。
[0028]根據接收到的查詢請求、查詢請求對應的哈希表以及哈希表對應的多個分區表,可以確定每個分區表對應的查詢條件。生成的MapReduce查詢任務送入Hadoop Yarn框架中的調度節點。
[0029]優選地,所述根據每個所述分區表對應的查詢條件生成MapReduce查詢任務具體為:根據每個分區表對應的查詢條件,每個分區表的分區描述信息以及數據庫集群在Hadoop Yarn框架中的數據格式生成MapReduce查詢任務。
[0030]在步驟S103中,通過Hadoop Yarn框架中的調度節點根據MapReduce查詢任務確定多個子任務,并將多個子任務分配到多個計算節點。
[0031]調度節點在劃分MapReduce查詢任務時,判斷MapReduce查詢任務中剩余的數據塊數是否大于N,其中,N為大于或等于I的整數。若MapReduce查詢任務中剩余的數據塊數大于N,則根據N個數據塊確定出一個新的子任務;若MapReduce查詢任務中剩余的數據塊數小于或等于N,則根據所有剩余的數據塊確定出的一個新的子任務。在確定出新的子任務后,將新的子任務分配到計算節點。
[0032]需要說明的是,本發明實施例中的子任務指的是Map (映射)任務。
[0033]作為本發明的一個實施例,每個子任務只針對多個分區表中的其中一個分區表。
[0034]在步驟S104中,通過多個計算節點執行多個子任務,得到多個計算結果,并通過多個計算節點將多個計算結果反饋給調度節點。
[0035]在步驟S105中,通過調度節點對多個計算結果進行化簡,得到查詢請求對應的查詢結果。
[0036]調度節點在接收到各個計算節點發送的計算結果后,執行Reduce (化簡)任務。
[0037]圖2示出了本發明實施例提供的數據聚合查詢方法步驟S103中所述通過HadoopYarn框架中的調度節點根據所述MapReduce查詢任務確定多個子任務的具體實現流程圖,參照圖2:
[0038]在步驟S201中,通過Hadoop Yarn框架中的調度節點確定Hadoop Yarn框架的初始配置參數,初始配置參數包括Hadoop Yarn框架中的所有計算節點的總CPU資源和總內存資源;
[0039]在步驟S202中,通過調度節點根據初始配置參數將MapReduce查詢任務劃分為多個子任務。
[0040]在本發明實施例中,Hadoop Yarn框架中的調度節點根據所有計算節點的總CPU (Central Processing Unit,中央處理器)資源和總內存資源確定Hadoop Yarn框架的初始配置參數,再根據初始配置參數將MapReduce查詢任務劃分為多個子任務。在將MapReduce查詢任務劃分為多個子任務之后,可以確定每個子任務的CPU資源需求占比和內存資源需求占比,并將CPU資源需求占比和內存資源需求占比中的較大者作為該子任務的支配份額。在多個用戶同時發出多個查詢請求時,調度節點選擇性地分配子任務至計算節點,以保證各個用戶對應的總支配份額相同。
[0041]根據各個計算節點的計算能力的不同,可以為各個計算節點配置不同個數的并發任務數,由此提高數據聚合查詢的效率。
[0042]圖3示出了本發明實施例提供的數據聚合查詢方法步驟S103中所述將多個所述子任務分配到多個計算節點的具體實現流程圖,參照圖3:
[0043]在步驟S301中,根據每個計算節點的CPU資源、內存資源、硬盤資源和/或網絡吞吐量確定每個計算節點的計算能力;
[0044]在步驟S302中,根據每個計算節點的計算能力將多個子任務分配到多個計算節點。
[0045]在本發明實施例中,調度節點根據每個計算節點的計算能力進行子任務的分配。對于計算能力較高的計算節點,分配更多的子任務,從而提高數據聚合查詢的整體效率。
[0046]優選地,所述將多個所述子任務分配到多個計算節點還包括:
[0047]通過調度節點實時監控Hadoop Yarn框架中的所有計算節點的資源使用情況,并根據所有計算節點的資源使用情況對未分配的子任務進行分配。
[0048]在本發明實施例中,調度節點在計算節點執行子任務的過程中,實時監控計算節點的資源使用情況,以根據各個計算節點的資源使用情況對后續的子任務進行分配。
[0049]應理解,在本發明實施例中,上述各過程的序號的大小并不意味著執行順序的先后,各過程的執行順序應以其功能和內在邏輯確定,而不應對本發明實施例的實施過程構成任何限定。
[0050]本發明實施例根據針對數據庫集群的查詢請求對應的哈希表生成MapReduce查詢任務,由Hadoop Yarn框架中的調度節點將MapReduce查詢任務劃分為多個子任務,并將多個子任務分配到多個計算節點執行,由此由多個計算節點分別執行Map任務,并由調度節點執行Reduce任務,從而實現了數據庫集群中相關聯的多個分區表的關系型查詢與統計,并減小了網絡開銷,提高了數據聚合查詢的效率。
[0051]圖4示出了本發明實施例提供的數據聚合查詢裝置的結構框圖,該裝置可以用于運行圖1至圖3所示的數據聚合查詢方法。為了便于說明,僅示出了與本發明實施例相關的部分。
[0052]參照圖4,該裝置包括:
[0053]分區表確定單元41,用于當接收到針對數據庫集群的查詢請求時,確定所述查詢請求對應的哈希表,并確定所述哈希表對應的多個分區表,多個所述分區表在所述數據庫集群中相關聯;
[0054]查詢任務生成單元4