You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker中配置JanusGraph与Apache Cassandra?

Docker环境下JanusGraph与Cassandra配置问题及解决思路

问题描述

在Docker容器环境下,如何配置Apache Cassandra以与JanusGraph协同工作?需要搭建一个外部JanusGraph来处理千万级别的数据记录,本人是Cassandra、JanusGraph及图数据库领域的新手。

已执行操作步骤

  • 下载并安装Docker程序
  • 创建并启动JanusGraph Docker容器
docker run -d -p 8182:8182 janusgraph/janusgraph
  • 创建并启动Apache Cassandra Docker容器
docker run --name jg-cassandra -d -e CASSANDRA_START_RPC=true -p 9160:9160 
   -p 9042:9042 -p 7199:7199 -p 7001:7001 -p 7000:7000 cassandra:3.11
  • 编写并运行测试代码,尝试让JanusGraph实例连接Cassandra容器
JanusGraph janusGraph = JanusGraphFactory.build().set("storage.backend", "cql").set("storage.hostname", "localhost:9042").open();

执行结果

  • 预期:JanusGraphFactory实例成功连接Cassandra Docker容器
  • 实际:连接失败,抛出错误

错误信息:

java.lang.Throwable: Hook creation trace
    at org.janusgraph.graphdb.database.StandardJanusGraph.<init>(StandardJanusGraph.java:250) [janusgraph-core-1.0.0-20230424-065649.dcd3240.jar:?]
    at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:176) [janusgraph-core-1.0.0-20230424-065649.dcd3240.jar:?]
    at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:147) [janusgraph-core-1.0.0-20230424-065649.dcd3240.jar:?]
    at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:137) [janusgraph-core-1.0.0-20230424-065649.dcd3240.jar:?]
    at org.janusgraph.core.JanusGraphFactory$Builder.open(JanusGraphFactory.java:277) [janusgraph-core-1.0.0-20230424-065649.dcd3240.jar:?]
    at Main.main(Main.java:10) [classes/:?]

测试代码Main.java:

// Main
import org.janusgraph.core.JanusGraph;
import org.janusgraph.core.JanusGraphFactory;

public class Main {
    public static void main(String[] args) {
        JanusGraph janusGraph = JanusGraphFactory.build().set("storage.backend", "cql").set("storage.hostname", "localhost:9042").open();
        janusGraph.close();
    }
}

依赖配置pom.xml:

<!-- pom.xml -->
    <dependencies>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j2-impl</artifactId>
            <version>2.20.0</version>
        </dependency>
        <dependency>
            <groupId>org.janusgraph</groupId>
            <artifactId>janusgraph-core</artifactId>
            <version>1.0.0-20230424-065649.dcd3240</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tinkerpop</groupId>
            <artifactId>gremlin-core</artifactId>
            <version>3.6.2</version>
        </dependency>
        <dependency>
            <groupId>org.janusgraph</groupId>
            <artifactId>janusgraph-cql</artifactId>
            <version>1.0.0-20230428-082704.5159135</version>
        </dependency>
    </dependencies>

Cassandra中已存在JanusGraph相关数据

问题排查与解决思路

1. 统一JanusGraph组件版本

你的janusgraph-core与janusgraph-cql版本不匹配,这是引发兼容性错误的核心原因。JanusGraph核心模块与存储适配模块必须使用完全一致的版本,修改pom.xml中的版本配置:

<dependency>
    <groupId>org.janusgraph</groupId>
    <artifactId>janusgraph-core</artifactId>
    <version>1.0.0-20230428-082704.5159135</version>
</dependency>
<dependency>
    <groupId>org.janusgraph</groupId>
    <artifactId>janusgraph-cql</artifactId>
    <version>1.0.0-20230428-082704.5159135</version>
</dependency>

2. 验证Cassandra容器状态

启动Cassandra容器后需要等待1-2分钟完成初始化,可通过以下命令确认容器是否就绪:

docker exec jg-cassandra nodetool status

输出中节点状态显示UN(Up/Normal),说明Cassandra已正常运行。

3. 优化JanusGraph连接配置

连接参数不需要在storage.hostname中携带端口(默认使用9042),可补充指定keyspace参数确保配置完整:

JanusGraph janusGraph = JanusGraphFactory.build()
    .set("storage.backend", "cql")
    .set("storage.hostname", "localhost")
    .set("storage.cql.keyspace", "janusgraph")
    .open();

4. 清理无用JanusGraph容器

你启动的janusgraph/janusgraph默认自带嵌入式存储,若仅需连接外部Cassandra,可停止并删除该容器以节省资源:

docker stop $(docker ps -q --filter ancestor=janusgraph/janusgraph)
docker rm $(docker ps -aq --filter ancestor=janusgraph/janusgraph)

内容的提问来源于stack exchange,提问作者Zach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 07:17:22