2015-03-17 3 views
6

Мне нужна помощь, чтобы подтвердить мой выбор ... и узнать, можете ли вы дать мне некоторую информацию. Моя база данных хранения TitanDb с Cassandra. У меня очень большой график. Моя цель - использовать Mllib на последнем графике.Gremlin - Giraph - GraphX? На TitanDb

Моя первая идея: использовать Titan с GraphX, но я ничего не нашел или не в разработке ... TinkerPop еще не готов. Итак, я смотрю на Дж. TinkerPop, Titan может комментировать с Rexster от TinkerPop.

Мой вопрос: Какая польза от использования Giraph? Гремлин, похоже, делает то же самое и распределяется.

Большое спасибо, чтобы объяснить мне. Я думаю, что я не совсем понимаю разницу между Гремлином и Джирафом (или GraphX).

Имейте славный день.

+0

Обратите внимание на файл read-cassandra.properties в стандартном дистрибутиве titan-1.0.0-hadoop1; он включает в себя «конфигурацию SparkGraphComputer», – arivero

ответ

8

Интересный вопрос. Я на том же пути.

Сначала ваш вопрос о MLlib. Я предполагаю, что вы имеете в виду Apache Spark MLlib, внедрение машинного обучения (ML) поверх Apache Spark.Итак, мой вывод: вы хотите запускать алгоритмы ML для таких целей, как кластеризация и классификация, используя данные в вашей базе данных графиков /Cassandra. Обратите внимание, что вы также можете использовать алгоритмы обработки графа, такие как Page Rank, упомянутые spidy, чтобы делать такие вещи, как кластеризация поверх вашей базы данных графа Titan/Cassandra. Другими словами: вам не нужна ML для кластеризации, когда отправной точкой является база данных графа.

Apache Spark MLlib, похоже, является будущим доказательством и широко поддерживается, их последние объявления касались новых алгоритмов ML, хотя Apache Mahout, еще один проект Apache ML, более зрел относительно количества поддерживаемых алгоритмов ML. Apache Mahout также использовал Apache Spark в качестве уровня хранения данных, поэтому поэтому я упоминаю его в этом сообщении. Apache Spark предлагает в дополнение к вычислениям в памяти упомянутый MLlib для машинного обучения Spark SQL, который похож на Hive на Spark, GraphX, который представляет собой систему обработки графиков, как объясняется spidy и Spark Streaming для обработки потоковых данных.

Я рассматриваю Apache Spark как логический уровень данных, представленный как RDD (Resilient Distributed Datasets) поверх слоев хранения, таких как Cassandra, Hadoop/Hcatalog и HBase. Apache Spark предлагает разъем для Cassandra. Обратите внимание, что RDD неизменяемы, вы не можете изменять данные с помощью Spark, вы можете обрабатывать и анализировать данные только в Spark. Что касается уровня логической памяти Apache Spark RDD: вы можете сравнить RDD как представление в старые добрые времена SQL, RDD дают вам представление, например, о таблице в Cassandra из HBase. Также обратите внимание, что Apache Spark предлагает API для трех сред разработки: Scala, Java и Python.

Apache Giraph также представляет собой набор инструментов обработки графиков, функциональный эквивалент Apache Spark GraphX. Apache Giraph использует Hadoop в качестве уровня хранения данных. Вы используете Titan/Cassandra, поэтому вы, вероятно, войдете в задачи переноса данных, когда вы выберите Apache Giraph в качестве своего решения. Во-вторых, вы начали свой пост с вопроса о ML, используя MLlib, и Apache Giraph не является решением ML.

Ваш вывод относительно Giraph и Gremlin неверен: они не совпадают, хотя оба используют базу данных графа. Giraph - это решение для обработки графа, как объяснено. Используя Giraph, вы можете выполнять алгоритмы анализа графа, такие как Page Rank, например. который имеет большинство последователей, тогда как Gremlin предназначен для перемещения, например. queery в базе данных графа, используя сложные отношения (ребра) между объектами (вершинами), получая наборы результатов вершин и свойств края.

9
  • Gremlin - это язык обхода графика, в то время как Giraph или Graphx - это система обработки графа.

Я считаю, что вы просите разницу между графикой или гироскопом и титаном. Чтобы быть более конкретным, почему вы должны использовать систему обработки графов, когда у вас уже есть данные в базе данных графов?

По существу, это разница между базой графов и системой обработки графов.

  • Графическая база данных - ваш парень, когда ваше приложение требует часто запрашивать данные. Например. для вида приложения facebook, учитывая пользователя, верните всех своих друзей. Это подходит для базы данных графов, и вы можете использовать gremlin для запроса.

  • Теперь, если вы хотите вычислить ранг каждого пользователя в facebook, вам нужно запустить алгоритм pagerank по всему графику. Другими словами, алгоритм pagerank обрабатывает весь ваш граф и возвращает вам карту. Это подходящее приложение для системы обработки графов. Да, вы можете писать запросы с использованием системы gremlin, чтобы сделать это, но 1. это не будет так же удобно, как базовая модель pregel, используемая giraph или graphx. 2. он не будет эффективным.

Подводя итог, это действительно зависит от вашего приложения. Если вы считаете, что ваше приложение похоже на запрос. Не загружайте загрузку в любую графическую систему. Если вы считаете, что ваше приложение больше похоже на pagerank (для этого требуется полный график), и у вас есть большой график (по крайней мере 1M ребер). Пойдите для giraph или graphx.

giraph и graphx имеет формат ввода графа. Вы можете выгружать данные в эту форму в файл и вносить их в одну из этих систем, или вы можете написать свой собственный формат ввода.

p.s. было бы неплохо добавить формат ввода, добавленный в giraph graphx, который принимает данные, хранящиеся в титане.

Смежные вопросы