2014-12-17 2 views
0

Редакция:Titan BluePrints Rexster

У меня есть отдельная версия Cassandra. Я запускаю это, используя следующую команду:

./cassandra -f 

У меня также есть приложение Java, в котором установлена ​​библиотека графиков Titan. Для того, чтобы получить объект TitanGraph я использую следующий код:

BaseConfiguration configuration = new BaseConfiguration(); 
configuration.setProperty("storage.backend", "cassandra"); 
configuration.setProperty("storage.hostname", "127.0.0.1"); 
TitanGraph graph = TitanFactory.open(configuration); 

После этого я могу добавить Vertices/Edges и Query их. Я сделал дополнительную проверку по локальной базе данных Cassandra и может проверить, есть записи генерируется и сохраняется

cqlsh> select count(*) from titan.edgestore; 

count 
-------- 
185050 

(1 rows) 

Проблема возникает, когда я запускаю rexster-сервер. Я запускать это в автономном режиме с помощью следующей команды:

./rexster.sh -s -c ../config/rexster.xml 

Затем я запускаю консоль rexster и загрузите график. Проблемы в том, что на графике отсутствуют данные? Я действительно не уверен, что здесь происходит. Существует только 1 экземпляр Cassandra.

 (l_(l 
(_______(0 0 
(  (-Y-) <woof> 
l l-----l l 
l l,, l l,, 
opening session [127.0.0.1:8184] 
?h for help 

rexster[groovy]> ?h 
-= Console Specific =- 
?<language-name>: jump to engine 
?l: list of available languages on Rexster 
?b: print available bindings in the session 
?r: reset the rexster session 
?e <file-name>: execute a script file 
?q: quit 
?h: displays this message 

-= Rexster Context =- 
rexster.getGraph(graphName) - gets a Graph instance 
    :graphName - [String] - the name of a graph configured within Rexster 
rexster.getGraphNames() - gets the set of graph names configured within Rexster 
rexster.getVersion() - gets the version of Rexster server 

rexster[groovy]> rexster.getGraphNames() 
==>kpdlp 
rexster[groovy]> rexster.getGraph('graph') 
==>titangraph[cassandrathrift:[127.0.0.1]] 
rexster[groovy]> g = rexster.getGraph('graph') 
==>titangraph[cassandrathrift:[127.0.0.1]] 
rexster[groovy]> g.V.count() 
==>0 
rexster[groovy]> 

Ниже rexster.xml Я использую

<?xml version="1.0" encoding="UTF-8"?> 
<rexster> 
    <http> 
     <server-port>8182</server-port> 
     <server-host>0.0.0.0</server-host> 
     <base-uri>http://localhost</base-uri> 
     <web-root>public</web-root> 
     <character-set>UTF-8</character-set> 
     <enable-jmx>false</enable-jmx> 
     <enable-doghouse>true</enable-doghouse> 
     <max-post-size>2097152</max-post-size> 
     <max-header-size>8192</max-header-size> 
     <upload-timeout-millis>30000</upload-timeout-millis> 
     <thread-pool> 
      <worker> 
       <core-size>8</core-size> 
       <max-size>8</max-size> 
      </worker> 
      <kernal> 
       <core-size>4</core-size> 
       <max-size>4</max-size> 
      </kernal> 
     </thread-pool> 
     <io-strategy>leader-follower</io-strategy> 
    </http> 
    <rexpro> 
     <server-port>8184</server-port> 
     <server-host>0.0.0.0</server-host> 
     <session-max-idle>1790000</session-max-idle> 
     <session-check-interval>3000000</session-check-interval> 
     <read-buffer>65536</read-buffer> 
     <enable-jmx>false</enable-jmx> 
     <thread-pool> 
      <worker> 
       <core-size>8</core-size> 
       <max-size>8</max-size> 
      </worker> 
      <kernal> 
       <core-size>4</core-size> 
       <max-size>4</max-size> 
      </kernal> 
     </thread-pool> 
     <io-strategy>leader-follower</io-strategy> 
    </rexpro> 
    <shutdown-port>8183</shutdown-port> 
    <shutdown-host>127.0.0.1</shutdown-host> 
    <config-check-interval>10000</config-check-interval> 
    <script-engines> 
     <script-engine> 
      <name>gremlin-groovy</name> 
      <reset-threshold>-1</reset-threshold> 
      <init-scripts>config/init.groovy</init-scripts> 
      <imports>com.tinkerpop.rexster.client.*</imports> 
      <static-imports>java.lang.Math.PI</static-imports> 
     </script-engine> 
    </script-engines> 
    <security> 
     <authentication> 
      <type>none</type> 
      <configuration> 
       <users> 
        <user> 
         <username>rexster</username> 
         <password>rexster</password> 
        </user> 
       </users> 
      </configuration> 
     </authentication> 
    </security> 
    <metrics> 
     <reporter> 
      <type>jmx</type> 
     </reporter> 
     <reporter> 
      <type>http</type> 
     </reporter> 
     <reporter> 
      <type>console</type> 
      <properties> 
       <rates-time-unit>SECONDS</rates-time-unit> 
       <duration-time-unit>SECONDS</duration-time-unit> 
       <report-period>10</report-period> 
       <report-time-unit>MINUTES</report-time-unit> 
       <includes>http.rest.*</includes> 
       <excludes>http.rest.*.delete</excludes> 
      </properties> 
     </reporter> 
    </metrics> 
    <graphs> 
<graph> 
    <graph-name>graph</graph-name> 
    <graph-type>com.thinkaurelius.titan.tinkerpop.rexster.TitanGraphConfiguration</graph-type> 
    <graph-location></graph-location> 
    <graph-read-only>false</graph-read-only> 
    <properties> 
      <storage.backend>cassandrathrift</storage.backend> 
      <storage.hostname>127.0.0.1</storage.hostname> 
    </properties> 
    <extensions> 
     <allows> 
     <allow>tp:gremlin</allow> 
     </allows> 
    </extensions> 
    </graph> 
    </graphs> 
</rexster> 

ответ

0

Возможно, это просто какая-то путаница в роли Rexster в. Ваш вопрос:

Моя проблема заключается в том, что, когда я экземпляр TitanGraph с помощью TitanFactory, как показано ниже там, кажется, не будет возможность указать имя графа?

Обратите внимание, что использование TitanFactory откроет TitanGraph экземпляр, который подключается непосредственно к Кассандре. Это не имеет никакого отношения к Rexster. Если вы хотите подключиться к Rexster (который удаленно содержит экземпляр TitanGraph с учетом вашей конфигурации), вы должны сделать это через REST или RexPro. С более простым подходом для проверки операций, являющейся REST, пытаюсь завить:

curl http://localhost:8182/graphs 

Это должно вернуть некоторые JSON, который содержит имя TitanGraph экземпляра настроенных в <graph-name> поле в rexster.xml. <graph-name> просто идентифицирует экземпляр графа в Rexster, так что вы можете однозначно идентифицировать его в запросах, когда в нем есть несколько экземпляров.

+0

Это имеет смысл. Таким образом, имя в диаграмме Rexster не имеет ничего общего с подключением к Graph, это уникальный ключ для доступа к этому экземпляру, с которым Rexster подключается через API? Это очень помогает. У меня все еще есть проблема, что данные, которые я генерирую в своем приложении Java, не отображаются, когда я подключаюсь через Rexster. – NCALSTEVE

+0

вы можете сделать обратное? из консоли rexster добавьте вершину/фиксацию, а затем попытайтесь просмотреть, можете ли вы получить доступ к ней из экземпляра 'TitanGraph' в коде приложения (или в консоли Gremlin). Чаще всего проблемы, подобные этим, связаны с тем, чтобы не совершать транзакцию или каким-то образом указывать на неправильный экземпляр базы данных. Похоже, вы подтвердили, что ни одна из этих вещей не является вашей проблемой, но стоит снова рассмотреть ее. –

+0

Я видел эту ошибку в сервере rexster: Caused by: com.netflix.astyanax.connectionpool.exceptions.PoolTimeoutException: PoolTimeoutException: [host = 127.0.0.1 (127.0.0.1): 6534, latency = 10004 (10004), попытки = 1] Сроки ожидания подключения. Я использую последнюю версию cassandra. Это могут быть проблемы, связанные с Кассандрой? Странно то, что в gremlin, хотя я не могу видеть данные из приложения Java, я все еще могу создавать вершины и ребра, и они, похоже, сохраняются. Они не хранятся в базе данных cassandra. – NCALSTEVE

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