在分布式系統(tǒng)中選取節(jié)點的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別地涉及一種在分布式系統(tǒng)中選取節(jié)點的方法和
目.0
【背景技術(shù)】
[0002]伴隨著大數(shù)據(jù)的興起,互聯(lián)網(wǎng)公司的業(yè)務(wù)數(shù)據(jù)量逐年上升,因此各大互聯(lián)網(wǎng)公司都在內(nèi)部推行大數(shù)據(jù)技術(shù),并且針對于核心業(yè)務(wù)系統(tǒng)建設(shè)數(shù)據(jù)倉庫,目前數(shù)據(jù)倉庫分為兩種類型:離線數(shù)據(jù)倉庫和實時數(shù)據(jù)倉庫。
[0003]離線數(shù)據(jù)倉庫的代表產(chǎn)品就是hive,該產(chǎn)品由于底層計算框架是MapReduce,因此其適合于超大數(shù)據(jù)集的離線分析和計算,對于實時性要求比較高的數(shù)據(jù)分析和計算并不適合。
[0004]實時數(shù)據(jù)倉庫的代表產(chǎn)品是PrestoDB,該產(chǎn)品由FaceBook開發(fā),采用了 PipeLine的分布式數(shù)據(jù)計算和傳輸模式,對于大數(shù)據(jù)的分析和計算能夠滿足在100ms-20m之內(nèi),滿足了實時數(shù)據(jù)分析和計算的要求。
[0005]由于PrestoDB是一個基于內(nèi)存的分布式計算框架,在進行數(shù)據(jù)分析和計算的時候,PrestoDB首先將需要分析和計算的數(shù)據(jù)分為數(shù)據(jù)片并將每個數(shù)據(jù)片讀取到PrestoDB的Source節(jié)點中的內(nèi)存中,然后將每個Source節(jié)點內(nèi)存中的數(shù)據(jù)通過網(wǎng)絡(luò)匯聚到一個None節(jié)點或者多個Fixed節(jié)點中,具體是匯聚到None節(jié)點還是Fixed節(jié)點與聚合函數(shù)的類型相關(guān),例如:如果查詢中包含有order by語句,那么就需要對所有的結(jié)果進行整體排序,因此各個Source節(jié)點內(nèi)存中的數(shù)據(jù)就需要匯聚到一個None節(jié)點中,然后進行整體排序;如果查詢中包含有g(shù)roup by語句,那么就需要對所有的結(jié)果進行分組,因此各個Source節(jié)點內(nèi)存中的數(shù)據(jù)就需要匯聚到多個Fixed節(jié)點中,從而進行分組。
[0006]目前PrestoDB是從整個集群中隨機選取一個節(jié)點作為None節(jié)點的,具體PrestoDB各種節(jié)點的選取算法如圖1所示,圖1是根據(jù)現(xiàn)有技術(shù)中的在PrestoDB集群中選取節(jié)點的流程的示意圖。如圖1所示,首先判斷需要選取的節(jié)點的類型,如需選取None節(jié)點或Fixed節(jié)點,則在集群中隨機選?。蝗缧柽x取Source節(jié)點,先判斷是否需要采用硬件感知的方式,若是,則根據(jù)數(shù)據(jù)本地性來選取,否則隨機選取多個節(jié)點作為Source節(jié)點。這里的硬件感知是指感知需要處理的數(shù)據(jù)所在的位置,本地性是指優(yōu)先選擇數(shù)據(jù)所在的節(jié)點作為工作節(jié)點。因為如果分配的工作節(jié)點,剛好就是需要處理的數(shù)據(jù)所在的節(jié)點,就能減少數(shù)據(jù)進行網(wǎng)絡(luò)傳輸所需要的時間,能夠減少計算任務(wù)所需要的時間。所以在一些情況下可采用硬件感知方式,按本地性原則選取節(jié)點。
[0007]因此可以看出,如果一個節(jié)點被選擇作為None節(jié)點,那么對其內(nèi)存容量的要求就比較大。要想保證PrestoDB大數(shù)據(jù)量分析與計算的順利進行,就必須對集群中的所有節(jié)點進行內(nèi)存升級,使各個節(jié)點在被選擇為None節(jié)點時都能勝任計算要求,這種升級工作量和成本都比較大。
【發(fā)明內(nèi)容】
[0008]有鑒于此,本發(fā)明提供一種在分布式系統(tǒng)中選取節(jié)點的方法和裝置,通過只提高None節(jié)點的內(nèi)存容量,從而在比較低的工作量和成本下提高整個PrestoDB集群的性能。
[0009]為實現(xiàn)上述目的,根據(jù)本發(fā)明的一個方面,提供了一種在分布式系統(tǒng)中選取節(jié)點的方法。
[0010]本發(fā)明的在分布式系統(tǒng)中選取節(jié)點的方法中,分布式系統(tǒng)為PrestoDB集群,該方法包括:在所述分布式系統(tǒng)中,將指定的一部分節(jié)點作為候選的None節(jié)點;在需要將多個Source節(jié)點的數(shù)據(jù)片匯聚到一個節(jié)點的情況下,在所述候選的None節(jié)點中選擇一個節(jié)點,然后將所述多個Source節(jié)點的數(shù)據(jù)片匯聚到選擇的節(jié)點。
[0011]可選地,在將指定的一部分節(jié)點作為候選的None節(jié)點之后,還包括:在需要將多個Source節(jié)點的數(shù)據(jù)片匯聚到多個Fixed節(jié)點的情況下,判斷當(dāng)前是否允許所述候選的None節(jié)點作為候選的Fixed節(jié)點,若是,則在所述分布式系統(tǒng)中隨機選取多個節(jié)點作為Fixed節(jié)點,否則在所述分布式系統(tǒng)中所述候選的None節(jié)點之外隨機選取多個節(jié)點作為Fixed節(jié)點。
[0012]可選地,在將指定的一部分節(jié)點作為候選的None節(jié)點之后,還包括:在需要將分片的數(shù)據(jù)保存到Source節(jié)點的情況下,判斷當(dāng)前是否允許所述候選的None節(jié)點作為候選的Source節(jié)點,若是,則在所述分布式系統(tǒng)中隨機選取多個節(jié)點作為Source節(jié)點,否則在所述分布式系統(tǒng)中所述候選的None節(jié)點之外隨機選取多個節(jié)點作為Source節(jié)點。
[0013]可選地,在所述分布式系統(tǒng)中隨機選取多個節(jié)點作為Source節(jié)點的步驟包括:在當(dāng)前采用硬件感知方式的情況下,在所述分布式系統(tǒng)中按照本地性原則選取多個節(jié)點作為Source 節(jié)點。
[0014]可選地,在所述分布式系統(tǒng)中所述候選的None節(jié)點之外隨機選取多個節(jié)點作為Source節(jié)點的步驟包括:在當(dāng)前采用硬件感知方式的情況下,在所述分布式系統(tǒng)中所述候選的None節(jié)點之外按照本地性原則選取多個節(jié)點作為Source節(jié)點。
[0015]根據(jù)本發(fā)明的另一方面,提供了一種在分布式系統(tǒng)中選取節(jié)點的裝置。
[0016]對于本發(fā)明的在分布式系統(tǒng)中選取節(jié)點的裝置,分布式系統(tǒng)為PrestoDB集群,該裝置包括:配置模塊,用于記錄所述分布式系統(tǒng)中被指定的作為候選的None節(jié)點的一部分節(jié)點;None節(jié)點選擇模塊,用于在需要將多個Source節(jié)點的數(shù)據(jù)片匯聚到一個節(jié)點的情況下,在所述候選的None節(jié)點中選擇一個節(jié)點作為None節(jié)點。
[0017]可選地,還包括Fixed節(jié)點選擇模塊,用于在需要將多個Source節(jié)點的數(shù)據(jù)片匯聚到多個Fixed節(jié)點的情況下,判斷當(dāng)前是否允許所述候選的None節(jié)點作為候選的Fixed節(jié)點,若是,則在所述分布式系統(tǒng)中隨機選取多個節(jié)點作為Fixed節(jié)點,否則在所述分布式系統(tǒng)中所述候選的None節(jié)點之外隨機選取多個節(jié)點作為Fixed節(jié)點。
[0018]可選地,還包括Source節(jié)點選擇模塊,用于在需要將分片的數(shù)據(jù)保存到Source節(jié)點的情況下,判斷當(dāng)前是否允許所述候選的None節(jié)點作為候選的Source節(jié)點,若是,貝Ij在所述分布式系統(tǒng)中隨機選取多個節(jié)點作為Source節(jié)點,否則在所述分布式系統(tǒng)中所述候選的None節(jié)點之外隨機選取多個節(jié)點作為Source節(jié)點。
[0019]可選地,所述Source節(jié)點選擇模塊還用于在當(dāng)前采用硬件感知方式的情況下,在所述分布式系統(tǒng)中所述候選的None節(jié)點之外按照本地性原則選取多個節(jié)點作為Source節(jié)點。
[0020]可選地,所述Source節(jié)點選擇模塊還用于在當(dāng)前采用硬件感知方式的情況下,在所述分布式系統(tǒng)中所述候選的None節(jié)點之外按照本地性原則選取多個節(jié)點作為Source節(jié)點。
[0021]根據(jù)本發(fā)明的技術(shù)方案,在PrestoDB集群中指定一部分節(jié)點作為候選的None節(jié)點,從而將None節(jié)點的選取限定在一定范圍之內(nèi),這樣可以對該范圍的節(jié)點進行內(nèi)存升級和擴容,使之勝任計算要求。這種方式無需對整個PrestoDB集群的所有節(jié)點進行內(nèi)存升級擴容,因此升級擴容的工作量比較低,并且能夠提高整個PrestoDB集群的性能。
【附圖說明】
[0022]附圖用于更好地理解本發(fā)明,不構(gòu)成對本發(fā)明的不當(dāng)限定。其中:
[0023]圖1是根據(jù)本發(fā)明實施例的示意圖;
[0024]圖2是根據(jù)本發(fā)明實施例的在分布式系統(tǒng)中選取節(jié)點的方法的示意圖;
[0025]圖3是根據(jù)本發(fā)明實施例的在分布式系統(tǒng)中選取節(jié)點的裝置的主要模塊的示意圖。
【具體實施方式】
[0026]以下結(jié)合附圖對本發(fā)明的示范性實施例做出說明,其中包括本發(fā)明實施例的各種細(xì)節(jié)以助于理解,應(yīng)當(dāng)將它們認(rèn)為僅僅是示范性的。因此,本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)認(rèn)識到,可以對這里描述的實施例做出各種改變和修改,而不會背離本發(fā)明的范圍和精神。同樣,為了清楚和簡明,以下的描述中省略了對公知功能和結(jié)構(gòu)的描述。
[0027]在本發(fā)明實施例的方案中,事先指定PrestoDB集群中的一部分節(jié)點作為候選的None節(jié)點,在需要選擇None節(jié)點時就從這一部分節(jié)點中選擇。也可以設(shè)置配置項,對于是從這一部分節(jié)點中選擇None節(jié)點還是在PrestoDB集群中隨機選擇None節(jié)點進行配置。在PrestoDB啟動的時候,對該配置項進行解析,根據(jù)配置項中的配置信息,構(gòu)建一個由對應(yīng)的IP-Port對組成的一個列表,并在分配None節(jié)點時進行使用。其配置規(guī)范例如:None匯聚節(jié)點=IP地址1:端口 I ;IP地址2:端口 2。即指定了 IP地址為地址I和地址2的兩個節(jié)點作為候選的None節(jié)點,端口分別為端口 I和端口 2。在配置項中,還可以對于是否允許上述的候選的None節(jié)點作為候選的Fixed節(jié)點進行配置,對于是否允許上述的候選的None