当前位置: 首页 > news >正文

基于ubuntu 22, jdk 8x64搭建图数据库环境 hugegraph--google镜像chatgpt

基于ubuntu 22, jdk 8x64搭建图数据库环境 hugegraph

download

环境

uname -a
#Linux whiltez 5.15.0-46-generic #49-Ubuntu SMP Thu Aug 4 18:03:25 UTC 2022 x86_64 x86_64 x86_64 GNU/Linuxwhich javac
#/adoptopen-jdk8u332-b09/bin/javac
which java
#/adoptopen-jdk8u332-b09/bin/java

0. download and unpack


cd ~
#cd /home/z/
mkdir hugegraph; cd hugegraph;
#pwd: /home/z/hugegraphwget https://github.com/hugegraph/hugegraph/releases/download/v0.12.0/hugegraph-0.12.0.tar.gz
wget https://github.com/hugegraph/hugegraph-hubble/releases/download/v1.6.0/hugegraph-hubble-1.6.0.tar.gztar -zxvf hugegraph-0.12.0.tar.gz
tar -zxvf hugegraph-hubble-1.6.0.tar.gztree -L 2 .
"""
.
├── hugegraph-0.12.0
│   ├── bin
│   ├── conf
│   ├── ext
│   ├── lib
│   ├── logs
│   ├── plugins
│   ├── rocksdb-data
│   └── scripts
├── hugegraph-hubble-1.6.0
│   ├── bin
│   ├── conf
│   ├── db.mv.db
│   ├── lib
│   ├── LICENSE
│   ├── logs
│   ├── README.md
│   └── ui"""

1.启动hugegraph服务

cd ~/hugegraph/hugegraph-0.12.0/

1.a 默认使用内置rocketmq数据库, 可修改为mysql

配置文件为: conf/graphs/hugegraph.properties

~/hugegraph/hugegraph-0.12.0/conf/graphs/hugegraph.properties

1.b 可修改web rest服务外部可访问:

#find ~/hugegraph/hugegraph-0.12.0/conf -type f  | xargs -I@ grep -Hn 127 @
sed -i "s/restserver.url=http:\/\/127.0.0.1:8080/restserver.url=http:\/\/0.0.0.0:8080/g" conf/rest-server.properties
#sed -i "g/restserver.url=http://127.0.0.1:8080/restserver.url=http://0.0.0.0:8080/s"  conf/rest-server.properties
#~/hugegraph/hugegraph-0.12.0/conf/rest-server.properties

1.c 可修改gremlin-server端口8182 监听任意ip

sed -i  "s/#host: 127.0.0.1/host: 0.0.0.0/" conf/gremlin-server.yaml
##~/hugegraph/hugegraph-0.12.0/conf/gremlin-server.yaml

注意 hugegraph的gremlin-server端口8182 理论上是可以被Tinerpop的gremlin-client : ‘org.apache.tinkerpop:gremlin-driver:3.6.1’ 正常连上的,
因为 gremlin-server确实是符合gremlin规范的服务 , 但实际上 二者会有细微差异, 比如以下代码部分报错:

import org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
import org.apache.tinkerpop.gremlin.structure.Vertex;import java.util.Map;import static org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource.traversal;public class Test2 {public static void main(String[] args){GraphTraversalSource g = traversal().withRemote(DriverRemoteConnection.using("192.168.0.3",8182,"g"));GraphTraversal<Vertex, Map<Object, Object>> list = g.V().elementMap();test2(g);try {g.close();} catch (Exception e) {e.printStackTrace();}}public static void test2(GraphTraversalSource g){Long vertexCnt = g.V().count().next();System.out.println("vertexCnt:"+vertexCnt);}
}

行"Long vertexCnt = g.V().count().next();", 报错如下:

Exception in thread "main" java.util.concurrent.CompletionException: org.apache.tinkerpop.gremlin.driver.exception.ResponseException: The traversal source [g] for alias [g] is not configured on the server.at java.util.concurrent.CompletableFuture.reportJoin(CompletableFuture.java:375)at java.util.concurrent.CompletableFuture.join(CompletableFuture.java:1934)at org.apache.tinkerpop.gremlin.driver.ResultSet.one(ResultSet.java:123)at org.apache.tinkerpop.gremlin.driver.ResultSet$1.hasNext(ResultSet.java:175)at org.apache.tinkerpop.gremlin.driver.ResultSet$1.next(ResultSet.java:182)at org.apache.tinkerpop.gremlin.driver.ResultSet$1.next(ResultSet.java:169)at org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteTraversal$TraverserIterator.next(DriverRemoteTraversal.java:115)at org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteTraversal$TraverserIterator.next(DriverRemoteTraversal.java:100)at org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteTraversal.nextTraverser(DriverRemoteTraversal.java:92)at org.apache.tinkerpop.gremlin.process.remote.traversal.step.map.RemoteStep.processNextStart(RemoteStep.java:80)at org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.next(AbstractStep.java:135)at org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.next(AbstractStep.java:40)at org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal.next(DefaultTraversal.java:249)at Test2.test2(Test2.java:28)at Test2.main(Test2.java:20)
Caused by: org.apache.tinkerpop.gremlin.driver.exception.ResponseException: The traversal source [g] for alias [g] is not configured on the server.at org.apache.tinkerpop.gremlin.driver.Handler$GremlinResponseHandler.channelRead0(Handler.java:245)at org.apache.tinkerpop.gremlin.driver.Handler$GremlinResponseHandler.channelRead0(Handler.java:200)at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)at org.apache.tinkerpop.gremlin.driver.Handler$GremlinSaslAuthenticationHandler.channelRead0(Handler.java:126)at org.apache.tinkerpop.gremlin.driver.Handler$GremlinSaslAuthenticationHandler.channelRead0(Handler.java:68)at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93)at io.netty.handler.codec.http.websocketx.Utf8FrameValidator.channelRead(Utf8FrameValidator.java:89)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327)at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:722)at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:658)at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:584)at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496)at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:995)at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)at java.lang.Thread.run(Thread.java:745)

1.1 初始化hugegraph存储

./bin/init-store.sh
#~/hugegraph/hugegraph-0.12.0/bin/init-store.sh#执行后,将会多出目录rocksdb-datatree -L 2 ~/hugegraph/hugegraph-0.12.0/rocksdb-data/
"""
rocksdb-data/
├── g
│   ├── 000006.log
│   ├── CURRENT
│   ├── IDENTITY
│   ├── LOCK
│   ├── LOG
│   ├── LOG.old.1661579557252372
│   ├── MANIFEST-000005
│   ├── OPTIONS-000008
│   └── OPTIONS-000010
├── m
│   ├── 000006.log
│   ├── CURRENT
│   ├── IDENTITY
│   ├── LOCK
│   ├── LOG
│   ├── LOG.old.1661579555337140
│   ├── MANIFEST-000005
│   ├── OPTIONS-000008
│   └── OPTIONS-000010
└── s├── 000006.log├── CURRENT├── IDENTITY├── LOCK├── LOG├── LOG.old.1661579555688062├── MANIFEST-000005├── OPTIONS-000008└── OPTIONS-000010"""

1.2 启动hugegraph服务

./bin/start-hugegraph.sh
#~/hugegraph/hugegraph-0.12.0/bin/start-hugegraph.shjps
#35673 HugeGraphServer#huge web rest api:
wget http://localhost:8080

2.启动hugegraph-hubble(web界面)

cd ~/hugegraph/hugegraph-hubble-1.6.0/

2.1修改为允许外部访问web界面

#find conf -type f |xargs -I@ grep -Hn localhost  @sed -i "s/server.host=localhost/server.host=0.0.0.0/g" conf/hugegraph-hubble.properties
#~/hugegraph/hugegraph-0.12.0/conf/hugegraph-hubble.properties

2.2 启动hugegraph web服务

./bin/start-hubble.sh
#~/hugegraph/hugegraph-0.12.0/bin/start-hubble.shjps
#36640 HugeGraphHubble
#35673 HugeGraphServersudo netstat -lntp  | grep java
#tcp6       0      0 :::8088                 :::*                    LISTEN      36640/java
#tcp6       0      0 :::8080                 :::*                    LISTEN      35673/java
#tcp6       0      0 127.0.0.1:8182          :::*                    LISTEN      35673/java#浏览器访问 hugegraph web界面:http://10.11.1.113:8088/

web界面创建图

在这里插入图片描述

注意 hubbleweb界面此时并不知道本机的hugegraph web服务8080端口的存在,所以要添加把本机服务添加到web界面上:
web点击创建图
在这里插入图片描述

hugegraph的client 语言支持貌似较弱(只有java client, 而且使用人数很少. 更没有官方py client) ,故而放弃hugegraph转向janusgraph

http://www.lryc.cn/news/226864.html

相关文章:

  • 4. 深度学习——优化函数
  • docker通过nginx代理tomcat-域名重定向
  • CSS BFC是什么,应用实例
  • 一分钟秒懂人工智能对齐
  • Postman常见报错与解决方法,持续更新~
  • 出电子书了!
  • LeetCode 260. 只出现一次的数字 III 中等
  • 数据结构之红黑树
  • 【chat】4: ubuntu20.04:数据库创建:mysql8 导入5.7表
  • 合并二叉树(Java)
  • C语言 exit函数
  • 基于VPLC711的曲面外观检测XYR运动控制解决方案
  • 【LeetCode刷题-二分查找】--162.寻找峰值
  • vscode调试react 最初的源码
  • Netty网络通信模型
  • .NET快速对接极光消息推送
  • Doris:多源数据目录(Multi-Catalog)
  • 建行驻江门市分行纪检组以政治谈话压责任促发展
  • 如何从存档服务器上完全删除PDM用户
  • 导师对学生学术论文的指导包括哪些方面,请详细展开说明
  • 嵌入式软件开发是个啥职业?
  • 03【远程协作开发、TortoiseGit、IDEA绑定Git插件的使用】
  • Linux:centos7通过yum安装mysql的方法
  • 【算法与数据结构】93、LeetCode复原 IP 地址
  • uniapp点击图片放大预览
  • Java TreeMap
  • ubuntu 内网源如何搭建 —— 筑梦之路
  • 测试用例的设计方法(黑盒)
  • Shell编程入门--概念、特性、bash配置文件
  • 读书笔记:彼得·德鲁克《认识管理》第14章 工作、做工与员工