Как настроить Titan со встроенными Cassandra и Rexster
Я пытаюсь настроить Titan (сервер 0.4.4) со встроенной Cassandra. Моя среда - Windows 8.1 x64 + Cygwin. Установка находится в E:\titan-server-0.4.4.
Мне также нужно иметь доступ к этой настройке через Rexster.
Для моей конфигурации я ссылался на https://github.com/thinkaurelius/titan/wiki/Using-Cassandra. Я изменил конфигурацию графа E:\titan-server-0.4.4\conf\rexster-cassandra-es.xml раздел графика для
<graph>
<graph-name>graph</graph-name>
<graph-type>com.thinkaurelius.titan.tinkerpop.rexster.TitanGraphConfiguration</graph-type>
<graph-read-only>false</graph-read-only>
<properties>
<auto-type>none</auto-type>
<storage.batch-loading>true</storage.batch-loading>
<storage.cassandra-config-dir>file:///E:\titan-server-0.4.4\conf\cassandra.yaml</storage.cassandra-config-dir>
<storage.backend>embeddedcassandra</storage.backend>
<storage.index.search.backend>elasticsearch</storage.index.search.backend>
<storage.index.search.directory>../db/es</storage.index.search.directory>
<storage.index.search.client-only>false</storage.index.search.client-only>
<storage.index.search.local-mode>true</storage.index.search.local-mode>
</properties>
<extensions>
<allows>
<allow>tp:gremlin</allow>
</allows>
</extensions>
</graph>
(Заметка
<auto-type>none</auto-type>
<storage.batch-loading>true</storage.batch-loading>
они позволяют массовую вставку. Вся идея встроенного Cassandra заключается в улучшении производительности вставки.)
Однако, когда я попытался запустить службу с запуском./bin/titan.sh -v, запуск не удался:
org.apache.cassandra.exceptions.ConfigurationException: localhost / 127.0.0.1: 7000 используется другим процессом. Измените listen_address:storage_port в cassandra.yaml на значения, которые не конфликтуют с другими службами в org.apache.cassandra.net.MessagingService.getServerSocket(MessagingService.java:439) в org.apache.cassandra.net.MessagingService.listen(MessagingService.java:387) в org.apache.cassandra.service.StorageService.joinTokenRing(StorageService.java:549) в org.apache.cassandra.service.StorageService.initServer(StorageService.java:514) в org.apache.cass service.StorageService.initServer(StorageService.java:411) в org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:278) в org.apache.cassandra.service.CassandraDaemon.activate(Cassandramon.acraate (Cassandra). в org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:409) в com.thinkaurelius.titan.diskstorage.cassandra.utils.CassandraDaemonWrapper.start(CassandraDaemonWrapper.javatisure.a.cassandra.embedded.CassandraEmbeddedStoreManager.(CassandraEmbeddedStoreManager. Java:102) в sun.reflect.NativeConstructorAccessorImpl.newInstance0(собственный метод) в sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) в sun.reflect.DelegatingConstructorAccessorInjjjjj.jpg.reflect.Constructor.newInstance(Constructor.java:408) в com.thinkaurelius.titan.diskstorage.Backend.instantiate(Backend.java:344) в com.thinkaurelius.titan.diskstorage.Backend.getImplementationjlass:36) в com.thinkaurelius.titan.diskstorage.Backend.getStorageManager(Backend.java:311) в com.thinkaurelius.titan.diskstorage.Backend.(Backend.java:121) в com.thinkaurelius.titan.graphdb.configuration.getBackend(GraphDatabaseConfiguration.java:1173) в com.thinkaurelius.titan.graphdb.database.StandardTitanGraph.(StandardTitanGraph.java:75) в com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:40).thinkaurelius.titan.tinkerpop.rexster.TitanGraphConfiguration.configureGraphInstance(TitanGraphConfiguration.java:25) по адресу com.tinkerpop.rexster.config.GraphConfigurationContainer.getGraphFromConfiguration(GraphConfigurationContainer.java:119) по адресу com.tinkerpop.rexster.configuration.conx.conf.tinkerpop.rexster.server.XmlRexsterApplication.reconfigure(XmlRexsterApplication.java:99) в com.tinkerpop.rexster.server.XmlRexsterApplication.(XmlRexsterApplication.java:47) в com.tinkerpop.rexster.Alication.Application.jl. at com.tinkerpop.rexster.Application.main(Application.java:188) localhost/127.0.0.1:7000 используется другим процессом. Измените listen_address:storage_port в cassandra.yaml на значения, которые не конфликтуют с другими службами
Я попытался изменить порты в "E:\titan-server-0.4.4\conf\cassandra.yaml", но после некоторого исследования я понял, что порт фактически занят самой Кассандрой, то есть в этой конфигурации./bin/titan.sh -v start пытается запустить несколько экземпляров Cassandra?!
Я скопировал cassandra.yaml в cassandra2.yaml с различными настройками порта и указал путь к cassandra2.yaml в конфигурации xml графика. После этого я смог запустить Rexster со встроенными Titan и Cassandra, запустив./bin/titan.sh -v start.
Тем не менее, я твердо верю, что что-то не так с этой настройкой. Кроме того, система не ведет себя хорошо - иногда я не могу сохранить график в оболочке Gremlin от Rexster, используя g.commit()
- команда выполнена успешно, но ничего не сохраняется.
Так что это правильный способ запустить Титан со встроенной Кассандрой? Какая конфигурация должна быть?
1 ответ
Если вы используете сервер Titan через скрипт shell или bat, он автоматически запустит для вас экземпляр Titan и попытается подключиться к нему через localhost. Когда вы настроили его на использование встроенной Cassandra, эти два экземпляра естественным образом конфликтуют.
Есть ли конкретная причина, по которой вы хотите использовать Cassandra Embedded. Я настоятельно рекомендую вам сначала попробовать готовую версию. Встраиваемый Cassandra в основном предназначен для приложений с малой задержкой и требует глубокого понимания JVM.
Удачи!