JanusGraph实战:从安装到展示

一、写在前面

工作需要,最近开始接触一点知识图谱的东西,从0开始,老大确定了要使用的图计算框架,其余的,全都靠自己,由于毫无经验所言, 图谱的概念对我来说是新的,JanusGraph这个框架是新的,它所基于的TinkerPop没听过,拿来写入数据的语言java基本上也算是新的了(虽然几年前在学校用过),部署可视化界面要使用的nginx也是新的,这些东西搅到一起,足足搞了10天才理出点头绪来,记录一下,给有相同需要的小伙伴点参考。

二、JanusGraph+HBase+ElasticSearch的环境搭建

一开始找到了好教程,但由于自己知识储备不足,不知道好教程是好教程,附上原文
参考的安装教程
我这里,由于是公司环境,Hbase和ES都是安装好的,不需要自己再装什么,下面记录一下我在安装的过程中踩了哪些坑

1.JanusGraph组件安装

(1)官方下载地址 github下载

坑:版本
在安装之前,我有想过这个问题,查了一下服务器上Hbase和ES的版本

  • hbase 版本查询:在服务器上使用 hbase shell 命令打开 hbase 客户端,信息的最后一行即可看到:Version 1.2.0-cdh5.16.1
  • ES 版本查询:在服务器上执行curl -XGET ip:port(把ip和port改成你ES服务器的ip和端口号),返回信息中即可看到:{"version":{"number" : "5.5.1"}}

接着,去JanusGraph下载页面查每一个版本的JanusGraph所支持的组件版本,在每一个版本的“Tested Compatibility”里,新版本的JanusGraph支持的其他组件的版本都比较高,一定要使用支持自己组件版本的JanusGraph。一开始,我发现最新的几个版本都不支持我的Hbase和ES,得用很久之前的版本,心里比较反感,谁还不想用新的呢,想着,那么老的版本,都没多少人用了,都不更新了的,就全然不当回事,心存侥幸心理下载了最新版,后面被事实啪啪打脸,我慢慢降低版本,重新配置,脸肿了之后才学乖去找支持我组件的版本,最终找到了 0.2.3 版本,这才发现,人家最近才更新完

(2)解压

unzip janusgraph-0.2.3-hadoop2.zip
mv janusgraph-0.2.3-hadoop2 janusgraph

(3)配置环境变量

打开 ~/.bashrc 文件,在末尾追加

export JANUSGRAPH_HOME=你的janusgraph文件夹所在路径
export PATH=:$JANUSGRAPH_HOME/bin:$PATH

让环境变量生效source ~/.bashrc

2.配置JanusGraph Server

这一步的配置需要修改两个配置文件:janusgraph-hbase-es-server.propertiesgremlin-hbase-es-server.yaml
文件放在 janusgraph/conf/gremlin-server/ 下,如果没有,复制一份其他的配置文件再做修改即可

(1)janusgraph-hbase-es-server.properties

拷贝文件

cp janusgraph-cassandra-es-server.properties janusgraph-hbase-es-server.properties

修改配置信息

gremlin.graph=org.janusgraph.core.JanusGraphFactory
# 配置后端存储数据库
storage.backend=hbase
storage.hostname=node007164:2182,node007166:2182,node007167:2182  # 这里写你hbase的ip:port,如果是集群,可以像我这样写集群的zookeeper地址
storage.hbase.table=cpf_item_tag_graph  # 这里写hbase里的表,事先库里有没有这个表都行,有的话他会直接用,没有的话,他会新建,如果事先建好了,无论你对那个表设置了神马,都会被清除掉,他会重新按自己的需要配置信息,别问我咋知道的,没被我们数仓小哥哥骂死已经是他脾气好了

# 下面中间的那个search你可以随便改名字,后面在设置schema建索引的时候保持一致即可,后面到那会再提一下
index.search.backend=elasticsearch 
index.search.hostname=192.168.2.198:9201  # ES所在服务器的ip和端口,集群的话,写一个就行,我的就是集群
index.search.elasticsearch.health-request-timeout=120s  # 这个是后面我查数据的时候报错信息提示ES超时之类的,查了一圈才查到这,莫得配置是30s,如果你跑数据的时候碰到类似问题,可以试一下

其余配置信息没有修改

(2)gremlin-hbase-es-server.yaml

拷贝文件

cp gremlin-server.yaml gremlin-hbase-es-server.yaml

这个文件比较好改

channelizer: org.apache.tinkerpop.gremlin.server.channel.WsAndHttpChannelizer  # 改成同时支持websocket和http
graphs: {
   
  graph: conf/gremlin-server/janusgraph-hbase-es-server.properties  # 你自己的.properties文件路径
}

(3)启动JanusGraph Server

任意目录下执行gremlin-server.sh conf/gremlin-server/gremlin-hbase-es-server.yaml

三、向hbase中写入数据,并同步到ES中

好像有批量写入数据的工具,也许是我心不够静,还没研究明白,你们可以自己研究一下 janusgraph-utils
这里主要记录一下自己用Java往库里写数据的过程(不是不支持python,只是项目需要):

1.建项目

(1)请使用 maven 创建一个新项目
(2)修改源,不然速度太慢了,慢到想砸电脑
找到maven的settings.xml文件,目录:(command+,)IntelliJ IDEA -> Preferences -> 搜索框搜 maven -> 右边面板倒数第2行 User settings file后面就是你的路径,倒数第1行是存储jar包的仓库地址,记住这两个地址
修改:打开settings.xml文件,找到<mirrors>标签,加入以下信息

	<mirror>
		<!--该镜像的唯一标识符。id用来区分不同的mirror元素。 -->
        <id>nexus-aliyun</id>
		<!--镜像名称 -->
        <name>Nexus aliyun</name>
		<!--该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL。 -->
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
		<!--被镜像的服务器的id。例如,如果我们要设置了一个Maven中央仓库(http://repo1.maven.org/maven2)的镜像,就需要将该元素设置成central。这必须和中央仓库的id central完全一致。-->
		<mirrorOf>central</mirrorOf>
    </mirror>

找到<localRepository>标签,确定仓库目录是正确的
这样加载pom.xml依赖的时候就快很多了
(3)pom.xml文件:
依赖项如下,挑你需要的即可

    <dependencies>
        <dependency>
            <groupId>org.janusgraph</groupId>
            <artifactId>janusgraph-hbase</artifactId>
            <version>0.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.janusgraph</groupId>
            <artifactId>janusgraph-core</artifactId>
            <version>0.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tinkerpop</groupId>
            <artifactId>gremlin-driver</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>org.janusgraph</groupId>
            <artifactId>janusgraph-all</artifactId>
            <version>0.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值