JanusGraph单机部署

一、安装包下载

下载地址:https://github.com/JanusGraph/janusgraph/releases/

选择对应Hbase版本下载(公司Hbase版本1.4.11,我选择了0.3.3版本)

注:高版本客户端连接低版本Hbase会报错,报错会详细再说

在这里插入图片描述
在这里插入图片描述

二、上传至服务器

上传到要部署服务的机器

三、文件解压

mkdir /opt/janusgraph/
mv ~/wangtianyu03/janusgraph-0.3.3.tar.gz ../opt/janusgraph/
cd /opt/janusgraph/
tar -zxvf janusgraph-0.3.3.tar.gz

四、修改配置文件

cd janusgraph-0.3.3/conf
cp janusgraph-hbase-es.properties http-janusgraph-hbase-es.properties
cp gremlin-server/gremlin-server.yaml  gremlin-server/http-gremlin-server.yaml
1.修改 http-janusgraph-hbase-es.properties

确认这些属性是否存在,不在则需要添加

storage.batch-loading=true
storage.backend=hbase 				#使用HBase作为存储后端 
storage.hostname= 						#HBase的Zookeeper地址
storage.hbase.table=tablename #HBase存储JanusGraph元数据的表名
storage.hbase.ext.hbase.zookeeper.property.clientPort=2181 



index.search.backend=elasticsearch  #ES作为索引
index.search.hostname=test01.es.58dns.org,test02.es.58dns.org,test03.es.58dns.org  			#es服务ip。
index.search.port=9299              #es服务端口号
index.search.elasticsearch.http.auth.basic.username=test_user #es用户名
index.search.elasticsearch.http.auth.basic.password=test_pwd
index.search.elasticsearch.http.auth.type=basic

在这里插入图片描述
在这里插入图片描述

2.修改http-gremlin-server.yaml

(1)设置为http连接: org.apache.tinkerpop.gremlin.server.channel.WsAndHttpChannelizer

(2)更改配置文件路径为自己复制编辑的配置文件

3.启动server

需指定配置文件启动

 ./bin/gremlin-server.sh conf/gremlin-server/http-gremlin-server.yaml

在这里插入图片描述

4.验证是否启动成功
curl -XPOST -Hcontent-type:application/json -d '{"gremlin":"g.V().count()"}' http://localhost:8182

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pykacsnP-1631858756817)(/Users/tianyuwang/Library/Application Support/typora-user-images/image-20210804194000912.png)]

五、一些报错的坑

1.版本问题

(1)报错信息

高版本客户端查询低版本Hbase导致初始化失败

2288 [main] WARN org.janusgraph.diskstorage.hbase.HBaseStoreManager - Unexpected exception during getDeployment()
java.lang.RuntimeException: org.janusgraph.diskstorage.TemporaryBackendException: Temporary failure in storage backend
at org.janusgraph.diskstorage.hbase.HBaseStoreManager.getDeployment(HBaseStoreManager.java:379)
at org.janusgraph.diskstorage.hbase.HBaseStoreManager.getFeatures(HBaseStoreManager.java:418)
at org.janusgraph.graphdb.configuration.builder.GraphDatabaseConfigurationBuilder.build(GraphDatabaseConfigurationBuilder.java:51)
at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:161)
at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:132)
at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:78)
at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:70)
at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:104)
at org.apache.tinkerpop.gremlin.server.util.DefaultGraphManager.lambda$new$0(DefaultGraphManager.java:57)
at java.util.LinkedHashMap$LinkedEntrySet.forEach(LinkedHashMap.java:671)
at org.apache.tinkerpop.gremlin.server.util.DefaultGraphManager.(DefaultGraphManager.java:55)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.(ServerGremlinExecutor.java:80)
......

Caused by: org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException: org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException: Column family table does not exist in region hbase:meta,,1.1588230740 in table 'hbase:meta', {TABLE_ATTRIBUTES => {IS_META => 'true', coprocessor$1 => '|org.apache.hadoop.hbase.coprocessor.MultiRowMutationEndpoint|536870911|'}, {NAME => 'info', BLOOMFILTER => 'NONE', VERSIONS => '3', IN_MEMORY => 'true', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', CACHE_DATA_IN_L1 => 'true', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '8192', REPLICATION_SCOPE => '0'}
at org.apache.hadoop.hbase.regionserver.HRegion.checkFamily(HRegion.java:8371)
at org.apache.hadoop.hbase.regionserver.HRegion.get(HRegion.java:7363)
at org.apache.hadoop.hbase.regionserver.RSRpcServices.get(RSRpcServices.java:2259)
at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:36609)
at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2380)
at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:124)
at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:297)
at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:277)

    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.apache.hadoop.hbase.ipc.RemoteWithExtrasException.instantiateException(RemoteWithExtrasException.java:99)
    at org.apache.hadoop.hbase.ipc.RemoteWithExtrasException.unwrapRemoteException(RemoteWithExtrasException.java:89)
    at org.apache.hadoop.hbase.protobuf.ProtobufUtil.makeIOExceptionOfException(ProtobufUtil.java:282)
    at org.apache.hadoop.hbase.protobuf.ProtobufUtil.handleRemoteException(ProtobufUtil.java:269)
    at org.apache.hadoop.hbase.client.RegionServerCallable.call(RegionServerCallable.java:129)
    at org.apache.hadoop.hbase.client.RpcRetryingCallerImpl.callWithRetries(RpcRetryingCallerImpl.java:107)
    at org.apache.hadoop.hbase.client.HTable.get(HTable.java:386)
     at org.apache.hadoop.hbase.client.HTable.get(HTable.java:360)
    at org.apache.hadoop.hbase.MetaTableAccessor.getTableState(MetaTableAccessor.java:1078)
    at org.apache.hadoop.hbase.MetaTableAccessor.tableExists(MetaTableAccessor.java:403)
    at org.apache.hadoop.hbase.client.HBaseAdmin$6.rpcCall(HBaseAdmin.java:450)
    at org.apache.hadoop.hbase.client.HBaseAdmin$6.rpcCall(HBaseAdmin.java:447)
    at org.apache.hadoop.hbase.client.RpcRetryingCallable.call(RpcRetryingCallable.java:58)
    at org.apache.hadoop.hbase.client.RpcRetryingCallerImpl.callWithRetries(RpcRetryingCallerImpl.java:107)
    at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:3089)
    at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:3081)
    at org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:447)
    at org.janusgraph.diskstorage.hbase.HBaseAdmin1_0.tableExists(HBaseAdmin1_0.java:111)
    at org.janusgraph.diskstorage.hbase.HBaseStoreManager.ensureTableExists(HBaseStoreManager.java:725)

(2)解决办法

只需要找到对应的版本重覆上面步骤,done。。

2. Hbase zookeeper.znode.parent 属性
image-20210805101010516

(1)报错信息

Hbase的配置文件zookeeper.znode.parent与 janusgraph 的 properties文件配置不一致 ,不能读取Hbase信息(Hbase默认为/hbase)

1577 [main] WARN  org.apache.hadoop.hbase.client.ConnectionImplementation  - Retrieve cluster id failed
 java.util.concurrent.ExecutionException: org.apache.hadoop.hbase.shaded.org.apache.zookeeper.KeeperException$NoNodeException
 : KeeperErrorCode = NoNode for /hbase-unsecure/hbaseid
         at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
         at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1895)
         at org.apache.hadoop.hbase.client.ConnectionImplementation.retrieveClusterId(ConnectionImplementation.java:549)
         at org.apache.hadoop.hbase.client.ConnectionImplementation.<init>(ConnectionImplementation.java:287)
         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
         at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
         at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:220)
         at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:115)
         at org.janusgraph.diskstorage.hbase.HBaseCompat1_0.createConnection(HBaseCompat1_0.java:43)
         at org.janusgraph.diskstorage.hbase.HBaseStoreManager.<init>(HBaseStoreManager.java:336)
         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
         at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
         at org.janusgraph.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:58)
         at org.janusgraph.diskstorage.Backend.getImplementationClass(Backend.java:440)
         at org.janusgraph.diskstorage.Backend.getStorageManager(Backend.java:411)
         at org.janusgraph.graphdb.configuration.builder.GraphDatabaseConfigurationBuilder.build(GraphDatabaseConfigurationBu
 ilder.java:50)
         at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:161)
         at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:132)
         at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:112)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
         at java.lang.reflect.Method.invoke(Method.java:498)
         at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:77)
         at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:69)
         at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:103)
         at org.apache.tinkerpop.gremlin.server.util.DefaultGraphManager.lambda$new$0(DefaultGraphManager.java:57)
         at java.util.LinkedHashMap$LinkedEntrySet.forEach(LinkedHashMap.java:671)
         at org.apache.tinkerpop.gremlin.server.util.DefaultGraphManager.<init>(DefaultGraphManager.java:55)
         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
   at org.apache.tinkerpop.gremlin.server.util.DefaultGraphManager.<init>(DefaultGraphManager.java:55)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.<init>(ServerGremlinExecutor.java:80)
        at org.apache.tinkerpop.gremlin.server.GremlinServer.<init>(GremlinServer.java:122)
        at org.apache.tinkerpop.gremlin.server.GremlinServer.<init>(GremlinServer.java:86)
        at org.apache.tinkerpop.gremlin.server.GremlinServer.main(GremlinServer.java:345)
Caused by: org.apache.hadoop.hbase.shaded.org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /hba
se-unsecure/hbaseid
        at org.apache.hadoop.hbase.shaded.org.apache.zookeeper.KeeperException.create(KeeperException.java:111)
        at org.apache.hadoop.hbase.shaded.org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
        at org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient$ZKTask$1.exec(ReadOnlyZKClient.java:177)
        at org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.run(ReadOnlyZKClient.java:342)
        at java.lang.Thread.run(Thread.java:748)
5899 [main] INFO  org.apache.hadoop.hbase.client.RpcRetryingCallerImpl  - Call exception, tries=6, retries=16, started=4151 ms ag
o, cancelled=false, msg=org.apache.hadoop.hbase.shaded.org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = No
Node for /hbase-unsecure, details=row 'hdp_lbg_ectech:lm_app_luna_intelligentpath' on table 'hbase:meta' at null, see https://s.a
pache.org/timeout
9931 [main] INFO  org.apache.hadoop.hbase.client.RpcRetryingCallerImpl  - Call exception, tries=7, retries=16, started=8183 ms ag
o, cancelled=false, msg=org.apache.hadoop.hbase.shaded.org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = No
Node for /hbase-unsecure, details=row 'hdp_lbg_ectech:lm_app_luna_intelligentpath' on table 'hbase:meta' at null, see https://s.a
pache.org/timeout
19949 [main] INFO  org.apache.hadoop.hbase.client.RpcRetryingCallerImpl  - Call exception, tries=8, retries=16, started=18201 ms
ago, cancelled=false, msg=org.apache.hadoop.hbase.shaded.org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode =
NoNode for /hbase-unsecure, details=row 'hdp_lbg_ectech:lm_app_luna_intelligentpath' on table 'hbase:meta' at null, see https://s
.apache.org/timeout

(2)解决方案:

http-janusgraph-hbase-es.properties 文件增加参数

storage.hbase.ext.zookeeper.znode.parent=/hbase

六、API调试

public static void main(String[] args) {
        JanusGraphFactory.Builder builder = JanusGraphFactory.build()
                .set("storage.hostname", "tjtx162-0-201.58os.org,tjtx162-1-111.58os.org,tjtx162-1-213.58os.org,tjtx162-1-42.58os.org,tjtx162-1-77.58os.org")
                .set("storage.hbase.ext.zookeeper.znode.parent","/hbase")
                .set("storage.backend", "hbase")
                .set("storage.hbase.table", "tablename");
        JanusGraph graph = null;
        try{
            graph = builder.open();
            boolean open = graph.isOpen();
            System.out.println("is open:" + open);
        } catch (Exception e){
            System.out.println(e);
        } finally {
            if(null != graph){
                graph.close();
            }
        }
    }

结果:

连接获取成功

七、附赠一份server监控重启的shell脚本

#! /bin/bash

        monitor=`ps -ef | grep GremlinServer | grep -v grep | wc -l `
        if [ $monitor -eq 0 ]
        then
                echo "Manipulator program is not running, restart Manipulator"
                sh /opt/janusgraph/janusgraph-0.3.3/bin/gremlin-server.sh conf/gremlin-server/http-gremlin-server.yaml > /opt/janusgraph/janusgraph-
0.3.3/log/janus_server.log 2>&1 &
        else
                echo "Manipulator program is running"
        fi
#crontab -e  编辑定时任务,每五分钟执行一次
*/5 * * * * nohup sh /home/work/wangtianyu03/restart.sh > /home/work/wangtianyu03/restart.log 2>&1
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JanusGraph是一个开源的分布式图数据库,可用于存储和处理大规模图数据。JanusGraph 0.5.2是该数据库的一个特定版本,支持在Windows操作系统上使用。 使用JanusGraph 0.5.2在Windows上需要以下步骤: 1. 下载JanusGraph 0.5.2的安装包。可以从官方网站或GitHub上获取最新的发布版本。 2. 解压安装包到任意目录。确保你的系统上已经安装了Java环境,并且配置了JAVA_HOME环境变量。 3. 打开命令行窗口,进入JanusGraph的目录。 4. 在命令行窗口中运行bin/gremlin.bat脚本。这将启动JanusGraph的Gremlin Shell,Gremlin是一种图遍历语言,用于与JanusGraph交互。 5. 在Gremlin Shell中,你可以执行各种图数据库的操作,如创建图、添加顶点和边、遍历图等。使用Gremlin脚本文件(.groovy)将多个操作组合到一个文件中,并在Gremlin Shell中执行该文件。 6. 在Gremlin Shell中,你还可以执行Cypher查询语句来查询图数据库中的数据。JanusGraph支持Cypher作为一种查询语言,并提供了相应的API。 7. 当你完成了对JanusGraph的操作,可以通过在Gremlin Shell中使用`:q`命令来退出。 总之,JanusGraph 0.5.2可以在Windows上使用,并且它提供了Gremlin Shell和Cypher查询语言来与图数据库交互。通过执行相应的命令或脚本,你可以在Windows操作系统上创建、修改和查询大规模的图数据。 ### 回答2: JanusGraph 0.5.2是一个开源的分布式图数据库,它是基于Apache TinkerPop图计算框架构建的,并且提供了许多强大的功能和扩展性。 关于在Windows上安装和配置JanusGraph 0.5.2,以下是简单的步骤: 1. 准备环境:首先,确保你有一个可用的Java安装,JanusGraph 0.5.2需要Java 8或更高版本。 2. 下载JanusGraph 0.5.2:在JanusGraph的官方网站或GitHub页面上下载JanusGraph 0.5.2的压缩包。 3. 解压缩文件:解压缩下载的压缩包到一个合适的目录,例如"JanusGraph"文件夹。 4. 配置JanusGraph:在JanusGraph目录中,找到并编辑"janusgraph-hbase.properties"文件。根据你的需要配置数据库后端(如HBase或Cassandra)和相关参数。 5. 启动JanusGraph:在命令提示符或PowerShell窗口中,导航到JanusGraph目录,并运行以下命令启动JanusGraph服务器: ``` bin\janusgraph.bat ``` 6. 使用JanusGraph:一旦服务器启动,你可以使用Gremlin控制台或TinkerPop兼容的图数据库客户端连接到JanusGraph,并执行各种图数据库操作。 如此,你就成功地在Windows上安装和配置了JanusGraph 0.5.2。根据你的具体需求,你可以进一步探索JanusGraph的功能和性能优化。 ### 回答3: JanusGraph 0.5.2是一个开源的分布式图数据库,它可以在Windows操作系统上运行。JanusGraph具有扩展性和可靠性,支持高性能的图数据查询和处理。 在Windows上安装和配置JanusGraph 0.5.2相对简单,以下是一些基本步骤: 1. 首先,在JanusGraph的官方网站上下载适用于Windows的JanusGraph压缩包。 2. 解压缩JanusGraph压缩包到你选择的目录中。 3. 打开目录中的`conf`文件夹,在这里你可以找到`janusgraph.properties`文件。 4. 使用一个文本编辑器打开`janusgraph.properties`文件,对其进行必要的配置。你需要指定一个Cassandra或HBase的存储后端,以及一些其他的配置选项。此外,你还可以根据需求进行其他配置调整,例如调整缓存和连接池的大小等。 5. 保存并关闭`janusgraph.properties`文件。 6. 打开命令提示符,并进入JanusGraph目录下的`bin`文件夹。 7. 在命令提示符中,输入以下命令以启动JanusGraph服务器: ``` janusgraph.bat start ``` 8. 等待一段时间,直到看到类似于“Graph database loaded (...)”的消息。 9. 现在,JanusGraph服务器已经在Windows上成功启动。 10. 如果需要连接到JanusGraph服务器并执行图数据库操作,可以使用Gremlin控制台或通过客户端编程语言(如Java、Python等)与JanusGraph进行通信。 总的来说,JanusGraph 0.5.2可以在Windows上运行,只需进行一些简单的配置即可。希望这些步骤对你有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值