Гремлин - Жираф - GraphX? На ТитанДб

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

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

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

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

Хорошего дня.


person dede    schedule 17.03.2015    source источник
comment
Обратите внимание на файл read-cassandra.properties в стандартном дистрибутиве titan-1.0.0-hadoop1; он включает конфигурацию SparkGraphComputer   -  person arivero    schedule 29.03.2016


Ответы (2)


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

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

Apache Spark MLlib, похоже, ориентирован на будущее и широко поддерживается, их последние объявления касались новых алгоритмов машинного обучения, хотя 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 для 3 сред разработки: Scala, Java и Python.

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

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

person Luc    schedule 21.04.2015

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

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

Таким образом, это, по сути, разница между базой данных графов и системой обработки графов.

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

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

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

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

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

person sbhatt    schedule 25.03.2015