Intereting Posts

Узел Titan не появляется

У меня небольшой кластер Titan 0.5.0 с 8 узлами. Каждый узел запускает Titan в Rexster 2.5.0 и Cassandra. Все они настроены одинаково. К сожалению, почти все время одному из них не удается начать.
В большинстве случаев это один из семенных узлов.

Используя cassandra качестве хранилища, я получаю следующее в журнале Rexster / Titan.

 WARN com.tinkerpop.rexster.config.GraphConfigurationContainer - Could not open global configuration com.thinkaurelius.titan.core.TitanException: Could not open global configuration at com.thinkaurelius.titan.diskstorage.Backend. getStandaloneGlobalConfiguration(Backend.java: 405) ... Caused by: com.thinkaurelius.titan.diskstorage.TemporaryBackendException: Temporary failure in storage backend at com.thinkaurelius.titan.diskstorage.cassandra.astyanax. AstyanaxStoreManager.ensureColumnFamilyExists(AstyanaxStoreManager.java:446) ... Caused by: com.netflix.astyanax.connectionpool.exceptions.BadRequestException: BadRequestException: [host=192.168.0.10(192.168.0.10):9160, latency=496(496), attempts=1] InvalidRequestException(why:Cannot add already existing column family "system_properties" to keyspace "titan") at com.netflix.astyanax.thrift.ThriftConverter.ToConnectionPoolException( ThriftConverter.java:159) 

Rexster не запускается и, следовательно, не загружает график. Тем не менее, узел Cassandra Rexster не смог подключиться, кажется, все в порядке: nodetool перечисляет узел как часть кольца. Если я запускаю запросы против остальных экземпляров Rexster, все работает.

Я удалил все данные перед запуском узлов.

Я переключился на cassandrathrift привело к аналогичному исключению (такое же TitanException, вызванное PermanentBackendException, вызванное TimeoutException). Тайм-аут хранения в Rexster составляет 30 секунд. Это может быть слишком низким, так как я начинаю все узлы одновременно, но не объясняю проблемы с cassandra .

Что здесь происходит?

Редактировать :

Я злоупотреблял Титаном. Не нужно иметь дело с созданием индекса при запуске, что часто случается в моем случае – я создал индекс в расширении Rexster. Я думаю, что этот код вызывался несколько раз: когда я запускал несколько узлов одновременно, кажется, некоторые из них пытались создать индекс.

Вопрос: Есть ли способ, которым расширение может безопасно создавать индексы? Я создал отдельный stream для этого: каковы методы создания индексов?

Я увеличил тайм-аут хранения до 60 секунд и повторил процедуру после удаления создания индекса из кода. Я все еще запускаю все узлы одновременно. Опять один узел Rexstitan (начальный узел №2) не запускается.

В журнале Cassandra действительно есть исключение

 java.lang.IllegalArgumentException: Unknown keyspace/cf pair (titan.txlog) at org.apache.cassandra.db.Keyspace.getColumnFamilyStore(Keyspace.java:166) at org.apache.cassandra.db.Keyspace.getRow(Keyspace.java:326) at org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:65) at org.apache.cassandra.db.ReadVerbHandler.doVerb(ReadVerbHandler.java:47) at org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:60) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) 

которые я вижу в обоих семенных узлах. Хотя Rexster на одном семенном узле, похоже, не заботится о том, чтобы другой экземпляр Rexster не запускался с

 Caused by: com.netflix.astyanax.connectionpool.exceptions.BadRequestException: BadRequestException: [host=192.168.0.10(192.168.0.10):9160, latency=66(66), attempts=1]InvalidRequestException(why:Cannot add already existing column family "graphindex_lock_" to keyspace "titan") at com.netflix.astyanax.thrift.ThriftConverter.ToConnectionPoolException(ThriftConverter.java:159) at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:65) at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:28) at com.netflix.astyanax.thrift.ThriftSyncConnectionFactoryImpl$ThriftConnection.execute(ThriftSyncConnectionFactoryImpl.java:151) at com.netflix.astyanax.connectionpool.impl.AbstractExecuteWithFailoverImpl.tryOperation(AbstractExecuteWithFailoverImpl.java:119) at com.netflix.astyanax.connectionpool.impl.AbstractHostPartitionConnectionPool.executeWithFailover(AbstractHostPartitionConnectionPool.java:338) at com.netflix.astyanax.thrift.ThriftClusterImpl.executeSchemaChangeOperation(ThriftClusterImpl.java:146) at com.netflix.astyanax.thrift.ThriftClusterImpl.internalCreateColumnFamily(ThriftClusterImpl.java:240) 

в rexstitan.log . Звучит очень похоже на исключения, поднятые раньше.

Просто уточнить: с ошибкой я имею в виду, что Rexster запущен и может быть запрошен, но не смог загрузить график графика Titan.

Возможно, мне нужно уменьшить размер до минимума, чтобы проверить, связано ли это с размером кластера.

edit # 2 :

Это не связано с размером кластера. И это становится очень раздражающим. Иногда это BadRequestException выше, иногда это BadRequestException потому что уже есть keypace «titan». Или это IllegalArgumentException :

 2646 [main] WARN com.tinkerpop.rexster.config.GraphConfigurationContainer - Database has already been initialized but not frozen java.lang.IllegalArgumentException: Database has already been initialized but not frozen at com.google.common.base.Preconditions.checkArgument(Preconditions.java:93) at com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration.(GraphDatabaseConfiguration.java:1294) at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:93) at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:73) at com.thinkaurelius.titan.tinkerpop.rexster.TitanGraphConfiguration.configureGraphInstance(TitanGraphConfiguration.java:33) at com.tinkerpop.rexster.config.GraphConfigurationContainer.getGraphFromConfiguration(GraphConfigurationContainer.java:124) at com.tinkerpop.rexster.config.GraphConfigurationContainer.(GraphConfigurationContainer.java:54) at com.tinkerpop.rexster.server.XmlRexsterApplication.reconfigure(XmlRexsterApplication.java:99) at com.tinkerpop.rexster.server.XmlRexsterApplication.(XmlRexsterApplication.java:47) at com.tinkerpop.rexster.Application.(Application.java:97) at com.tinkerpop.rexster.Application.main(Application.java:189) 

Невозможно ли запустить сразу несколько узлов, они конфликтуют? Это единственная причина, по которой я могу думать, потому что я могу получить какое-либо исключение, и иногда она работает нормально.

Проблема заключается в одновременном запуске узлов Titan. (версия 0.5.0 )
Чем больше узлов вы запускаете за один раз, тем более вероятным является BadRequestException , поскольку все узлы пытаются одновременно создавать те же семейства ключей / столбцов в кластере Cassandra.

Чтобы преодолеть эту проблему, вы должны

  1. запустите Cassandra (все узлы одновременно прекрасны)
  2. запустите один узел Titan
  3. откройте консоль Rexster на этом узле, создайте схему и индексы
  4. запустите остальные узлы Titan