国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種Hadoop分布式文件系統(tǒng)的存儲方法及裝置與流程

      文檔序號:12364009閱讀:258來源:國知局
      一種Hadoop分布式文件系統(tǒng)的存儲方法及裝置與流程

      本發(fā)明涉及數(shù)據(jù)處理控制技術(shù)領(lǐng)域,尤其涉及一種Hadoop分布式文件系統(tǒng)的存儲方法及裝置。



      背景技術(shù):

      Hadoop具有可擴(kuò)展、可伸縮、可容錯等特性,近年來得到廣泛應(yīng)用。如何高效可靠合理地存儲海量數(shù)據(jù)特別重要。HDFS(Hadoop Distributed File System)是Hadoop的分布式文件系統(tǒng),HDFS云存儲系統(tǒng)作為Hadoop的核心子項目,負(fù)責(zé)數(shù)據(jù)的存儲與管理,成為云存儲研究熱點(diǎn)之一。

      HDFS采用主從結(jié)構(gòu)模型,HDFS集群由一個元數(shù)據(jù)節(jié)點(diǎn)和若干個數(shù)據(jù)節(jié)點(diǎn)組成。其中:元數(shù)據(jù)節(jié)點(diǎn)作為主服務(wù)器,管理文件系統(tǒng)的命名空間和客戶端對文件的訪問。數(shù)據(jù)節(jié)點(diǎn)管理存儲的數(shù)據(jù),負(fù)責(zé)處理文件系統(tǒng)客戶端的文件讀寫請求,并在元數(shù)據(jù)節(jié)點(diǎn)的統(tǒng)一調(diào)度下進(jìn)行數(shù)據(jù)塊的創(chuàng)建、刪除和復(fù)制工作。

      HDFS采用心跳機(jī)制對數(shù)據(jù)節(jié)點(diǎn)的健康狀況進(jìn)行檢測,如發(fā)現(xiàn)問題采取數(shù)據(jù)備份的方式來保證數(shù)據(jù)的安全性。數(shù)據(jù)節(jié)點(diǎn)周期性向元數(shù)據(jù)節(jié)點(diǎn)匯報狀態(tài)信息,包括比特容量(capacityBytes)、剩余比特容量(remainingBytes)、最新更新時間(lastUpdate)等信息。

      但是現(xiàn)有的HDFS仍存在不足,主要體現(xiàn)在:

      (1)提供心跳機(jī)制來檢測數(shù)據(jù)節(jié)點(diǎn)是否出現(xiàn)故障,但未對收集的信息進(jìn)行可靠性分析。

      (2)數(shù)據(jù)節(jié)點(diǎn)狀態(tài)信息不能完全表現(xiàn)數(shù)據(jù)節(jié)點(diǎn)的狀態(tài),元數(shù)據(jù)節(jié)點(diǎn)在進(jìn)行負(fù)載均衡和數(shù)據(jù)存儲策略時考慮的因素有限,可能導(dǎo)致負(fù)載不均。



      技術(shù)實現(xiàn)要素:

      本發(fā)明實施例的目的在于提供一種Hadoop分布式文件系統(tǒng)的存儲方法及 裝置,可以采集更多的節(jié)點(diǎn)狀態(tài)信息,獲得健康性評估值,同時增加了可靠性評價機(jī)制,為數(shù)據(jù)存儲提供更好的可靠性保證,采用簡單易行的基于多因素的存儲選擇策略及選擇算法,提高了數(shù)據(jù)節(jié)點(diǎn)的選擇效率,帶來更好的用戶體驗。

      本發(fā)明實施例提供一種Hadoop分布式文件系統(tǒng)的存儲方法,包括:

      元數(shù)據(jù)節(jié)點(diǎn)接收數(shù)據(jù)節(jié)點(diǎn)反饋的節(jié)點(diǎn)狀態(tài)信息,根據(jù)各個數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)信息計算數(shù)據(jù)節(jié)點(diǎn)的健康狀態(tài),獲得各個數(shù)據(jù)節(jié)點(diǎn)的健康性評估值;

      根據(jù)宕機(jī)次數(shù)以及每次宕機(jī)恢復(fù)后的存活時間,計算各個數(shù)據(jù)節(jié)點(diǎn)的可靠性,獲得各個數(shù)據(jù)節(jié)點(diǎn)的可靠性評估值,其中數(shù)據(jù)節(jié)點(diǎn)的可靠性評估值隨宕機(jī)次數(shù)的增加而降低,且隨所述存活時間的增加而增加;

      按照健康性評估值的優(yōu)劣的先后順序,選擇出排序靠前的第一預(yù)設(shè)數(shù)量的第一組數(shù)據(jù)節(jié)點(diǎn);按照可靠性評估值的高低順序,選擇出排序靠前的第二預(yù)設(shè)數(shù)量的第二組數(shù)據(jù)節(jié)點(diǎn);以及,根據(jù)預(yù)設(shè)存儲策略選擇出第三預(yù)設(shè)數(shù)量的第三組數(shù)據(jù)節(jié)點(diǎn);

      根據(jù)第一組數(shù)據(jù)節(jié)點(diǎn)、第二組數(shù)據(jù)節(jié)點(diǎn)以及第三組數(shù)據(jù)節(jié)點(diǎn),篩選出用于當(dāng)前數(shù)據(jù)存儲的N個目標(biāo)數(shù)據(jù)節(jié)點(diǎn),其中,所述N個目標(biāo)數(shù)據(jù)節(jié)點(diǎn)是根據(jù)數(shù)據(jù)節(jié)點(diǎn)在第一組數(shù)據(jù)節(jié)點(diǎn)、第二組數(shù)據(jù)節(jié)點(diǎn)以及第三組數(shù)據(jù)節(jié)點(diǎn)中出現(xiàn)次數(shù)的高低排序,選擇出的前N個數(shù)據(jù)節(jié)點(diǎn)。

      其中,所述根據(jù)各個數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)信息計算數(shù)據(jù)節(jié)點(diǎn)的健康狀態(tài),獲得各個數(shù)據(jù)節(jié)點(diǎn)的健康性評估值,包括:

      針對每個數(shù)據(jù)節(jié)點(diǎn),計算該數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)信息與對應(yīng)權(quán)值的乘積的和值,得到該數(shù)據(jù)節(jié)點(diǎn)的健康性評估值。

      其中,所述各個數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)信息至少包括以下信息中的兩種:磁盤容量、磁盤剩余量、磁盤IO性能、內(nèi)存大小、空閑內(nèi)存、CPU空閑率、網(wǎng)絡(luò)性能以及空閑帶寬。

      其中,所述根據(jù)宕機(jī)次數(shù)以及每次宕機(jī)恢復(fù)后的存活時間,計算各個數(shù)據(jù)節(jié)點(diǎn)的可靠性,包括:

      根據(jù)數(shù)據(jù)節(jié)點(diǎn)每次宕機(jī)恢復(fù)后的存活時間,數(shù)據(jù)節(jié)點(diǎn)初次加入系統(tǒng)的時間,系統(tǒng)當(dāng)前時間SystemTime以及第i個數(shù)據(jù)節(jié)點(diǎn)從最初加入系統(tǒng)至當(dāng)前時間共發(fā)生的宕機(jī)事件次數(shù),根據(jù)以下公式計算出各個數(shù)據(jù)節(jié)點(diǎn)i的可靠性:

      <mrow> <mi>Node</mi> <mo>_</mo> <mi>Relability</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>A</mi> <mo>&times;</mo> <mfrac> <mrow> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>k</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </munderover> <mo>[</mo> <mi>AliveTime</mi> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>&times;</mo> <mfrac> <mi>j</mi> <mrow> <mi>k</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>]</mo> </mrow> <mrow> <mi>SystemTime</mi> <mo>-</mo> <mi>EnterTime</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>+</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>A</mi> <mo>)</mo> </mrow> <mo>&times;</mo> <mfrac> <mn>1</mn> <mrow> <mi>k</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> </mrow>

      其中:k(i)表示第i個數(shù)據(jù)節(jié)點(diǎn)從最初加入系統(tǒng)至當(dāng)前時間共發(fā)生的宕機(jī)事件次數(shù),j表示第j次宕機(jī)事件,AliveTime(j)表示數(shù)據(jù)節(jié)點(diǎn)第j次宕機(jī)恢復(fù)后的存活時間,EnterTime(i)表示第i個數(shù)據(jù)節(jié)點(diǎn)初次加入系統(tǒng)的時間,A表示存活時間的權(quán)重,(1—A)表示宕機(jī)次數(shù)的權(quán)重。

      其中,所述根據(jù)第一組數(shù)據(jù)節(jié)點(diǎn)、第二組數(shù)據(jù)節(jié)點(diǎn)以及第三組數(shù)據(jù)節(jié)點(diǎn),篩選出用于當(dāng)前數(shù)據(jù)存儲的N個目標(biāo)數(shù)據(jù)節(jié)點(diǎn),包括:

      計算第一組數(shù)據(jù)節(jié)點(diǎn)、第二組數(shù)據(jù)節(jié)點(diǎn)和第三組數(shù)據(jù)節(jié)點(diǎn)的交集得到第一交集結(jié)果,當(dāng)所述第一交集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于預(yù)設(shè)值N時,選擇N個數(shù)據(jù)節(jié)點(diǎn)作為所述目標(biāo)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲;

      當(dāng)所述第一交集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于N時,計算第一組數(shù)據(jù)節(jié)點(diǎn)與第二組數(shù)據(jù)節(jié)點(diǎn)的交集得到第二交集結(jié)果,計算所述第一交集結(jié)果與所述第二交集結(jié)果的并集,得到第一并集結(jié)果,當(dāng)所述第一并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于N時,選擇N個數(shù)據(jù)節(jié)點(diǎn)作為所述目標(biāo)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲;

      當(dāng)所述第一并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于N時,計算第一組數(shù)據(jù)節(jié)點(diǎn)與第三組數(shù)據(jù)節(jié)點(diǎn)的交集得到第三交集結(jié)果;計算所述第一并集結(jié)果和所述第三交集結(jié)果的并集得到第二并集結(jié)果,當(dāng)所述第二并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于N時,選擇N個數(shù)據(jù)節(jié)點(diǎn)作為所述目標(biāo)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲;

      當(dāng)所述第二并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于N時,計算第二組數(shù)據(jù)節(jié)點(diǎn)與第三組數(shù)據(jù)節(jié)點(diǎn)的交集得到第四交集結(jié)果;計算所述第二并集結(jié)果與所述第四交集結(jié)果的并集得到第三并集結(jié)果,當(dāng)所述第三并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于N時,選擇N個數(shù)據(jù)節(jié)點(diǎn)作為所述目標(biāo)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲;

      當(dāng)所述第三并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于N時,則在增加所述第一預(yù)設(shè)數(shù)量、第二預(yù)設(shè)數(shù)量、第三預(yù)設(shè)數(shù)量后,返回所述按照健康性評估值的優(yōu)劣的先后順序,選擇出排序靠前的第一預(yù)設(shè)數(shù)量的第一組數(shù)據(jù)節(jié)點(diǎn);按照可靠性評估值的高低順序,選擇出排序靠前的第二預(yù)設(shè)數(shù)量的第二組數(shù)據(jù)節(jié)點(diǎn);以 及,根據(jù)預(yù)設(shè)存儲策略選擇出第三預(yù)設(shè)數(shù)量的第三組數(shù)據(jù)節(jié)點(diǎn)的步驟。

      本發(fā)明實施例提供一種Hadoop分布式文件系統(tǒng)的存儲裝置,包括:

      處理模塊,用于接收數(shù)據(jù)節(jié)點(diǎn)反饋的節(jié)點(diǎn)狀態(tài)信息,根據(jù)各個數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)信息計算數(shù)據(jù)節(jié)點(diǎn)的健康狀態(tài),獲得各個數(shù)據(jù)節(jié)點(diǎn)的健康性評估值;

      計算模塊,用于根據(jù)宕機(jī)次數(shù)以及每次宕機(jī)恢復(fù)后的存活時間,計算各個數(shù)據(jù)節(jié)點(diǎn)的可靠性,獲得各個數(shù)據(jù)節(jié)點(diǎn)的可靠性評估值,其中數(shù)據(jù)節(jié)點(diǎn)的可靠性評估值隨宕機(jī)次數(shù)的增加而降低,且隨所述存活時間的增加而增加;

      第一選擇模塊,用于按照健康性評估值的優(yōu)劣的先后順序,選擇出排序靠前的第一預(yù)設(shè)數(shù)量的第一組數(shù)據(jù)節(jié)點(diǎn);按照可靠性評估值的高低順序,選擇出排序靠前的第二預(yù)設(shè)數(shù)量的第二組數(shù)據(jù)節(jié)點(diǎn);以及,根據(jù)預(yù)設(shè)存儲策略選擇出第三預(yù)設(shè)數(shù)量的第三組數(shù)據(jù)節(jié)點(diǎn);

      第二選擇模塊,用于根據(jù)第一組數(shù)據(jù)節(jié)點(diǎn)、第二組數(shù)據(jù)節(jié)點(diǎn)以及第三組數(shù)據(jù)節(jié)點(diǎn),篩選出用于當(dāng)前數(shù)據(jù)存儲的N個目標(biāo)數(shù)據(jù)節(jié)點(diǎn),其中,所述N個目標(biāo)數(shù)據(jù)節(jié)點(diǎn)是根據(jù)數(shù)據(jù)節(jié)點(diǎn)在第一組數(shù)據(jù)節(jié)點(diǎn)、第二組數(shù)據(jù)節(jié)點(diǎn)以及第三組數(shù)據(jù)節(jié)點(diǎn)中出現(xiàn)次數(shù)的高低排序,選擇出的前N個數(shù)據(jù)節(jié)點(diǎn)。

      其中,所述處理模塊進(jìn)一步用于

      針對每個數(shù)據(jù)節(jié)點(diǎn),計算該數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)信息與對應(yīng)權(quán)值的乘積的和值,得到該數(shù)據(jù)節(jié)點(diǎn)的健康性評估值。

      其中,所述處理模塊中各個數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)信息至少包括以下信息中的兩種:磁盤容量、磁盤剩余量、磁盤IO性能、內(nèi)存大小、空閑內(nèi)存、CPU空閑率、網(wǎng)絡(luò)性能以及空閑帶寬。

      其中,所述計算模塊進(jìn)一步用于

      根據(jù)數(shù)據(jù)節(jié)點(diǎn)每次宕機(jī)恢復(fù)后的存活時間,數(shù)據(jù)節(jié)點(diǎn)初次加入系統(tǒng)的時間,系統(tǒng)當(dāng)前時間SystemTime以及第i個數(shù)據(jù)節(jié)點(diǎn)從最初加入系統(tǒng)至當(dāng)前時間共發(fā)生的宕機(jī)事件次數(shù),根據(jù)以下公式計算出各個數(shù)據(jù)節(jié)點(diǎn)i的可靠性:

      <mrow> <mi>Node</mi> <mo>_</mo> <mi>Relability</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>A</mi> <mo>&times;</mo> <mfrac> <mrow> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>k</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </munderover> <mo>[</mo> <mi>AliveTime</mi> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>&times;</mo> <mfrac> <mi>j</mi> <mrow> <mi>k</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>]</mo> </mrow> <mrow> <mi>SystemTime</mi> <mo>-</mo> <mi>EnterTime</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>+</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>A</mi> <mo>)</mo> </mrow> <mo>&times;</mo> <mfrac> <mn>1</mn> <mrow> <mi>k</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> </mrow>

      其中:k(i)表示第i個數(shù)據(jù)節(jié)點(diǎn)從最初加入系統(tǒng)至當(dāng)前時間共發(fā)生的宕機(jī) 事件次數(shù),j表示第j次宕機(jī)事件,AliveTime(j)表示數(shù)據(jù)節(jié)點(diǎn)第j次宕機(jī)恢復(fù)后的存活時間,EnterTime(i)表示第i個數(shù)據(jù)節(jié)點(diǎn)初次加入系統(tǒng)的時間,A表示存活時間的權(quán)重,(1—A)表示宕機(jī)次數(shù)的權(quán)重。

      其中,所述第二選擇模塊包括:

      第一子單元,用于計算第一組數(shù)據(jù)節(jié)點(diǎn)、第二組數(shù)據(jù)節(jié)點(diǎn)和第三組數(shù)據(jù)節(jié)點(diǎn)的交集得到第一交集結(jié)果,當(dāng)所述第一交集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于預(yù)設(shè)值N時,選擇N個數(shù)據(jù)節(jié)點(diǎn)作為所述目標(biāo)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲;

      第二子單元,用于當(dāng)所述第一交集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于N時,計算第一組數(shù)據(jù)節(jié)點(diǎn)與第二組數(shù)據(jù)節(jié)點(diǎn)的交集得到第二交集結(jié)果,計算所述第一交集結(jié)果與所述第二交集結(jié)果的并集,得到第一并集結(jié)果,當(dāng)所述第一并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于N時,選擇N個數(shù)據(jù)節(jié)點(diǎn)作為所述目標(biāo)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲;

      第三子單元,用于當(dāng)所述第一并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于N時,計算第一組數(shù)據(jù)節(jié)點(diǎn)與第三組數(shù)據(jù)節(jié)點(diǎn)的交集得到第三交集結(jié)果;計算所述第一并集結(jié)果和所述第三交集結(jié)果的并集得到第二并集結(jié)果,當(dāng)所述第二并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于N時,選擇N個數(shù)據(jù)節(jié)點(diǎn)作為所述目標(biāo)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲;

      第四子單元,用于當(dāng)所述第二并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于N時,計算第二組數(shù)據(jù)節(jié)點(diǎn)與第三組數(shù)據(jù)節(jié)點(diǎn)的交集得到第四交集結(jié)果;計算所述第二并集結(jié)果與所述第四交集結(jié)果的并集得到第三并集結(jié)果,當(dāng)所述第三并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于N時,選擇N個數(shù)據(jù)節(jié)點(diǎn)作為所述目標(biāo)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲;

      第五子單元,用于當(dāng)所述第三并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于N時,則在增加所述第一預(yù)設(shè)數(shù)量、第二預(yù)設(shè)數(shù)量、第三預(yù)設(shè)數(shù)量后,觸發(fā)所述第一選擇模塊按照健康性評估值的優(yōu)劣的先后順序,選擇出排序靠前的第一預(yù)設(shè)數(shù)量的第一組數(shù)據(jù)節(jié)點(diǎn);按照可靠性評估值的高低順序,選擇出排序靠前的第二預(yù)設(shè)數(shù)量的第二組數(shù)據(jù)節(jié)點(diǎn);以及,根據(jù)預(yù)設(shè)存儲策略選擇出第三預(yù)設(shè)數(shù)量的第三組數(shù)據(jù)節(jié)點(diǎn)。

      本發(fā)明實施例的有益效果是:通過采集更多的節(jié)點(diǎn)狀態(tài)信息,計算得到健 康性評估值,提高數(shù)據(jù)存儲效率;同時增加了可靠性評價機(jī)制,對數(shù)據(jù)節(jié)點(diǎn)的可靠性實時進(jìn)行評估,為數(shù)據(jù)存儲提供更好的可靠性保證。采用簡單易行的基于多因素的存儲選擇策略及選擇算法,提高了數(shù)據(jù)節(jié)點(diǎn)的選擇效率,帶來更好的用戶體驗。

      附圖說明

      圖1表示本發(fā)明實施例Hadoop分布式文件系統(tǒng)的存儲方法步驟示意圖一;

      圖2表示本發(fā)明實施例Hadoop分布式文件系統(tǒng)的存儲方法中數(shù)據(jù)節(jié)點(diǎn)的宕機(jī)示意圖;

      圖3表示本發(fā)明實施例Hadoop分布式文件系統(tǒng)的存儲方法步驟示意圖二;

      圖4表示本發(fā)明實施例Hadoop分布式文件系統(tǒng)的存儲方法整體流程示意圖;

      圖5表示本發(fā)明實施例Hadoop分布式文件系統(tǒng)的存儲裝置示意圖。

      具體實施方式

      為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實施例對本發(fā)明進(jìn)行詳細(xì)描述。

      本發(fā)明實施例提供一種Hadoop分布式文件系統(tǒng)的存儲方法,如圖1所示,包括:

      步驟S100、元數(shù)據(jù)節(jié)點(diǎn)接收數(shù)據(jù)節(jié)點(diǎn)反饋的節(jié)點(diǎn)狀態(tài)信息,根據(jù)各個數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)信息計算數(shù)據(jù)節(jié)點(diǎn)的健康狀態(tài),獲得各個數(shù)據(jù)節(jié)點(diǎn)的健康性評估值;

      步驟S200、根據(jù)宕機(jī)次數(shù)以及每次宕機(jī)恢復(fù)后的存活時間,計算各個數(shù)據(jù)節(jié)點(diǎn)的可靠性,獲得各個數(shù)據(jù)節(jié)點(diǎn)的可靠性評估值,其中數(shù)據(jù)節(jié)點(diǎn)的可靠性評估值隨宕機(jī)次數(shù)的增加而降低,且隨所述存活時間的增加而增加;

      步驟S300、按照健康性評估值的優(yōu)劣的先后順序,選擇出排序靠前的第一預(yù)設(shè)數(shù)量的第一組數(shù)據(jù)節(jié)點(diǎn);按照可靠性評估值的高低順序,選擇出排序靠前的第二預(yù)設(shè)數(shù)量的第二組數(shù)據(jù)節(jié)點(diǎn);以及,根據(jù)預(yù)設(shè)存儲策略選擇出第三預(yù)設(shè)數(shù)量的第三組數(shù)據(jù)節(jié)點(diǎn);

      步驟S400、根據(jù)第一組數(shù)據(jù)節(jié)點(diǎn)、第二組數(shù)據(jù)節(jié)點(diǎn)以及第三組數(shù)據(jù)節(jié)點(diǎn),篩選出用于當(dāng)前數(shù)據(jù)存儲的N個目標(biāo)數(shù)據(jù)節(jié)點(diǎn),其中,所述N個目標(biāo)數(shù)據(jù)節(jié)點(diǎn)是根據(jù)數(shù)據(jù)節(jié)點(diǎn)在第一組數(shù)據(jù)節(jié)點(diǎn)、第二組數(shù)據(jù)節(jié)點(diǎn)以及第三組數(shù)據(jù)節(jié)點(diǎn)中出現(xiàn)次數(shù)的高低排序,選擇出的前N個數(shù)據(jù)節(jié)點(diǎn)。

      本發(fā)明實施例采用簡單易行的基于多因素的存儲選擇策略及選擇算法,提高了數(shù)據(jù)節(jié)點(diǎn)的選擇效率,帶來更好的用戶體驗。

      具體的,接收數(shù)據(jù)節(jié)點(diǎn)反饋的節(jié)點(diǎn)狀態(tài)信息,依據(jù)各個數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)信息計算各個數(shù)據(jù)節(jié)點(diǎn)的健康性評估值。依據(jù)健康性評估值的高低順序?qū)Ω鱾€數(shù)據(jù)節(jié)點(diǎn)進(jìn)行排序,獲得排序后的各個數(shù)據(jù)節(jié)點(diǎn)。然后在經(jīng)過排序后的各個數(shù)據(jù)節(jié)點(diǎn)里選擇靠前的第一預(yù)設(shè)數(shù)量的數(shù)據(jù)節(jié)點(diǎn),作為第一組數(shù)據(jù)節(jié)點(diǎn)。數(shù)據(jù)節(jié)點(diǎn)將節(jié)點(diǎn)狀態(tài)信息通過心跳協(xié)議發(fā)送給元數(shù)據(jù)節(jié)點(diǎn),元數(shù)據(jù)節(jié)點(diǎn)獲得數(shù)據(jù)節(jié)點(diǎn)的健康狀態(tài),在進(jìn)行數(shù)據(jù)節(jié)點(diǎn)的選擇時考慮數(shù)據(jù)節(jié)點(diǎn)的健康狀態(tài)因素,較現(xiàn)有HDFS存儲方法,本方法可以提高存儲效率。

      獲取各個數(shù)據(jù)節(jié)點(diǎn)的宕機(jī)次數(shù)以及每次宕機(jī)恢復(fù)后的存活時間,依據(jù)可靠性評價機(jī)制,計算得到各個數(shù)據(jù)節(jié)點(diǎn)的可靠性評估值,依據(jù)可靠性評估值的高低順序?qū)Ω鱾€數(shù)據(jù)節(jié)點(diǎn)進(jìn)行排序,獲得排序后的各個數(shù)據(jù)節(jié)點(diǎn)。然后在經(jīng)過排序后的各個數(shù)據(jù)節(jié)點(diǎn)里選擇靠前的第二預(yù)設(shè)數(shù)量的數(shù)據(jù)節(jié)點(diǎn),作為第二組數(shù)據(jù)節(jié)點(diǎn)。需要說明的是,數(shù)據(jù)節(jié)點(diǎn)的可靠性評估值隨宕機(jī)次數(shù)的增加而降低,且隨存活時間的增加而增加,這里是指當(dāng)存活時間不變,宕機(jī)次數(shù)增加時,數(shù)據(jù)節(jié)點(diǎn)的可靠性評估值會降低;當(dāng)宕機(jī)次數(shù)不變,存活時間增加時,數(shù)據(jù)節(jié)點(diǎn)的可靠性評估值會增加。

      根據(jù)預(yù)設(shè)的存儲策略選擇出第三組數(shù)據(jù)節(jié)點(diǎn)。然后根據(jù)獲得的第一組數(shù)據(jù)節(jié)點(diǎn)、第二組數(shù)據(jù)節(jié)點(diǎn)和第三組數(shù)據(jù)節(jié)點(diǎn)選擇出用于當(dāng)前數(shù)據(jù)存儲的目標(biāo)數(shù)據(jù)節(jié)點(diǎn)。

      需要說明的是,預(yù)設(shè)存儲策略是用戶預(yù)先設(shè)定的存儲策略,例如,該策略可以是基于各個數(shù)據(jù)節(jié)點(diǎn)的剩余容量參數(shù),選擇出剩余容量滿足存儲需求的數(shù)據(jù)節(jié)點(diǎn),具體的,可以按照剩余容量的大小順序,從剩余容量滿足存儲需求的數(shù)據(jù)節(jié)點(diǎn)中,選擇剩余容量較大的數(shù)據(jù)節(jié)點(diǎn),或者是從剩余容量滿足存儲需求的數(shù)據(jù)節(jié)點(diǎn)中,隨機(jī)選擇數(shù)據(jù)節(jié)點(diǎn)。也可以是基于各個數(shù)據(jù)節(jié)點(diǎn)的內(nèi)存參數(shù), 選擇出內(nèi)存滿足存儲需求的數(shù)據(jù)節(jié)點(diǎn),具體的,可以按照內(nèi)存的大小順序,從內(nèi)存滿足存儲需求的數(shù)據(jù)節(jié)點(diǎn)中,選擇內(nèi)存較大的數(shù)據(jù)節(jié)點(diǎn),或者是從內(nèi)存滿足存儲需求的數(shù)據(jù)節(jié)點(diǎn)中,隨機(jī)選擇數(shù)據(jù)節(jié)點(diǎn)。除了上述舉例的策略外,還可以按照采用現(xiàn)有技術(shù)的各種存儲策略,作為預(yù)設(shè)策略,本發(fā)明對此不作具體限定。

      需要說明的是,第一組數(shù)據(jù)節(jié)點(diǎn)、第二組數(shù)據(jù)節(jié)點(diǎn)和第三組數(shù)據(jù)節(jié)點(diǎn)的選取,并無嚴(yán)格的時間上的限制??梢韵全@取第一組數(shù)據(jù)節(jié)點(diǎn),也可以先獲取第二組數(shù)據(jù)節(jié)點(diǎn)或第三組數(shù)據(jù)節(jié)點(diǎn)。且第一預(yù)設(shè)數(shù)量、第二預(yù)設(shè)數(shù)量和第三預(yù)設(shè)數(shù)量可以根據(jù)需求自行設(shè)定,并不要求第一預(yù)設(shè)數(shù)量、第二預(yù)設(shè)數(shù)量和第三預(yù)設(shè)數(shù)量相等。

      元數(shù)據(jù)節(jié)點(diǎn)收集數(shù)據(jù)節(jié)點(diǎn)的狀態(tài)信息,對數(shù)據(jù)節(jié)點(diǎn)的健康狀態(tài)進(jìn)行評價;引入可靠性評價機(jī)制對數(shù)據(jù)節(jié)點(diǎn)的穩(wěn)定性、可靠性進(jìn)行評價;得到數(shù)據(jù)節(jié)點(diǎn)的健康性評估值和可靠性評估值,然后對各個數(shù)據(jù)節(jié)點(diǎn)進(jìn)行排序和選擇。綜合預(yù)設(shè)的存儲策略選擇出用于當(dāng)前數(shù)據(jù)存儲的目標(biāo)數(shù)據(jù)節(jié)點(diǎn)。

      元數(shù)據(jù)節(jié)點(diǎn)在接收數(shù)據(jù)節(jié)點(diǎn)反饋的節(jié)點(diǎn)狀態(tài)信息之前,需要進(jìn)行初始化,具體包括:初始化遠(yuǎn)程過程調(diào)用協(xié)議通信功能,創(chuàng)建遠(yuǎn)程過程調(diào)用協(xié)議服務(wù)進(jìn)程,同時加載元數(shù)據(jù)信息至內(nèi)存,初始化元數(shù)據(jù)節(jié)點(diǎn)協(xié)議(NameNodeProtocol),創(chuàng)建元數(shù)據(jù)節(jié)點(diǎn)之間的通信。然后等待數(shù)據(jù)節(jié)點(diǎn)的注冊和通信,接收數(shù)據(jù)節(jié)點(diǎn)返回的節(jié)點(diǎn)狀態(tài)信息。

      數(shù)據(jù)節(jié)點(diǎn)向元數(shù)據(jù)節(jié)點(diǎn)反饋節(jié)點(diǎn)狀態(tài)信息之前,需要進(jìn)行初始化操作,包括:初始化遠(yuǎn)程過程調(diào)用協(xié)議通信功能,為客戶端和其它數(shù)據(jù)節(jié)點(diǎn)提供服務(wù);同時啟動數(shù)據(jù)傳輸功能,進(jìn)行客戶端和數(shù)據(jù)節(jié)點(diǎn)之間的數(shù)據(jù)傳輸;啟動數(shù)據(jù)存儲功能,負(fù)責(zé)存儲,保存數(shù)據(jù)信息。創(chuàng)建狀態(tài)監(jiān)聽進(jìn)程,實時收集節(jié)點(diǎn)狀態(tài)信息,然后通過心跳協(xié)議周期性發(fā)送給元數(shù)據(jù)節(jié)點(diǎn)。

      在本發(fā)明上述實施例中,步驟S100中,根據(jù)各個數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)信息計算數(shù)據(jù)節(jié)點(diǎn)的健康狀態(tài),獲得各個數(shù)據(jù)節(jié)點(diǎn)的健康性評估值,包括:

      針對每個數(shù)據(jù)節(jié)點(diǎn),計算該數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)信息與對應(yīng)權(quán)值的乘積的和值,得到該數(shù)據(jù)節(jié)點(diǎn)的健康性評估值。

      本發(fā)明對數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)信息進(jìn)行了擴(kuò)展與優(yōu)化,以便于元數(shù)據(jù)節(jié)點(diǎn) 更好地了解數(shù)據(jù)節(jié)點(diǎn)的狀態(tài),更好地實現(xiàn)存儲調(diào)度。各個數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)信息至少包括以下信息中的兩種:S1:磁盤容量、S2:磁盤剩余量、S3:磁盤IO性能、S4:內(nèi)存大小、S5:空閑內(nèi)存、S6:CPU空閑率、S7:網(wǎng)絡(luò)性能以及S8:空閑帶寬。

      具體的,根據(jù)需要,配置節(jié)點(diǎn)狀態(tài)信息S1、S2、…、S8狀態(tài)的權(quán)重W1、W2、…、W8,滿足公式1:

      <mrow> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mn>8</mn> </munderover> <msub> <mi>w</mi> <mi>j</mi> </msub> <mo>=</mo> <mn>1</mn> </mrow> (公式1)

      若Wj=0(j=1、2、…、8),表示不考慮Sj狀態(tài)。

      采用公式2,計算數(shù)據(jù)節(jié)點(diǎn)的健康狀態(tài):

      <mrow> <mi>Note</mi> <mo>_</mo> <mi>Health</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mn>8</mn> </munderover> <msub> <mi>w</mi> <mi>j</mi> </msub> <msub> <mi>S</mi> <mi>j</mi> </msub> </mrow> (公式2)

      Note_Health(i)表示第i個DataNode的健康性評估值,該值越大,則表示數(shù)據(jù)節(jié)點(diǎn)狀態(tài)越好。

      在本發(fā)明上述實施例中,步驟S200中根據(jù)宕機(jī)次數(shù)以及每次宕機(jī)恢復(fù)后的存活時間,計算各個數(shù)據(jù)節(jié)點(diǎn)的可靠性,包括:

      根據(jù)數(shù)據(jù)節(jié)點(diǎn)每次宕機(jī)恢復(fù)后的存活時間,數(shù)據(jù)節(jié)點(diǎn)初次加入系統(tǒng)的時間,系統(tǒng)當(dāng)前時間SystemTime以及第i個數(shù)據(jù)節(jié)點(diǎn)從最初加入系統(tǒng)至當(dāng)前時間共發(fā)生的宕機(jī)事件次數(shù),根據(jù)以下公式計算出各個數(shù)據(jù)節(jié)點(diǎn)i的可靠性:

      <mrow> <mi>Node</mi> <mo>_</mo> <mi>Relability</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>A</mi> <mo>&times;</mo> <mfrac> <mrow> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>k</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </munderover> <mo>[</mo> <mi>AliveTime</mi> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>&times;</mo> <mfrac> <mi>j</mi> <mrow> <mi>k</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>]</mo> </mrow> <mrow> <mi>SystemTime</mi> <mo>-</mo> <mi>EnterTime</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>+</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>A</mi> <mo>)</mo> </mrow> <mo>&times;</mo> <mfrac> <mn>1</mn> <mrow> <mi>k</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> </mrow>

      其中:k(i)表示第i個數(shù)據(jù)節(jié)點(diǎn)從最初加入系統(tǒng)至當(dāng)前時間共發(fā)生的宕機(jī)事件次數(shù),j表示第j次宕機(jī)事件,AliveTime(j)表示數(shù)據(jù)節(jié)點(diǎn)第j次宕機(jī)恢復(fù)后的存活時間,EnterTime(i)表示第i個數(shù)據(jù)節(jié)點(diǎn)初次加入系統(tǒng)的時間,A表示存活時間的權(quán)重,(1—A)表示宕機(jī)次數(shù)的權(quán)重。

      具體的,基于HDFS心跳機(jī)制對數(shù)據(jù)節(jié)點(diǎn)可靠性進(jìn)行統(tǒng)計分析,數(shù)據(jù)節(jié)點(diǎn)剛接入系統(tǒng)時處于激活狀態(tài)(alive),元數(shù)據(jù)節(jié)點(diǎn)在一定時間段內(nèi)收不到某數(shù)據(jù)節(jié)點(diǎn)發(fā)送的心跳信息,就將其標(biāo)記為失效(dead),直到重新檢測到該數(shù)據(jù)節(jié)點(diǎn) 的心跳信息為止,如圖2所示,數(shù)據(jù)節(jié)點(diǎn)的alive-dead-alive過程為一次宕機(jī)事件。

      在一次宕機(jī)事件過程中,用AliveTime表示數(shù)據(jù)節(jié)點(diǎn)存活時間,DeadTime表示數(shù)據(jù)節(jié)點(diǎn)失效時間,EnterTime表示數(shù)據(jù)節(jié)點(diǎn)初次加入系統(tǒng)的時間,SystemTime表示系統(tǒng)當(dāng)前時間。根據(jù)各數(shù)據(jù)節(jié)點(diǎn)心跳信息的歷史數(shù)據(jù)進(jìn)行統(tǒng)計分析,按照公式3計算出各數(shù)據(jù)節(jié)點(diǎn)i的可靠性評估值,用Node_Relability表示。

      <mrow> <mi>Node</mi> <mo>_</mo> <mi>Relability</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>A</mi> <mo>&times;</mo> <mfrac> <mrow> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>k</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </munderover> <mo>[</mo> <mi>AliveTime</mi> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>&times;</mo> <mfrac> <mi>j</mi> <mrow> <mi>k</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>]</mo> </mrow> <mrow> <mi>SystemTime</mi> <mo>-</mo> <mi>EnterTime</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>+</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>A</mi> <mo>)</mo> </mrow> <mo>&times;</mo> <mfrac> <mn>1</mn> <mrow> <mi>k</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> </mrow>

      (公式3)

      其中:k(i)表示第i個數(shù)據(jù)節(jié)點(diǎn)從最初加入系統(tǒng)至當(dāng)前時間共發(fā)生的宕機(jī)事件次數(shù),j表示第j次宕機(jī)事件,AliveTime(j)表示數(shù)據(jù)節(jié)點(diǎn)第j次宕機(jī)恢復(fù)后的存活時間,EnterTime(i)表示第i個數(shù)據(jù)節(jié)點(diǎn)初次加入系統(tǒng)的時間,A表示存活時間的權(quán)重,(1-A)表示宕機(jī)次數(shù)的權(quán)重。具體的,數(shù)據(jù)節(jié)點(diǎn)的可靠性由兩部分決定,第一部分為基于存活時間變化的第一參數(shù),隨存活時間的增大而增大,第一參數(shù)的權(quán)重為A;第二部分為基于宕機(jī)次數(shù)變化的第二參數(shù),隨著宕機(jī)次數(shù)的增大而減小,第二參數(shù)的權(quán)重為(1—A)。第一參數(shù)為:

      <mfrac> <mrow> <msubsup> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>k</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </msubsup> <mo>[</mo> <mi>AliveTime</mi> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>&times;</mo> <mfrac> <mi>j</mi> <mrow> <mi>k</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>]</mo> </mrow> <mrow> <mi>SystemTime</mi> <mo>-</mo> <mi>EnterTime</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac>

      第二參數(shù)為:

      第一參數(shù)中包含第j次宕機(jī)事件的影響因子:

      其中在第一參數(shù)里引入第j次宕機(jī)事件的影響因子,j越大,影響因子值越大,以體現(xiàn)宕機(jī)事件影響隨時間衰減特性。

      在本發(fā)明上述實施例中,如圖3所示,步驟S400包括:

      步驟S401、計算第一組數(shù)據(jù)節(jié)點(diǎn)、第二組數(shù)據(jù)節(jié)點(diǎn)和第三組數(shù)據(jù)節(jié)點(diǎn)的交集得到第一交集結(jié)果,當(dāng)所述第一交集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于預(yù) 設(shè)值N時,選擇N個數(shù)據(jù)節(jié)點(diǎn)作為所述目標(biāo)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲;

      步驟S402、當(dāng)所述第一交集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于N時,計算第一組數(shù)據(jù)節(jié)點(diǎn)與第二組數(shù)據(jù)節(jié)點(diǎn)的交集得到第二交集結(jié)果,計算所述第一交集結(jié)果與所述第二交集結(jié)果的并集,得到第一并集結(jié)果,當(dāng)所述第一并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于N時,選擇N個數(shù)據(jù)節(jié)點(diǎn)作為所述目標(biāo)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲;

      步驟S403、當(dāng)所述第一并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于N時,計算第一組數(shù)據(jù)節(jié)點(diǎn)與第三組數(shù)據(jù)節(jié)點(diǎn)的交集得到第三交集結(jié)果;計算所述第一并集結(jié)果和所述第三交集結(jié)果的并集得到第二并集結(jié)果,當(dāng)所述第二并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于N時,選擇N個數(shù)據(jù)節(jié)點(diǎn)作為所述目標(biāo)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲;

      步驟S404、當(dāng)所述第二并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于N時,計算第二組數(shù)據(jù)節(jié)點(diǎn)與第三組數(shù)據(jù)節(jié)點(diǎn)的交集得到第四交集結(jié)果;計算所述第二并集結(jié)果與所述第四交集結(jié)果的并集得到第三并集結(jié)果,當(dāng)所述第三并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于N時,選擇N個數(shù)據(jù)節(jié)點(diǎn)作為所述目標(biāo)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲;

      步驟S405、當(dāng)所述第三并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于N時,則在增加所述第一預(yù)設(shè)數(shù)量、第二預(yù)設(shè)數(shù)量、第三預(yù)設(shè)數(shù)量后,返回步驟S300。

      具體的,計算第一組數(shù)據(jù)節(jié)點(diǎn)、第二組數(shù)據(jù)節(jié)點(diǎn)和第三組數(shù)據(jù)節(jié)點(diǎn)的交集得到第一交集結(jié)果,其中第一組數(shù)據(jù)節(jié)點(diǎn)、第二組數(shù)據(jù)節(jié)點(diǎn)和第三組數(shù)據(jù)節(jié)點(diǎn)中數(shù)據(jù)節(jié)點(diǎn)的數(shù)量均可以大于等于N個,對第一交集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)進(jìn)行判斷,當(dāng)判斷結(jié)果為:第一交集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于預(yù)設(shè)值N時,則在第一交集結(jié)果中選擇N個數(shù)據(jù)節(jié)點(diǎn)作為目標(biāo)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲,流程結(jié)束。

      當(dāng)?shù)谝唤患Y(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于預(yù)設(shè)值N時,則需要計算第一組數(shù)據(jù)節(jié)點(diǎn)與第二組數(shù)據(jù)節(jié)點(diǎn)的交集得到第二交集結(jié)果,然后計算第一交集結(jié)果與第二交集結(jié)果的并集,得到第一并集結(jié)果,判斷第一并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)是否大于等于N,當(dāng)判斷結(jié)果為第一并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于N時,則需要在第一并集結(jié)果中選擇N個數(shù)據(jù)節(jié)點(diǎn)作為目標(biāo)數(shù)據(jù)節(jié)點(diǎn) 進(jìn)行數(shù)據(jù)存儲,流程結(jié)束。

      當(dāng)判斷結(jié)果為第一并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于N時,計算第一組數(shù)據(jù)節(jié)點(diǎn)與第三組數(shù)據(jù)節(jié)點(diǎn)的交集得到第三交集結(jié)果;計算第一并集結(jié)果和第三交集結(jié)果的并集得到第二并集結(jié)果,判斷第二并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)是否大于等于N,當(dāng)判斷結(jié)果為第二并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于N時,在第二并集結(jié)果中選擇N個數(shù)據(jù)節(jié)點(diǎn)作為目標(biāo)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲,流程結(jié)束。

      當(dāng)判斷結(jié)果為第二并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于N時,計算第二組數(shù)據(jù)節(jié)點(diǎn)與第三組數(shù)據(jù)節(jié)點(diǎn)的交集得到第四交集結(jié)果;計算第二并集結(jié)果與第四交集結(jié)果的并集得到第三并集結(jié)果,判斷第三并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)是否大于等于N,當(dāng)判斷結(jié)果為第三并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于N時,在第三并集結(jié)果中選擇N個數(shù)據(jù)節(jié)點(diǎn)作為目標(biāo)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲,流程結(jié)束。

      當(dāng)判斷結(jié)果為第三并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于N時,則需要增加第一預(yù)設(shè)數(shù)量、第二預(yù)設(shè)數(shù)量、第三預(yù)設(shè)數(shù)量,然后返回按照健康性評估值的優(yōu)劣的先后順序,選擇出排序靠前的第一預(yù)設(shè)數(shù)量的第一組數(shù)據(jù)節(jié)點(diǎn);按照可靠性評估值的高低順序,選擇出排序靠前的第二預(yù)設(shè)數(shù)量的第二組數(shù)據(jù)節(jié)點(diǎn);以及,根據(jù)預(yù)設(shè)存儲策略選擇出第三預(yù)設(shè)數(shù)量的第三組數(shù)據(jù)節(jié)點(diǎn)的步驟。需要說明的是,當(dāng)?shù)谝唤患Y(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于預(yù)設(shè)值N,需要繼續(xù)計算時,可以先選擇第一組數(shù)據(jù)節(jié)點(diǎn)和第三數(shù)據(jù)節(jié)點(diǎn)的交集,也可以先選擇第二組數(shù)據(jù)節(jié)點(diǎn)和第三組數(shù)據(jù)節(jié)點(diǎn)的交集。此過程可根據(jù)實際情況來處理,本實施例先選擇第一組數(shù)據(jù)節(jié)點(diǎn)和第二數(shù)據(jù)節(jié)點(diǎn)的交集僅為其中的一種處理方式。

      如圖4所示,為本發(fā)明實施例的整體流程圖:

      步驟S101、計算各個數(shù)據(jù)節(jié)點(diǎn)的健康性評估值,按照優(yōu)劣順序,選擇出排序靠前的第一預(yù)設(shè)數(shù)量的第一組數(shù)據(jù)節(jié)點(diǎn)。

      步驟S102、計算各個數(shù)據(jù)節(jié)點(diǎn)的可靠性評估值,按照優(yōu)劣順序,選擇出排序靠前的第二預(yù)設(shè)數(shù)量的第二組數(shù)據(jù)節(jié)點(diǎn)。

      步驟S103、根據(jù)預(yù)設(shè)存儲策略選擇出第三預(yù)設(shè)數(shù)量的第三組數(shù)據(jù)節(jié)點(diǎn)。

      步驟S104、計算第一組數(shù)據(jù)節(jié)點(diǎn)、第二組數(shù)據(jù)節(jié)點(diǎn)和第三組數(shù)據(jù)節(jié)點(diǎn)的 交集,得到第一交集結(jié)果,判斷第一交集結(jié)果中數(shù)據(jù)節(jié)點(diǎn)的個數(shù)是否大于等于N,當(dāng)判斷結(jié)果大于等于N時,執(zhí)行步驟S108,否則執(zhí)行步驟S105。

      步驟S105、計算第一組數(shù)據(jù)節(jié)點(diǎn)、第二組數(shù)據(jù)節(jié)點(diǎn)的交集,得到第二交集結(jié)果,計算第二交集結(jié)果和第一交集結(jié)果的并集,得到第一并集結(jié)果,判斷第一并集結(jié)果中數(shù)據(jù)節(jié)點(diǎn)的個數(shù)是否大于等于N,當(dāng)判斷結(jié)果大于等于N時,執(zhí)行步驟S108,否則執(zhí)行步驟S106。

      步驟S106、計算第一組數(shù)據(jù)節(jié)點(diǎn)、第三組數(shù)據(jù)節(jié)點(diǎn)的交集,得到第三交集結(jié)果,計算第三交集結(jié)果和第一并集結(jié)果的并集,得到第二并集結(jié)果,判斷第二并集結(jié)果中數(shù)據(jù)節(jié)點(diǎn)的個數(shù)是否大于等于N,當(dāng)判斷結(jié)果大于等于N時,執(zhí)行步驟S108,否則執(zhí)行步驟S107。

      步驟S107、計算第二組數(shù)據(jù)節(jié)點(diǎn)、第三組數(shù)據(jù)節(jié)點(diǎn)的交集,得到第四交集結(jié)果,計算第四交集結(jié)果和第二并集結(jié)果的并集,得到第三并集結(jié)果,判斷第三并集結(jié)果中數(shù)據(jù)節(jié)點(diǎn)的個數(shù)是否大于等于N,當(dāng)判斷結(jié)果大于等于N時,執(zhí)行步驟S108,否則執(zhí)行步驟S109。

      步驟S108、選出N個目標(biāo)數(shù)據(jù)節(jié)點(diǎn),執(zhí)行步驟S111。

      步驟S109、增加第一預(yù)設(shè)數(shù)量、第二預(yù)設(shè)數(shù)量和第三預(yù)設(shè)數(shù)量,執(zhí)行步驟S110。

      步驟S110、選擇第一預(yù)設(shè)數(shù)量的第一組數(shù)據(jù)節(jié)點(diǎn)、第二預(yù)設(shè)數(shù)量的第二組數(shù)據(jù)節(jié)點(diǎn)以及第三預(yù)設(shè)數(shù)量的第三組數(shù)據(jù)節(jié)點(diǎn),繼續(xù)執(zhí)行步驟S104。

      步驟S111、結(jié)束流程。

      本實施例的描述方式僅為處理過程中一種處理方式,本發(fā)明所提供的方法并不局限于本實施例描述的處理流程,本領(lǐng)域人員在具體實施過程中可選用不同的處理方式。

      本發(fā)明實施例提供一種Hadoop分布式文件系統(tǒng)的存儲裝置,如圖5所示,包括:

      處理模塊10,用于接收數(shù)據(jù)節(jié)點(diǎn)反饋的節(jié)點(diǎn)狀態(tài)信息,根據(jù)各個數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)信息計算數(shù)據(jù)節(jié)點(diǎn)的健康狀態(tài),獲得各個數(shù)據(jù)節(jié)點(diǎn)的健康性評估值;

      計算模塊20,用于根據(jù)宕機(jī)次數(shù)以及每次宕機(jī)恢復(fù)后的存活時間,計算 各個數(shù)據(jù)節(jié)點(diǎn)的可靠性,獲得各個數(shù)據(jù)節(jié)點(diǎn)的可靠性評估值,其中數(shù)據(jù)節(jié)點(diǎn)的可靠性評估值隨宕機(jī)次數(shù)的增加而降低,且隨所述存活時間的增加而增加;

      第一選擇模塊30,用于按照健康性評估值的優(yōu)劣的先后順序,選擇出排序靠前的第一預(yù)設(shè)數(shù)量的第一組數(shù)據(jù)節(jié)點(diǎn);按照可靠性評估值的高低順序,選擇出排序靠前的第二預(yù)設(shè)數(shù)量的第二組數(shù)據(jù)節(jié)點(diǎn);以及,根據(jù)預(yù)設(shè)存儲策略選擇出第三預(yù)設(shè)數(shù)量的第三組數(shù)據(jù)節(jié)點(diǎn);

      第二選擇模塊40,用于根據(jù)第一組數(shù)據(jù)節(jié)點(diǎn)、第二組數(shù)據(jù)節(jié)點(diǎn)以及第三組數(shù)據(jù)節(jié)點(diǎn),篩選出用于當(dāng)前數(shù)據(jù)存儲的N個目標(biāo)數(shù)據(jù)節(jié)點(diǎn),其中,所述N個目標(biāo)數(shù)據(jù)節(jié)點(diǎn)是根據(jù)數(shù)據(jù)節(jié)點(diǎn)在第一組數(shù)據(jù)節(jié)點(diǎn)、第二組數(shù)據(jù)節(jié)點(diǎn)以及第三組數(shù)據(jù)節(jié)點(diǎn)中出現(xiàn)次數(shù)的高低排序,選擇出的前N個數(shù)據(jù)節(jié)點(diǎn)。

      在本發(fā)明上述實施例中,所述處理模塊10進(jìn)一步用于

      針對每個數(shù)據(jù)節(jié)點(diǎn),計算該數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)信息與對應(yīng)權(quán)值的乘積的和值,得到該數(shù)據(jù)節(jié)點(diǎn)的健康性評估值。

      在本發(fā)明上述實施例中,所述處理模塊10中各個數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)信息至少包括以下信息中的兩種:磁盤容量、磁盤剩余量、磁盤IO性能、內(nèi)存大小、空閑內(nèi)存、CPU空閑率、網(wǎng)絡(luò)性能以及空閑帶寬。

      在本發(fā)明上述實施例中,所述計算模塊20進(jìn)一步用于

      根據(jù)數(shù)據(jù)節(jié)點(diǎn)每次宕機(jī)恢復(fù)后的存活時間,數(shù)據(jù)節(jié)點(diǎn)初次加入系統(tǒng)的時間,系統(tǒng)當(dāng)前時間SystemTime以及第i個數(shù)據(jù)節(jié)點(diǎn)從最初加入系統(tǒng)至當(dāng)前時間共發(fā)生的宕機(jī)事件次數(shù),根據(jù)以下公式計算出各個數(shù)據(jù)節(jié)點(diǎn)i的可靠性:

      <mrow> <mi>Node</mi> <mo>_</mo> <mi>Relability</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>A</mi> <mo>&times;</mo> <mfrac> <mrow> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>k</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </munderover> <mo>[</mo> <mi>AliveTime</mi> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>&times;</mo> <mfrac> <mi>j</mi> <mrow> <mi>k</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>]</mo> </mrow> <mrow> <mi>SystemTime</mi> <mo>-</mo> <mi>EnterTime</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>+</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>A</mi> <mo>)</mo> </mrow> <mo>&times;</mo> <mfrac> <mn>1</mn> <mrow> <mi>k</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> </mrow>

      其中:k(i)表示第i個數(shù)據(jù)節(jié)點(diǎn)從最初加入系統(tǒng)至當(dāng)前時間共發(fā)生的宕機(jī)事件次數(shù),j表示第j次宕機(jī)事件,AliveTime(j)表示數(shù)據(jù)節(jié)點(diǎn)第j次宕機(jī)恢復(fù)后的存活時間,EnterTime(i)表示第i個數(shù)據(jù)節(jié)點(diǎn)初次加入系統(tǒng)的時間,A表示存活時間的權(quán)重,(1—A)表示宕機(jī)次數(shù)的權(quán)重。

      在本發(fā)明上述實施例中,所述第二選擇模塊40包括:

      第一子單元41,用于計算第一組數(shù)據(jù)節(jié)點(diǎn)、第二組數(shù)據(jù)節(jié)點(diǎn)和第三組數(shù) 據(jù)節(jié)點(diǎn)的交集得到第一交集結(jié)果,當(dāng)所述第一交集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于預(yù)設(shè)值N時,選擇N個數(shù)據(jù)節(jié)點(diǎn)作為所述目標(biāo)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲;

      第二子單元42,用于當(dāng)所述第一交集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于N時,計算第一組數(shù)據(jù)節(jié)點(diǎn)與第二組數(shù)據(jù)節(jié)點(diǎn)的交集得到第二交集結(jié)果,計算所述第一交集結(jié)果與所述第二交集結(jié)果的并集,得到第一并集結(jié)果,當(dāng)所述第一并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于N時,選擇N個數(shù)據(jù)節(jié)點(diǎn)作為所述目標(biāo)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲;

      第三子單元43,用于當(dāng)所述第一并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于N時,計算第一組數(shù)據(jù)節(jié)點(diǎn)與第三組數(shù)據(jù)節(jié)點(diǎn)的交集得到第三交集結(jié)果;計算所述第一并集結(jié)果和所述第三交集結(jié)果的并集得到第二并集結(jié)果,當(dāng)所述第二并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于N時,選擇N個數(shù)據(jù)節(jié)點(diǎn)作為所述目標(biāo)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲;

      第四子單元44,用于當(dāng)所述第二并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于N時,計算第二組數(shù)據(jù)節(jié)點(diǎn)與第三組數(shù)據(jù)節(jié)點(diǎn)的交集得到第四交集結(jié)果;計算所述第二并集結(jié)果與所述第四交集結(jié)果的并集得到第三并集結(jié)果,當(dāng)所述第三并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)大于等于N時,選擇N個數(shù)據(jù)節(jié)點(diǎn)作為所述目標(biāo)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲;

      第五子單元45,用于當(dāng)所述第三并集結(jié)果中的數(shù)據(jù)節(jié)點(diǎn)的個數(shù)小于N時,則在增加所述第一預(yù)設(shè)數(shù)量、第二預(yù)設(shè)數(shù)量、第三預(yù)設(shè)數(shù)量后,觸發(fā)所述第一選擇模塊按照健康性評估值的優(yōu)劣的先后順序,選擇出排序靠前的第一預(yù)設(shè)數(shù)量的第一組數(shù)據(jù)節(jié)點(diǎn);按照可靠性評估值的高低順序,選擇出排序靠前的第二預(yù)設(shè)數(shù)量的第二組數(shù)據(jù)節(jié)點(diǎn);以及,根據(jù)預(yù)設(shè)存儲策略選擇出第三預(yù)設(shè)數(shù)量的第三組數(shù)據(jù)節(jié)點(diǎn)。

      本發(fā)明實施例一種Hadoop分布式文件系統(tǒng)的存儲方法,通過采集更多的節(jié)點(diǎn)狀態(tài)信息,計算得到健康性評估值,提高數(shù)據(jù)存儲效率;同時增加了可靠性評價機(jī)制,對數(shù)據(jù)節(jié)點(diǎn)的可靠性實時進(jìn)行評估,為數(shù)據(jù)存儲提供更好的可靠性保證。采用簡單易行的基于多因素的存儲選擇策略及選擇算法,提高了數(shù)據(jù)節(jié)點(diǎn)的選擇效率,帶來更好的用戶體驗。

      需要說明的是,本發(fā)明提供的Hadoop分布式文件系統(tǒng)的存儲裝置是應(yīng)用 上述方法的裝置,則上述方法的所有實施例均適用于該裝置,且均能達(dá)到相同或相似的有益效果。

      以上所述的是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出對于本技術(shù)領(lǐng)域的普通人員來說,在不脫離本發(fā)明所述的原理前提下還可以作出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也在本發(fā)明的保護(hù)范圍內(nèi)。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1