我从 url 在 EC2 服务器上下载了 Titan 版本 1.0
Titan 1.0.0 with Hadoop 1 – recommended
然后我解压并使用以下命令运行 Titan 服务器:
Forking Cassandra...
Running `nodetool statusthrift`... OK (returned exit status 0 and printed string "running").
Forking Elasticsearch...
Connecting to Elasticsearch (127.0.0.1:9300).... OK (connected to 127.0.0.1:9300).
Forking Gremlin-Server...
Connecting to Gremlin-Server (127.0.0.1:8182).... OK (connected to 127.0.0.1:8182).
Run gremlin.sh to connect.
然后我尝试从 Titan 1.0 版本中的 HTTP 请求(在 Titan 0.4 版本中 Rexster 工作正常)
但我收到以下错误
最佳答案
使用默认设置,您无法通过 HTTP 连接连接到 Titan v1.0.0。更准确地说,您无法通过 HTTP 连接到 Gremlin Server。
使用 Titan 时,您还将使用 Apache TinkerPop framework 中的 Gremlin Server。 Gremlin 服务器接受 WebSocket 连接(默认)并将查询转发到 Titan 服务器。
对于 TinkerPop v3.0.1(因此是 Gremlin 服务器 v3.0.1)附带的 Titan v1.0.0,您需要在 HttpChannelizer
文件中手动配置 conf/gremlin-server/gremlin-server.yaml
:
channelizer: org.apache.tinkerpop.gremlin.server.channel.HttpChannelizer
另见: TinkerPop v3.0.1 documentation: Connecting via REST 。
这取代了默认的
WebSocketChannelizer
并允许您通过 HTTP 向 Gremlin 服务器发送查询。当您运行 ./bin/titan.sh start
时,您实际上是在启动 Gremlin Server 以及所有与 Titan 相关的东西(Titan 实例、默认设置中的 Cassandra 和 Elasticsearch)。如果您必须使用浏览器但仍希望使用 WebSocket 连接,则可以使用 https://github.com/jbmusso/gremlin-javascript,它是 Gremlin 服务器的 JavaScript (Node.js/Browser) 客户端。它支持浏览器中的 WebSocket 连接。使用此设置时,您无需编辑
gremlin-server.yaml
文件中的任何内容。关于Titan Gremlin 服务器出现错误 "not a WebSocket handshake request: missing upgrade",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37266676/