Совместимость с Kryo в Storm 0.9.1 и Titan graph database 0.4.2 с apache cassandra 2.0.7 в качестве серверной части хранилища

#apache-storm #titan #kryo

#apache-storm #titan #kryo

Вопрос:

Мы используем Storm 0.9.1, который использует Kryo 2.17. у нас есть модуль, который вставляет данные в базу данных titan graph, которая внутренне использует Kryo 2.21, что приводит к следующей проблеме:

java.lang.RuntimeException: com.esotericsoftware.kryo.Исключение KryoException: java.lang.Исключение IllegalArgumentException: невозможно установить com.thinkaurelius.titan.graphdb.types.Поле TypeAttributeType com.thinkaurelius.titan.graphdb.types.Введите атрибут.type в com.thinkaurelius.titan.graphdb.types.Трассировка сериализации атрибута TypeAttribute: введите (com.thinkaurelius.titan.graphdb.types.Атрибут типа)

Как нам исправить эту проблему, поскольку обновление Kryo до 2.21 в storm не приводит к такой ошибке метода. Мы также пытались понизить рейтинг Kryo до 2.17 в базе данных Titan graph, однако мы столкнулись с той же проблемой, что и выше.

Ответ №1:

Storm 0.9.1 и более ранние версии зависят от Carbonite 1.3.2, который зависит от kryo 2.17. Titan использует kryo 2.21, который несовместим с kryo 2.17

Загрузчик классов Java не может различать две версии kryo, вызывая исключение RuntimeException, которое вы видите.

Storm недавно обновилась до более новой версии Carbonite, которая использует kryo 2.21. Смотрите этот билет: https://issues.apache.org/jira/browse/STORM-263

Storm 0.9.2-incubating еще не выпущен, но он решает эту проблему. Мы успешно запустили Storm и Titan вместе. Таким образом, вы можете либо запустить собственную сборку storm 0.9.2-incubating, либо дождаться официального выпуска версии 0.9.2-incubating.

Этот вопрос также обсуждался в группе Aurelius Google

Комментарии:

1. Storm 0.9.2-инкубация зависит от kryo 2.21 и официально выпущена. См storm.incubator.apache.org/2014/06/25/storm092-released.html