Бэкэнд внешнего индекса Janus Graph HBase и Solr Unknown: jgex

Я работаю с JanusGraph 0.2.0, Hbase 1.2.6 и Solr 7.3.0. Я хочу запустить автономный сервер Janus Graph с Hbase (серверная часть хранилища) и Solr (серверная часть индекса). Затем подключиться к драйверу gremlin (с клиентом Java) и использовать язык запросов Gremlin для просмотра моего графика. Я локально установил Hbase и Solr. Я последовал за:

https://github.com/JanusGraph/janusgraph/tree/master/janusgraph-examples/example-remotegraph 

Обновлен gremlin-server.yaml с помощью свойств janusgraph-hbase-solr.properties. Я успешно запустил сервер Gremlin. Я создал ядро ​​jgex с помощью

solr create_core -d $ JANUSGRAPH_HOME / conf / solr -c jgex

Также gremlin-server.yaml

host: 0.0.0.0
port: 8182
scriptEvaluationTimeout: 30000
channelizer: org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer
graphs: {
  graph: conf/gremlin-server/janusgraph-hbase-solr.properties
}
plugins:
  - janusgraph.imports
scriptEngines: {
  gremlin-groovy: {
    imports: [java.lang.Math],
    staticImports: [java.lang.Math.PI],
    scripts: [scripts/empty-sample.groovy]}}
serializers:
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: {ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistryV1d0] }}
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistryV1d0] }}
processors:
  - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}
  - { className: org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor, config: { cacheExpirationTime: 600000, cacheMaxSize: 1000 }}
metrics: {
  consoleReporter: {enabled: true, interval: 180000},
  csvReporter: {enabled: true, interval: 180000, fileName: /tmp/gremlin-server-metrics.csv},
  jmxReporter: {enabled: true},
  slf4jReporter: {enabled: true, interval: 180000},
  gangliaReporter: {enabled: false, interval: 180000, addressingMode: MULTICAST},
  graphiteReporter: {enabled: false, interval: 180000}}
maxInitialLineLength: 4096
maxHeaderSize: 8192
maxChunkSize: 8192
maxContentLength: 65536
maxAccumulationBufferComponents: 1024
resultIterationBatchSize: 64
writeBufferLowWaterMark: 32768
writeBufferHighWaterMark: 65536

И janusgraph-hbase-solr.properties вроде этого: (Строки других полей с комментариями по умолчанию)

storage.backend=hbase
storage.hostname=127.0.0.1
cache.db-cache = true
cache.db-cache-clean-wait = 20
cache.db-cache-time = 180000
cache.db-cache-size = 0.5
index.search.backend=solr
index.search.solr.mode=http
index.search.solr.http-urls=http://localhost:8983/solr
gremlin.graph=org.janusgraph.core.JanusGraphFactory

Когда я бегу

mvn exec: java -pl: пример-удаленный граф

команда, которую он бросает

Заранее спасибо.

Похоже, вы использовали неправильный файл свойств. Этот файл свойств https://github.com/JanusGraph/janusgraph/blob/master/janusgraph-examples/example-hbase/conf/jgex-hbase-solr-http.properties, расположенный в дистрибутиве под

https://github.com/JanusGraph/janusgraph/tree/master/janusgraph-examples/example-remotegraph 
, содержит определение индекса для
host: 0.0.0.0
port: 8182
scriptEvaluationTimeout: 30000
channelizer: org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer
graphs: {
  graph: conf/gremlin-server/janusgraph-hbase-solr.properties
}
plugins:
  - janusgraph.imports
scriptEngines: {
  gremlin-groovy: {
    imports: [java.lang.Math],
    staticImports: [java.lang.Math.PI],
    scripts: [scripts/empty-sample.groovy]}}
serializers:
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: {ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistryV1d0] }}
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistryV1d0] }}
processors:
  - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}
  - { className: org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor, config: { cacheExpirationTime: 600000, cacheMaxSize: 1000 }}
metrics: {
  consoleReporter: {enabled: true, interval: 180000},
  csvReporter: {enabled: true, interval: 180000, fileName: /tmp/gremlin-server-metrics.csv},
  jmxReporter: {enabled: true},
  slf4jReporter: {enabled: true, interval: 180000},
  gangliaReporter: {enabled: false, interval: 180000, addressingMode: MULTICAST},
  graphiteReporter: {enabled: false, interval: 180000}}
maxInitialLineLength: 4096
maxHeaderSize: 8192
maxChunkSize: 8192
maxContentLength: 65536
maxAccumulationBufferComponents: 1024
resultIterationBatchSize: 64
writeBufferLowWaterMark: 32768
writeBufferHighWaterMark: 65536
:


person msertacturkel    schedule 15.05.2018    source источник
comment
Привет, @JasonPlurad, я добавил свойства gremlin-server.yaml и janusgraph-hbase-solr.properties в вопросник.   -  person Jason Plurad    schedule 16.05.2018
comment
Я обновил свой ответ   -  person msertacturkel    schedule 17.05.2018
comment
Спасибо за ваш комментарий. Я могу запустить example-hbase, и я видел таблицы hbase и индексированные данные в Solr. Кстати, я использую Solr http. Но я попытался запустить example-remotegraph. Также я не нашел никакой конфигурации в example-remotegraph, связанной с hbase и solr. Я хочу запустить автономный сервер Janus Graph (с Hbase и Solr), а затем отправлять команды gremlinql в виде строки от клиентов. (Это может быть отправлено через Java или языки, отличные от JVM)   -  person Jason Plurad    schedule 17.05.2018


Ответы (1)


Используйте jgex-hbase-solr-cloud.properties из того же каталога, если вы используете Solr Cloud, а не Solr HTTP.

index.jgex.backend=solr
index.jgex.index-name=jgex
index.jgex.hostname=127.0.0.1

index.jgex.solr.mode=http
index.jgex.solr.http-urls=http://127.0.0.1:8983/solr

Обновление: на основе файла свойств в вашем вопросе обратите внимание, что он определяет индекс Solr с именем search (следует шаблону index.[X].backend), который отличается от того, что находится в каталоге примеров и показан в моем ответе, в котором используется jgex.

Параметры индекса JanusGraph начинаются со строкового индекса. [X]. где [X] - определяемое пользователем имя серверной части. Это определяемое пользователем имя должно быть передано в интерфейс JanusGraph ManagementSystem при построении смешанного индекса, как описано в Раздел 9.1.2, «Смешанный индекс», чтобы JanusGraph знал, какой из потенциально нескольких сконфигурированных бэкэндов индекса использовать. Фрагменты конфигурации в этой главе используют поиск по имени, тогда как при прозаическом обсуждении опций обычно в той же позиции пишется [X]. Точное имя индекса не имеет значения, если оно последовательно используется в конфигурации JanusGraph и при администрировании индексов.

Не могли бы вы отредактировать свой вопрос и добавить $JANUSGRAPH_HOME/examples/example-hbase/conf/ и свойства графика, на которые имеется ссылка?

person Jason Plurad    schedule 15.05.2018
comment
Привет, я редактировал janusgraph-hbase-solr.properties, как вы сказали. Я видел Индекс настройки [jgex] в выводе консоли. Все хорошо. Но теперь он ищет экземпляр elasticsearch и выдает org.janusgraph.diskstorage.es.rest.RestElasticSearchClient - невозможно определить версию сервера Elasticsearch. По умолчанию ПЯТЬ. java.net.ConnectException: в соединении отказано - person msertacturkel; 16.05.2018
comment
В ваших свойствах не задано _1_, поэтому используется имя таблицы по умолчанию _2_. Должен быть предыдущий экземпляр графика, который был создан с именем таблицы по умолчанию и был настроен с помощью Elasticsearch. Либо отбросьте _3_ таблицу, либо установите другое значение для _4_. - person msertacturkel; 18.05.2018
comment
Вызвано: org.apache.tinkerpop.gremlin.driver.exception.ResponseException: Неизвестный сервер внешнего индекса: jgex в org.apache.tinkerpop.gremlin.driver.Handler $ GremlinResponseHandler.channelRead0 (Handler.java:244) в org.apache .tinkerpop.gremlin.driver.Handler $ GremlinResponseHandler.channelRead0 (Handler.java:195) в io.netty.channel.SimpleChannelInboundHandler.channelRead (SimpleChannelInboundHandler.java:105) в AbstractConelChannelInboundHandler.java. : 356) в io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.java:342) на io.netty.channel.AbstractChannelHandlerContext.fireChannelRead (AbstractChannelHandlerContext.fireChannelRead (AbstractChannelHandlerContext.fireChannelRead (AbstractChannelHandlerContext.fireChannelRead) в $ AbstractChannelHandlerContext.fireChannelRead (AbstractChannelHandlerContext.fireChannelRead (AbstractChannelHandlerContext.fireChannelRead) в AbstractChannelHandlerContext.fireChannelRead (AbstractChannelHandlerContext.fireChannelRead) (AbstractChannelHandlerContext) или в $ 3. GremlinSaslAuthenticationHandler.channelRead0 (Handler.java:123) в org.apache.tinkerpop.gremlin.driver.Handler $ GremlinSaslAuthenticationHandler.channelRead0 (Handler.java: 67) в io.netty.channel.SimpleChannelInboundHandler.channelRead (SimpleChannelInboundHandler.java:105) в io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext. : 342) в io.netty.channel.AbstractChannelHandlerContext.fireChannelRead (AbstractChannelHandlerContext.java:335) в io.netty.handler.codec.MessageToMessageDecoder.channelRead (MessageToMessageDecoder.channelRead (MessageToMessageDecoder.channelRead (MessageToMessageDecoder.hannelRead (MessageToMessageDecoder.hannelRead) (MessageToMessageDecoder.hanneltext) AbstractChannelHandlerContext.java:356) в io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.java:342) в io.netty.channel.AbstractChannelHandlerContext.fadjapler.ChannelHandlerContext.fadjavChannelPotext.fadjgapel.html: .handler.WebSocketClientHandler.channelRead0 (WebSocketClientHandle r.java:91) в io.netty.channel.SimpleChannelInboundHandler.channelRead (SimpleChannelInboundHandler.java:105) в io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.InvokeChannelRead) (AbstractChannelHandlerContext.java:342) в io.netty.channel.AbstractChannelHandlerContext.fireChannelRead (AbstractChannelHandlerContext.java:335) в io.netty.handler.codec. ByteToMessageDecoder.fireChannelRead (ByteToMessageDecoder.java:312) в io.netty.handler.codec. .channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.java:342) в io.netty.channel.AbstractChannelHandlerContext.fireChannelRead (AbstractChannelHandlerContext.fireChannelRead (AbstractChannelHandlerContext.fireChannelRead) в io.netChannelContext: io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.java:356) в io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (DefaultChannelHandlerContext.invokeChannelRead (DefaultChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext). на io.netty.channel.nio.AbstractNioByteChannel $ NioByteUns afe.read (AbstractNioByteChannel.java:131) в io.netty.channel.nio.NioEventLoop.processSelectedKey (NioEventLoop.java:646) в io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized1 .netty.channel.nio.NioEventLoop.processSelectedKeys (NioEventLoop.java:498) в io.netty.channel.nio.NioEventLoop.run (NioEventLoop.java:460) в io.netty.util.concurrent.SingleThreadEvent (2. SingleThreadEventExecutor.java:131) ... еще 1 - person Jason Plurad; 19.05.2018