开始JanusGraph,第1部分-部署
⼀、从JanusGraph开始
JanusGraph是⼀个可伸缩的事务属性图数据库。属性图是实体(被称为顶点)之间的映射关系(被称为边)。例如,在JanusGraph developers的⼀个属性图中,me是role: developer和org: IBM的属性映射的⼀个顶点。我有⼀个同事Jason,他也是⼀个具有相同属性的顶点。在下⾯的图⽚中,还有⼀个顶点⽤于我提交的⼀些代码更新,称为pull请求。我有⼀个名为submitted的pull请求的边缘连接到我⾃⼰,⽽Jason通过⼀个名为reviewed_by的边缘连接到pull请求。您对连接到具有出站边的Pull请求的顶点名称进⾏了查询,您会看到它是 Created_by me和Reviewed_by Jason边。如果你查询的进来的边,你会看到它合并了杰森和我的提交。你也可以查询在两个⽅向上的边并得到所有四个边。属性图查询可以遍历多个边和顶点,以帮助阐明实体之间的关系。你可以在JanusGraph上到更多的⽂章。另外,如果你对使⽤云托管,产品就绪,JanusGraph实例感兴趣,⼀定要检查撰写JanusGraph。
在加⼊JanusGraph之前,我有关系数据库⽅⾯的背景。我的⽬标是分享我在使⽤属性图时获得的⼀些见解。这将是⼀个由三部分组成的系列,这篇⽂章将介绍如何在Cassandra和Elasticsearch容器上部
thrift署JanusGraph,然后加载现有的graphml数据集。第2部分将介绍索引、管理操作和遍历介绍。第3部分将涉及可视化。
⼆、JanusGraph部署的典型架构
下图中要关注的主要组件⽤橙⾊⾼亮显⽰。存储后端是可插拔的,⽀持Cassandra、HBase、BerkeleyDB、⾕歌BigTable和内存存储选项。存储后端是实际存储数据的地⽅。考虑到它可以灵活地与许多数据库引擎⼀起⼯作,它允许您选择⼀个您可能已经部署或拥有相关专业知识的选项。只能有⼀个存储后端。
接下来是外部索引后端,⽀持Elasticsearch、Solr和Lucene。外部索引后端是可选的,但对于在多个属性、全⽂本和字符串搜索以及地理映射上建⽴索引是必需的。同样,您只能选择⼀个。由于我们将使⽤的数据集包括坐标,地理地图⽀持将是有⽤的。
在存储后端之后,TinkerPop API - Gremlin框表⽰如何与图形交互。它通常被称为Gremlin控制台,是调⽤TinkerPop API的应⽤程序的⼀个⽰例。这是命令⾏接⼝,我们将使⽤它与JanusGraph交互。
最后,图像中间的橙⾊⼤框表⽰JanusGraph服务器。这篇⽂章⼀开始有点令⼈困惑,因为它是⽤⼀个名为gremlin_server.sh的脚本运⾏的。Gremlin服务器是Apache TinkerPop项⽬的⼀部分。JanusGraph本质上充当Gremlin服务器的插件,告诉它如何以及在何处存储图形数据。
三、如何部署JanusGraph
对于本系列的第⼀部分,我们将在Docker容器中部署Cassandra和Elasticsearch。然后配置JanusGraph服务器来使⽤容器。之后,我们将使⽤Gremlin控制台连接到JanusGraph服务器。最后,我们将实际加载⼀些数据,将其作为事务提交并验证其加载是否正确。我还将介绍⼀些有⽤的命令和需要注意的事项。
3.1后端存储容器
⾸先要做的是为Cassandra和Elasticsearch设置Docker容器。Cassandra将⽤于存储我们的数据,Elasticsearch将允许我们在多个属性键上建⽴索引,也称为混合索引。
3.2Cassandra的配置
如果你想查看可⽤的版本和有⽤的命令,你可以去Cassandra的Docker中⼼。
为Cassandra Thrift公开端⼝9160是很重要的。如果⽆法访问,JanusGraph将⽆法连接。我们还指定了3.11版本,因为它受到JanusGraph 0.2.0的⽀持。运⾏下⾯的命令下载并运⾏Cassandra容器。注意,这将映射本地机器上的端⼝7000、7001、7199、9042和9160。如果你打算只使⽤这个容器跟随这篇⽂章,你可以通过9160端⼝。
JanusGraph使⽤Cassandra Thrift进⾏连接。上⾯我们设置了⼀个环境变量,⽤-e CASSANDRA_START_RPC=true启⽤它。还有两种⽅法可以让你开启Thrift。⾸先,我们可以更新Cassandra配置⽂件,将start_rpc设置为true并重新启动容器。
另⼀个选择是使⽤nodetool来启⽤Thrift。
要验证容器是否已启动并正在运⾏,可以运⾏docker ps。
您还可以使⽤nodetool来验证Thrift是否正在运⾏。
四、JanusGraph的Elasticsearch部署
再⼀次,我们会讲到Docker Hub,但这次是关于Elasticsearch容器的。我们再次指定了⼀个版本,这次是5.6,与0.2.0版本所⽀持的版本⼀致。运⾏下⾯的命令下载并运⾏Elasticsearch容器。注意,这将映射本地机器上的端⼝9200和9300。
通过运⾏docker ps来检查也很好。
四、下载JanusGraph 0.2.0
这是JanusGraph的发布页⾯。下载janusgraph-0.2 -hadoop2.zip⽂件,直接使⽤此链接下载。
4.1配置JanusGraph
JanusGraph分布的优点是为我们提供了合理的默认设置。我们唯⼀需要更改的是增加脚本的超时时间并启⽤JanusGraph图形管理器。幸运的是,已经存在⼀个配置⽂件,其中包含JanusGraph图形管理器的必要设置。我们只需要在启动服务器时将⽂件路径作为参数传递。如果您还没有解压janusgraph zip⽂件并将⽬录更改为janusgraph-0.2 -hadoop2。要增加超时,您可以运⾏下⾯的sed命令,或者使⽤编辑器打开
conf/gremlin-server/gremlin-server-configuration.yaml⽂件,并将scriptEvaluationTimeout值从30000更改为180000。
*注意,如果在gremlin-server.sh之后不指定gremlin-server-configuration.yaml⽂件,则默认加载conf/gremlin-server/gremlin-server-yaml。默认配置⽂件仍然默认使⽤本地Cassandra和Elasticsearch实例,但是不⽀持在⼀个JanusGraph服务器上动态运⾏多个图形数据库。
4.2连接到JanusGraph服务器
在⼀个新窗⼝中启动⼀个Gremlin控制台
然后,您需要连接到JanusGraph服务器,并告诉控制台将所有命令发送到远程服务器
4.3为JanusGraph部署加载⼀些测试数据
⾸先使⽤Gremlin控制台中的会话连接到JanusGraph服务器(如前所述)并设置远程控制台。运⾏下⾯⽰例中的命令,为名为airroutes的数据库创建⼀个模板。然后我们将导⼊航线。我们将graphml⽂件下载到我们的airroutes数据库中并提交事务。导⼊有时需要30秒以上的时间,这就是我们为scriptEvaluationTimeout增加值的原因。
4.4在JanusGraph部署上验证测试数据
要获取我们创建的图形列表,请使⽤以下命令:
我们将定义到我们的航线数据库的连接为graph,然后设置⼀个基于graph变量的遍历为g。我们将以⼀个查询结束,该查询显⽰了从SFO到JFK 机场的路径,并提供了⼀次中转。SFO被设置为departure_airport变量,⽽JFK被设置为arrival_airport,以使脚本更具可重⽤性。
您会注意到,⼀些Gremlin查询可能需要⼏秒钟才能运⾏。gremlin控制台有⼀些内置的缓存,因此后续的查询运⾏通常会更快。但是现在我们已经有了JanusGraph的基本⼯作部署!在本博客系列的第2部分中,我们将介绍如何添加索引来加快查询速度。在第3部分中,我们将使⽤⼀个⽤于数据可视化的简单前端应⽤程序来访问图形数据库。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。