2012-03-26 7 views
5

Mi sono divertito a usare i grafici per analizzare i big data. Sta funzionando benissimo e davvero divertente, ma mi chiedo cosa fare man mano che i dati diventano sempre più grandi?È possibile memorizzare grafici hbase? se sì, come si modella il database per supportare una struttura grafica?

Fatemi sapere se c'è qualche altra soluzione, ma ho pensato di provare HBase perché scale orizzontale e posso ottenere Hadoop per l'esecuzione di analisi sul grafico (la maggior parte del mio codice è già scritto in Java), ma io sono sicuro come strutturare un grafico su un database nosql? So che ogni nodo può essere una voce nel database ma non sono sicuro di come modellare i bordi e aggiungere proprietà a loro (come il nome di nodi, attributi, pagerank, pesi sui bordi, ecc.).

Vedere come hbase/hadoop viene modellato dopo la riduzione di tabelle e mappe grandi. Sospetto che ci sia un modo per farlo, ma non si sa come. Eventuali suggerimenti?

Inoltre, questo ha senso che sto cercando di fare? o ci sono soluzioni migliori per i grafici dei big data?

+0

Al punto - È possibile memorizzare grafici in Hbase. Ma non è la soluzione migliore per gestire i dati collegati. La traversata sarebbe soggetta a problemi. È necessario utilizzare i filtri per il recupero in base ai valori (valori delle proprietà) nel caso in cui il nodoide (nodo src) venga utilizzato come chiave di riga. Il modo migliore sarebbe utilizzare i database Graph disponibili che supportano BigData. Questo è solo un suggerimento, non una risposta, quindi sto aggiungendo questo attraverso il blocco dei commenti. –

risposta

6

Puoi memorizzare una lista di adiacenze in HBase/Accumulo in un colonna orientata alla moda. Sono più familiarità con Accumulo (HBase terminologia potrebbe essere leggermente diverso) in modo si potrebbe utilizzare uno schema simile a:

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

dove CF = ColumnFamily e CFQ = ColumnFamilyQualifier

Potrebbero nodo negozio/vertex proprietà come righe separate utilizzando qualcosa come:

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

il PropertyValue potrebbero essere sia in CFQ o Valore

Da un processo grafico In prospettiva, come menzionato da @Arnon Rotem-Gal-Oz, puoi guardare Apache Giraph che è un'implementazione di Google Pregel. Pregel è il metodo utilizzato da Google per l'elaborazione di grandi grafici.

Utilizzando HBase/Accumulo come input per giraph è stata presentata di recente (7 mar 2012) come una nuova richiesta di funzionalità di Giraph: HBase/Accumulo Input and Output formats (GIRAPH-153)

2

È possibile memorizzare il grafico in HBase come elenco di adiacenza in modo che, ad esempio, ogni raw abbia colonne per proprietà generali (nome, pagerank ecc.) E un elenco di chiavi di nodi adiacenti (se si tratta di un grafico diretto anziché solo i nodi si può arrivare a da questo nodo o una colonna aggiuntiva con la direzione di ciascuna)

Date un'occhiata a apache Giraph (si può anche leggere un po 'di più su di esso here), mentre non si tratta di HBase si tratta di manipolazione grafici in Hadoop. Inoltre potresti voler guardare Hadoop 0.23 (e su) come il motore YARN (aka map/reduce2) è più aperto agli algoritmi non-map/riduci

1

Non userei HBase nel modo "Nerd Binary "lo raccomandò as HBase does not perform very well when handling multiple column families.

Le migliori prestazioni si ottiene con una sola famiglia colonna (a seconda deve essere utilizzato solo se molto spesso accedere solo il contenuto di una famiglia colonna e i dati memorizzati nel l'altra famiglia colonna è molto grande)

+0

non è necessario utilizzare più famiglie di colonne. Uno solo, sarebbe sufficiente. Un secondo specializzato per Edges funzionerebbe ancora correttamente. La raccomandazione è fino a due. Tuttavia, puoi conservare i bordi sotto una colonna dedicata sotto una singola famiglia di colonne. – gextra

1

Ci sono database grafici costruiti sopra HBase che potresti provare e/o studiare.

Apache S2Graph fornisce API REST per l'archiviazione, l'interrogazione dei dati del grafico rappresentati da spigoli e vertici.Lì puoi trovare una presentazione, in cui viene spiegata la costruzione dei tasti riga/colonna. Vengono anche fornite analisi delle prestazioni delle operazioni influenzate o influenzate dal design.

Titan può utilizzare altri back-end di memorizzazione oltre a HBase e ha l'integrazione con i quadri di analisi. Inoltre è progettato con grandi set di dati in mente.