2012-03-26 23 views
5

我一直在玩圖形來分析大數據。它工作得很好,真的很有趣,但我想知道隨着數據變得越來越大,該怎麼辦?是否可以存儲圖形hbase?如果是的話,你如何建模數據庫以支持圖結構?

讓我知道是否有任何其他解決方案,但我想嘗試Hbase,因爲它橫向擴展,我可以讓hadoop在圖上運行分析(大部分代碼已經用java編寫),但我不確定如何在nosql數據庫上構建圖表?我知道每個節點都可以是數據庫中的一個條目,但我不知道如何建模邊和爲它們添加屬性(如節點名稱,屬性,頁面排名,邊緣權重等)。

看到HBase的/ Hadoop是如何大表後,建模和地圖減輕我懷疑是有辦法做到這一點,但不知道如何。有什麼建議麼?

而且,這是否有意義我想要做什麼?還是有更好的大數據圖解?

+0

要點 - 您可以將圖形存儲在Hbase中。但它不是處理鏈接數據的最佳解決方案。遍歷將是問題容易的。如果將nodeid(src節點)用作行鍵,則需要使用過濾器進行基於值(屬性值)的檢索。更好的方法是使用支持BigData的可用圖形數據庫。這只是一個建議,而不是一個答案,因此我在評論塊中添加了這一點。 – 2014-03-14 08:25:10

回答

6

您可以將鄰接列表存儲在HBase/Accumulo中面向列的時尚。我更熟悉Accumulo(HBase的術語可能會略有不同),所以你可能會使用類似的模式:

SrcNode(RowKey) EdgeType(CF):DestNode(CFQ) Edge/Node Properties(Value) 

其中CF = ColumnFamily中和CFQ = ColumnFamilyQualifier

你也可以儲存節點/頂點使用像作爲單獨的行屬性:

Node(RowKey) PropertyType(CF):PropertyValue(CFQ) PropertyValue(Value) 

的的PropertyValue可以是任一在CFQ或價值

從圖形處理如@Arnon Rotem-Gal-Oz所述,您可以查看Google Pregel的實施Apache Giraph。 Pregel是Google用於大型圖形處理的方法。

使用HBase的/ Accumulo輸入到giraph最近已提交(7 2012年3月),作爲新的功能要求Giraph:HBase/Accumulo Input and Output formats(GIRAPH-153)

2

可以在HBase的圖形存儲爲鄰接列表,以便例如,每個原始將具有一般屬性(名稱,的PageRank等)和相鄰節點的密鑰的列表的列(如果它不僅僅是一個有向圖節點,你可以從這個節點或一個額外的列與每個方向)

看看apache Giraph(你也可以讀一點關於它here),而這不是關於HBase它是關於處理Hadoop中的圖表。 你也可能想看看Hadoop 0.23(及以上),因爲YARN引擎(又名map/reduce2)對非映射/縮減算法更開放

1

我不會在路上使用HBase的「二進制書呆子「推薦它as HBase does not perform very well when handling multiple column families

最佳性能與單個列族實現(如果你經常只訪問一個列族的內容和存儲在另一列家庭的數據是非常大的第二個應該只用於)

+0

你不需要使用多個列系列。一個,就足夠了。專門用於邊緣的第二個仍然會正常運行。該建議最多兩個。不過,您可以將邊緣存儲在單列家族下的專用列下。 – gextra 2014-03-03 13:19:38

1

有一些圖形數據庫可以在HBase之上構建,您可以嘗試和/或學習。

Apache S2Graph 提供REST API,用於存儲,查詢由邊緣和頂點表示的圖形數據。在那裏你可以找到一個演示文稿,其中解釋了行/列鍵的構造。還分析了影響或受設計影響的運營績效。

Titan 可以使用除HBase之外的其他存儲後端,並與分析框架集成。它也設計了大數據集。

相關問題