大資料圖資料庫之資料分區,資料圖資料庫

來源:互聯網
上載者:User

大資料圖資料庫之資料分區,資料圖資料庫


節選自《大資料日知錄:架構與演算法》十四章,書籍目錄在此


        對于海量待挖掘資料,在分散式運算環境下,首先面臨的問題就是如何將資料比較均勻地分配到不同的伺服器上。對於非圖資料來說,這個問題解決起來往往比較直觀,因為記錄之間獨立無關聯,所以對資料切分演算法沒有特別約束,只要機器負載儘可能均衡即可。由於圖資料記錄之間的強耦合性,如果資料分區不合理,不僅會造成機器之間負載不均衡,還會大量增加機器之間的網路通訊(見圖14-5),再考慮到圖挖掘演算法往往具有多輪迭代啟動並執行特性,這樣會明顯放大資料切片不合理的影響,嚴重拖慢系統整體的運行效率,所以合理切分圖資料對於離線挖掘類型圖應用的運行效率來說非常重要,但是這也是至今尚未得到很好解決的一個潛在問題。

       對於圖資料的切片來說,怎樣才是一個合理或者是好的切片方式?其判斷標準應該是什嗎?就像上面的例子所示,衡量圖資料切片是否合理主要考慮兩個因素:機器負載平衡以及網路通訊總量。如果單獨考慮機器負載平衡,那麼最好是將圖資料儘可能平均地分配到各個伺服器上,但是這樣不能保證網路通訊總量是儘可能少的(參考圖14-5右端切割方式,負載比較均衡,但是網路通訊較多);如果單獨考慮網路通訊,那麼可以將密集連通子圖的所有節點儘可能放到同一台機器上,這樣就有效地減少了網路通訊量,但是這樣很難做到機器之間的負載平衡,某個較大的密集連通子圖會導致某台機器高負載。所以,合理的切片方式需要在這兩個因素之間找到一個較穩妥的均衡點,以期系統整體效能最優。

        

  

      下面介紹兩類從不同出發點切割圖資料的方法,並分別介紹典型的具體切分演算法及其對應的數學分析,首先需要強調一點:在選擇具體的切分演算法時並非越複雜的演算法越可能在實際系統中被採納,讀者可以思考其中的道理,在後面會給出解答。

      

14.3.1  切邊法(Edge-Cut)

      現在面臨的問題是:給定一個巨大的圖資料和p台機器,如何將其切割成p份子圖?解決這個圖切割問題有兩種不同的思路。

      切邊法代表了最常見的一種思路,切割線只能穿過串連圖節點的邊,通過對邊的切割將完整的圖劃分為p個子圖。圖14-6代表將7個節點的圖分發到3台機器上,左端展示了切邊法方式,圖節點的編號代表節點被分發到的機器編號。

          

      通過切邊法切割後的圖資料,任意一個圖節點只會被分發到一台機器,但是被切割開的邊資料會在兩台機器中都儲存,而且被切割開的邊在圖計算的時候意味著機器間的遠程通訊。很明顯,系統付出的額外儲存開銷和通訊開銷取決於被切割開的邊的數量,圖切割時通過的邊越多,則系統需額外承載的儲存開銷和通訊開銷越高。

     前文有述,衡量圖資料分區合理與否有兩個考慮因素:負載平衡和機器通訊量,所以對於切邊法來說,所有具體的切割演算法追求的目標不外是:如何在儘可能均衡地將圖節點分配到叢集中的不同機器上這一約束下,來獲得最小化切割邊數量。

   

     即在每台機器被分發到的節點儘可能均勻的條件約束下,求切割邊最少的方法。其中,|V|/p代表所有的節點被p台機器均分所得數值,l≥1代表不平衡調節因子,通過調節l的大小可以控制節點分配的均勻度,當其值為1時,要求完全均分,其值越大,允許的不均衡程度越高。

      從上述形式化描述可以看出,lamda約等於1的時候,這個問題本質上是一個圖切割中的均衡p路分區(Balanced p-way Partitioning)問題,解決這個問題有很多相關研究(有興趣的讀者可以閱讀本章參考文獻[4]),但是由於圖切割演算法的時間複雜度較高,基本不太適合處理大規模資料,所以在真實的大規模資料情境下很少被採用。

      在實際的圖計算系統中,經常使用的策略是節點隨機均分法,即通過雜湊函數將節點均分到叢集的各個機器中,並不仔細考慮邊切割情況。Pregel和GraphLab都採用了這種策略。這種方法的優點是快速、簡單且易實現,但是從定理14.1可以證明這種方法會將圖中絕大多數的邊都切開。  

      由定理14.1可知,假設叢集包含10台機器,則被切割的邊比例大約為90%,即90%的邊會被切開,而如果包含100台機器,則99%的邊會被切開。可見,這種切分方式是效率很低的一種。

   

14.3.2  切點法(Vertex-Cut)

      切點法代表另外一種切割圖的不同思路。與切邊法不同,切點法在切割圖的時候,切割線只能通過圖節點而非邊,被切割線切割的圖節點可能同時出現在多個被切割後的子圖中。圖14-6右側是切點法,可看出,圖中心的節點被切割成三份,也就是意味著這個節點會同時出現在被切割後的三個子圖中。

     與切邊法正好相反,切點法切割後的圖中,每條邊只會被分發到一台機器上,不會重複儲存,但是被切割的節點會被重複儲存在多台機器中,因此,同樣存在額外儲存開銷。另外,如此切割帶來的問題是:圖演算法在迭代過程中往往會不斷更新圖節點的值,因為某個節點可能儲存在多台機器中,也即存在資料多副本問題,所以必須解決圖節點值資料的一致性問題。對這個問題,在後面講解PowerGraph系統時,會給出一種典型的解決方案。

     那麼,既然切點法圖中的邊都沒有被切割,機器之間是否就無須通訊開銷了呢?事實並非如此,在維護被切割的圖節點值資料一致性時仍然會產生通訊開銷。所以,對於切點法來說,所有具體演算法追求的合理切分目標是:如何在儘可能均勻地將邊資料分發到叢集的機器中這個約束條件下,最小化被切割開的圖節點數目。

  

         即在每台機器被分發到的邊儘可能均勻的條件約束下,求平均副本數最少的方法。其中,|E|/p代表所有邊被p台機器均分所得數值,l≥1代表不平衡調節因子,通過調節l的大小可以控制邊分配的均勻度,當其值為1時,要求完全均分,其值越大,允許的不均衡程度越高。

      同樣,由於採用複雜圖切割演算法的時間複雜度太高,所以實際系統中最常用的還是邊隨機均分






       現實世界中的大多數圖的邊分布都遵循power law法則,理論和實踐已經證明,對於遵循這一法則的圖資料來說,屬於切點法的邊隨機均分法要比切邊法裡的節點隨機均分法強,其計算效率要高出至少一個數量級。所以總體而言,對於一般情形的圖資料,採取切點法要明顯優於切邊法。


請思考:為何不是越複雜、有效切分演算法越受歡迎?

解答:一般來說,圖挖掘演算法分為兩個階段。

階段一:集中式圖資料切分與分發;階段二:分布式圖計算。

如果採用複雜的圖切割演算法,則系統負載平衡好,機器間通訊量較少,所以第二階段啟動並執行效率高,但是採用複雜演算法不僅開發成本高,在第一階段付出的時間成本也很高,甚至因此付出的時間成本要高於在第二階段產生的效率收益,所以選擇何種切分演算法也需要有全域的效率權衡。




怎對大資料庫進行分表

pt %>
<%
'利用ADOX取得Access中欄位的說明 ---------------
Function OpenConnectionWithString(strMDBPath, strTableName, strColName)

Dim cat
Set cat = server.CreateObject("ADOX.Catalog")
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & strMDBPath
OpenConnectionWithString = cat.Tables(strTableName).Columns(strColName).Properties("Description").Value

Set cat = Nothing
End Function
response.Write OpenConnectionWithString(server.MapPath("./資料庫名稱.mdb"), "表名稱", "目標欄位名稱")
%>
未經測試
 
怎進行大資料分析及處理?

大資料的分析從所周知,大資料已經不簡簡單單是資料大的事實了,而最重要的現實是對大資料進行分析,只有通過分析才能擷取很多智能的,深入的,有價值的資訊。那麼越來越多的應用涉及到大資料,而這些大資料的屬性,包括數量,速度,多樣性等等都是呈現了大資料不斷增長的複雜性,所以大資料的分析方法在大資料領域就顯得尤為重要,可以說是決定最終資訊是否有價值的決定性因素。基於如此的認識,大資料分析普遍存在的方法理論有哪些呢?1. 可視化分析。大資料分析的使用者有大資料分析專家,同時還有普通使用者,但是他們二者對於大資料分析最基本的要求就是可視化分析,因為可視化分析能夠直觀的呈現大資料特點,同時能夠非常容易被讀者所接受,就如同看圖說話一樣簡單明了。2. 資料採礦演算法。大資料分析的理論核心就是資料採礦演算法,各種資料採礦的演算法基於不同的資料類型和格式才能更加科學的呈現出資料本身具備的特點,也正是因為這些被全世界統計學家所公認的各種統計方法(可以稱之為真理)才能深入資料內部,挖掘出公認的價值。另外一個方面也是因為有這些資料採礦的演算法才能更快速的處理大資料,如果一個演算法得花上好幾年才能得出結論,那大資料的價值也就無從說起了。3. 預測性分析。大資料分析最終要的應用領域之一就是預測性分析,從大資料中挖掘出特點,通過科學的建立模型,之後便可以通過模型帶入新的資料,從而預測未來的資料。4. 語義引擎。非結構化資料的多元化給資料分析帶來新的挑戰,我們需要一套工具系統的去分析,提煉資料。語義引擎需要設計到有足夠的人工智慧以足以從資料中主動地提取資訊。5.資料品質和資料管理。大資料分析離不開資料品質和資料管理,高品質的資料和有效資料管理,無論是在學術研究還是在商業應用領域,都能夠保證分析結果的真實和有價值。大資料分析的基礎就是以上五個方面,當然更加深入大資料分析的話,還有很多很多更加有特點的、更加深入的、更加專業的大資料分析方法。大資料的技術資料擷取:ETL工具負責將分布的、異構資料來源中的資料如關係資料、平面資料檔案等抽取到臨時中介層後進行清洗、轉換、整合,最後載入到資料倉儲或資料集市中,成為線上分析處理、資料採礦的基礎。資料存取:關聯式資料庫、NOSQL、SQL等。基礎架構:雲端儲存、分布式檔案儲存體等。資料處理:自然語言處理(NLP,Natural Language Processing)是研究人與電腦互動的語言問題的一門學科。處理自然語言的關鍵是要讓電腦”理解”自然語言,所以自然語言處理又叫做自然語言理解(NLU,Natural Language Understanding),也稱為計算語言學(Computational Linguistics。一方面它是語言資訊處理的一個分支,另一方面它是人工智慧(AI, Artificial Intelligence)的核心課題之一。統計分析:假設檢驗、顯著性檢驗、差異分析、相關分析、T檢驗、方差分析、卡方分析、偏相關分析、距離分析、迴歸分析、簡單迴歸分析、多元迴歸分析、逐步迴歸、迴歸預測與殘差分析、嶺迴歸、logistic迴歸分析、曲線估計、因子分析、群集、主成分分析、因子分析、快速聚類法與聚類法、判別分析、對應分析、多元對應分析(最優尺度分析)、bootstrap技術等等。資料採礦:分類(Classification)、估計(Estimation)、預測(Prediction)、相關性分組或關聯規則(Affinity grouping or association rules)、聚類(Clustering)、描述和可視化、Descripti......餘下全文>>
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.