Можно ли хранить графики hbase?если да, то как вы моделируете базу данных для поддержки структуры графа? - PullRequest
5 голосов
/ 26 марта 2012

Я играл с использованием графиков для анализа больших данных. Он работал отлично и действительно весело, но мне интересно, что делать, когда данные становятся все больше и больше?

Дайте мне знать, если есть какое-либо другое решение, но я подумал о том, чтобы попробовать Hbase, потому что он масштабируется горизонтально, и я могу заставить Hadoop запускать аналитику на графике (большая часть моего кода уже написана на Java), но я не уверен, как структурировать граф на базе данных nosql? Я знаю, что каждый узел может быть записью в базе данных, но я не уверен, как моделировать ребра и добавлять к ним свойства (например, имя узлов, атрибуты, pagerank, веса на ребрах и т. Д.).

Видя, как hbase / hadoop моделируется после больших таблиц и уменьшения карты, я подозреваю, что есть способ сделать это, но не уверен, как. Есть предложения?

Кроме того, имеет ли это смысл, что я пытаюсь сделать? или есть ли лучшие решения для больших графов данных?

Ответы [ 4 ]

6 голосов
/ 26 марта 2012

Вы можете сохранить список смежности в 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, либо в Value

С точки зрения обработки графа, как упомянуто @Arnon Rotem-Gal-Oz вы можете посмотреть на Apache Giraph , который является реализацией Google Pregel.Pregel - это метод, который Google использует для обработки больших графов.

Использование HBase / Accumulo в качестве входных данных для giraph было отправлено недавно (7 марта 2012 г.) в качестве запроса новой функции для Giraph: HBase / Accumulo Input andВыходные форматы (GIRAPH-153)

2 голосов
/ 26 марта 2012

Вы можете сохранить график в HBase в виде списка смежности, так что, например, каждый raw будет иметь столбцы для общих свойств (name, pagerank и т. Д.) И список ключей смежных узлов (если это ориентированный граф, а не только узлы).вы можете добраться до этого узла или из дополнительного столбца с указанием каждого из них)

Взгляните на apache Giraph (вы также можете прочитать об этом чуть подробнее здесь ), хотя речь идет не о HBase, а об обработке графиков в Hadoop.Также вы можете захотеть взглянуть на Hadoop 0.23 (и выше), так как движок YARN (он же map / redu2) более открыт для алгоритмов, не связанных с картой / Reduce

1 голос
/ 26 октября 2016

Существуют графические базы данных, построенные на основе HBase, которые вы можете попробовать и / или изучить.

Apache S2Graph предоставляет REST API для хранения, запроса данных графа, представленных ребром и вершинами. Там вы можете найти презентацию, в которой объясняется конструкция ключей строк / столбцов. Анализ производительности операций, которые повлияли или влияют на дизайн также приведены.

Titan может использовать другие бэкэнды хранилища помимо HBase и имеет интеграцию с аналитическими средами. Он также разработан с учетом больших объемов данных.

1 голос
/ 21 октября 2013

Я бы не использовал HBase так, как это рекомендовал "Binary Nerd" , поскольку HBase не очень хорошо работает при обработке нескольких семейств столбцов .

Наилучшая производительность достигается с одним семейством столбцов (второй следует использовать только в том случае, если вы очень часто обращаетесь только к содержимому одного семейства столбцов, а данные, хранящиеся в другом семействе столбцов, очень велики)

...