`

Tinkerpop + JanusGraph + Hbase简单实现

阅读更多
Tinkerpop + JanusGraph + Hbase简单实现
〇、机器环境说明
192.168.1.2 master 安装配置好jdk1.8;拥有一套正常运行的Hadoop+Hbase+Zookeeper集群. ... 集群其他信息自定义.
注:文档中的主机IP,主机名称,安装目录仅供参考,请以实际环境进行调整。
Apache TinkerPop™是图形数据库(OLTP)和图形分析系统(OLAP)的图形计算框架。
JanusGraph是一个可扩展的图形数据库,专门用于存储和查询包含数千亿个分布在多机群集中的顶点和边缘的图形。JanusGraph是一个事务数据库,可以支持数千个并发用户实时执行复杂的图形遍历。
一、Hadoop+Hbase+Zookeeper的集群搭建
此过程虽不麻烦, 但一时讲清楚, 还是很费时间的, 在这就省略了.
二、创建目录, 下载Tinkerpop
根据JanusGraph官方文档<<Table B.1. Version Compatibility Matrix>>提供的信息, 在此次搭建中, 采用Tinkerpop 3.2.7, JanusGraph 0.2.0, 相关地址http://docs.janusgraph.org/latest/version-compat.html.
1. 创建目录
[root@master ~]# mkdir -p /usr/local/program
[root@master ~]# cd /usr/local/program/
[root@master program]# pwd
/usr/local/programe
 2. 下载Tinkerpop
[root@master program]# wget http://www-eu.apache.org/dist/tinkerpop/3.2.7/apache-tinkerpop-gremlin-console-3.2.7-bin.zip # console, 相关地址http://tinkerpop.apache.org/.
[root@master program]# wget http://mirror.bit.edu.cn/apache/tinkerpop/3.2.7/apache-tinkerpop-gremlin-server-3.2.7-bin.zip # server,相关地址http://tinkerpop.apache.org/.
 3. 解压Tinkerpop
[root@master program]# unzip apache-tinkerpop-gremlin-server-3.2.7-bin.zip
[root@master program]# unzip apache-tinkerpop-gremlin-console-3.2.7-bin.zip
[root@master program]# ls -1
apache-tinkerpop-gremlin-console-3.2.7
apache-tinkerpop-gremlin-server-3.2.7
apache-tinkerpop-gremlin-console-3.2.7-bin.zip
apache-tinkerpop-gremlin-server-3.2.7-bin.zip
三、在Tinkerpop Server上安装JanusGraph依赖
Note: 第四节有讲述如何配置grapeConfig.xml的内容, 如果下载失败, 可参考第四节.
1. 进入apache-tinkerpop-gremlin-server-3.2.7下载依赖
安装方式: bin/gremlin-server.sh -i org.janusgraph janusgraph-all $VERSION, 在这里下载JanusGraph的0.2.0版本.
[root@master apache-tinkerpop-gremlin-server-3.2.7]# bin/gremlin-server.sh -i org.janusgraph janusgraph-all 0.2.0
 2. 重要提示(Important, 这个地方应该重点显示, 为了好看, 就这样了)
下面引用JanusGraph官方文档中7.4.2. Using TinkerPop Gremlin Server with JanusGraph的一句话:
The above command uses Groovy Grape and if it is not configured properly download errors may ensue. Please refer to this section of the TinkerPop documentation for more information around setting up ~/.groovy/grapeConfig.xml.
相关地址http://docs.janusgraph.org/latest/server.html.
大意就是:
以上命令使用Groovy Grape,如果没有正确配置,可能会出现下载错误。有关设置的更多信息,请参阅TinkerPop文档的这一部分~/.groovy/grapeConfig.xml。
上文提到的地址http://tinkerpop.apache.org/docs/3.2.6/reference/#gremlin-applications.
四、为避免下载依赖失败, 修改Groovy Grape
Note: Windows目录: C:\Users\[User_Name]\.groovy; Linux目录: ~/.groovy
修改内容如下:
1. 在上述目录中创建grapeConfig.xml文件, 或目录不存在, 先创建目录.
2. 修改文件内容如下:
<ivysettings>
 <settings defaultResolver="downloadGrapes"/>
 <property name="m2-pattern" value="${user.home}/.m2/repository/org/apache/tinkerpop/[module]/[revision]/[module]-[revision](-[classifier]).[ext]" />
 <property name="m2-pattern-ivy" value="${user.home}/.m2/repository/org/apache/tinkerpop/[module]/[revision]/[module]-[revision](-[classifier]).pom" />
 <caches>
 <cache name="nocache" useOrigin="true" />
 </caches>
 <resolvers>
 <chain name="downloadGrapes">
 <filesystem name="local-maven2" checkmodified="true" changingPattern=".*" changingMatcher="regexp" m2compatible="true" cache="nocache">
 <artifact pattern="${m2-pattern}"/>
 <ivy pattern="${m2-pattern-ivy}"/>
 </filesystem>
 <filesystem name="cachedGrapes">
 <ivy pattern="${user.home}/.groovy/grapes/[organisation]/[module]/ivy-[revision].xml"/>
 <artifact pattern="${user.home}/.groovy/grapes/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]"/>
 </filesystem>
 <ibiblio name="ibiblio" m2compatible="true"/>
 <ibiblio name="local" root="file:${user.home}/.m2/repository/" m2compatible="true"/>
 <ibiblio name="oracle" root="http://download.oracle.com/maven" m2compatible="true"/>
 </chain>
 </resolvers>
</ivysettings>
3. 重新执行第三节的内容.
五、参数设置(master节点操作)
1. 在${TINKERPOP_HOME}/conf/目录创建janusgraph-hbase-server.properties, 添加内容如下:
gremlin.graph=org.janusgraph.core.JanusGraphFactory
storage.backend=hbase # 存储方式为Hbase.
storage.hostname=localhost # Zookeeper地址, 需要根据实际地址修改, 多台用','间隔.
# 以下信息可参考, 不影响下面步骤.
cache.db-cache = true
cache.db-cache-clean-wait = 20
cache.db-cache-time = 180000
cache.db-cache-size = 0.5 
# 以下信息可参考, 用于配置ElasticSearch索引信息, 不影响下面步骤.
index.search.backend=elasticsearch # 索引方式.
index.search.hostname=localhost # ElasticSearch主机地址, 多台用','间隔.
index.search.port=9200 # ElasticSearch通信端口.
index.search.elasticsearch.client-only=false
2. 在${TINKERPOP_HOME}/conf/目录创建janusgraph-gremlin-server.yaml, 添加内容如下:
host: 0.0.0.0
port: 8182
scriptEvaluationTimeout: 300000
channelizer: org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer
graphs: {
 graph: conf/janusgraph-hbase-server.properties
}
plugins:
 - janusgraph.imports
scriptEngines: {
 gremlin-groovy: {
 imports: [java.lang.Math],
 staticImports: [java.lang.Math.PI],
 scripts: [scripts/empty-sample.groovy]}}
serializers:
 - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}
 - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: {ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}
 - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}
 - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistryV1d0] }}
 - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}
 - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistryV1d0] }}
processors:
 - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}
 - { className: org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor, config: { cacheExpirationTime: 600000, cacheMaxSize: 1000 }}
metrics: {
 consoleReporter: {enabled: true, interval: 180000},
 csvReporter: {enabled: true, interval: 180000, fileName: /tmp/gremlin-server-metrics.csv},
 jmxReporter: {enabled: true},
 slf4jReporter: {enabled: true, interval: 180000},
 gangliaReporter: {enabled: false, interval: 180000, addressingMode: MULTICAST},
 graphiteReporter: {enabled: false, interval: 180000}}
maxInitialLineLength: 4096
maxHeaderSize: 8192
maxChunkSize: 8192
maxContentLength: 65536
maxAccumulationBufferComponents: 1024
resultIterationBatchSize: 64
writeBufferLowWaterMark: 32768
writeBufferHighWaterMark: 65536
3. 在${TINKERPOP_HOME}/scripts/目录创建empty-sample.groovy,(此文件默认存在, 可直接使用.) 添加内容如下:
def globals = [:]
globals << [g : graph.traversal()]
六、运行Tinkerpop Server
[root@master apache-tinkerpop-gremlin-server-3.2.7]# bin/gremlin-server.sh conf/janusgraph-gremlin-server.yaml
1. 当显示如下内容时, 说明启动成功:
......
INFO] GremlinServer - Executing start up LifeCycleHook
[INFO] Logger$info - Executed once at startup of Gremlin Server.
[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+gryo with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
[WARN] AbstractChannelizer - The org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0 serialization class is deprecated.
[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+gryo-lite with org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0
[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+gryo-stringd with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0
[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v2.0+json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0
[INFO] AbstractChannelizer - Configured application/json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0
[INFO] GremlinServer$1 - Gremlin Server configured with worker thread pool of 1, gremlin pool of 32 and boss thread pool of 1.
[INFO] GremlinServer$1 - Channel started at port 8182.
2. 当提示以下内容时, 修改文件, 去除\t
[ERROR] GremlinServer - Configuration file at conf/janusgraph-gremlin-server.yaml could not be found or parsed properly. [while scanning for the next token
found character '\t(TAB)' that cannot start any token. (Do not use \t(TAB) for indentation)
 in 'reader', line 6, column 1:
 graph: conf/janusgraph-hbase-se ... 
 ^
]
七、通过Tinkerpop Console测试
1. 进入apache-tinkerpop-gremlin-console-3.2.7目录, 运行:
[root@master apache-tinkerpop-gremlin-console-3.2.7]# ./bin/gremlin.sh
Feb 08, 2018 4:57:21 PM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.
 
 \,,,/
 (o o)
-----oOOo-(3)-oOOo-----
plugin activated: tinkerpop.server
plugin activated: tinkerpop.utilities
plugin activated: tinkerpop.tinkergraph
gremlin> :remote connect tinkerpop.server conf/remote.yaml
==>Configured localhost/127.0.0.1:8182
gremlin> :> g.V().count()
==> 0
运行无阻时, 说明部署完成. 可以继续往下进行.
0
0
分享到:
评论

相关推荐

    janusgraph-0.5.x.zip

    JanusGraph是基于Apache TinkerPop框架构建的,TinkerPop是一个图形计算框架,提供了图形数据库的统一访问接口。JanusGraph支持多种后端存储系统,如Apache HBase、Cassandra、Elasticsearch等,这使得它能够在不同...

    janusgraph,janusgraph:一个开源的分布式图形数据库.zip

    JanusGraph的设计基于Apache TinkerPop框架,该框架提供了一种标准的图形查询语言——Gremlin。Gremlin是一种强大的图遍历语言,允许用户以链式语法来查询和操作图中的节点、边和属性。通过使用Gremlin,开发者可以...

    JanusGraph0.5.2版本

    - 扩展性设计:由于JanusGraph是分布式系统,设计时要考虑数据分区和负载均衡,以实现水平扩展。 总之,JanusGraph 0.5.2作为一款强大的图数据库,对于需要处理复杂关系数据的项目来说,是一个值得考虑的解决方案。...

    janusgraph.zip

    Janusgraph支持多种后端存储系统,如Cassandra、HBase和Elasticsearch,以及索引提供商如Lucene,这使得它具有高度的可扩展性和灵活性。 在0.3.0版本中,Janusgraph提供了基本的功能,包括图的创建、查询、更新和...

    django访问janusgraph,计算路径积累权重

    JanusGraph是一个分布式图数据库,支持多种后端存储,如HBase、Cassandra和Elasticsearch。它广泛用于复杂数据关系的管理和分析。Gremlin是TinkerPop提供的图遍历语言,用于与JanusGraph进行交互。 首先,为了在...

    janusGraph的linux分布式安装全家桶

    首先,JanusGraph本身是基于Apache TinkerPop框架的,它支持多种后端存储系统,如HBase和Elasticsearch。JanusGraph的核心特性在于其强大的图模型,能够轻松处理实体之间的复杂关系,适用于社交网络、推荐系统、知识...

    janusgraph部署开发.docx

    JanusGraph支持多种存储后端,包括Apache Cassandra、Apache HBase、谷歌云Bigtable和Oracle BerkeleyDB,以及ScyllaDB,这让用户可以根据实际需求和环境选择最适合的存储解决方案。此外,它还集成了高级搜索功能,...

    janusgraph:JanusGraph:一个开源的分布式图形数据库

    Gitter上的聊天室: ,所有有关JanusGraph的一般讨论和问题用于讨论JanusGraph的内部实现堆栈溢出:请参阅标签Twitter:关注以获取新闻和更新(LinkedIn):关注获得新闻和更新邮件列表: janusgraph-users(位于)...

    docs.janusgraph.org:JanusGraph文档站点

    1. **安装与配置**:JanusGraph支持多种后端存储(如Cassandra、HBase、Elasticsearch)和索引服务(如Lucene、Solr)。学习如何根据项目需求选择合适的后端并进行正确配置是使用JanusGraph的第一步。 2. **图模型*...

    JanusGraph数据库技术介绍.pptx

    JanusGraph作为一款可扩展、高性能的分布式图形数据库,能够处理PB级别的数据,同时支持多种后端存储选项,如HBase、Cassandra和Elasticsearch,确保了灵活性和可靠性。未来,图形数据库技术将在数据分析、智能应用...

    Janusgranph连接

    虽然JanusGraph不直接支持JDBC,但我们可以利用TinkerPop的Gremlin语言,它提供了类似SQL的查询语法。例如,创建顶点和边: ```java Vertex vertex1 = graph.addVertex(T.label, "person", "name", "Alice"); ...

    fakeSerious.github.io:janusgraph知识summay

    JanusGraph是Apache TinkerPop3的一个实现,这意味着它支持TinkerPop的图模型和查询语言——Gremlin。JanusGraph提供了高度的可扩展性和灵活性,通过支持多种后端存储(如Cassandra、HBase)和索引服务(如Elastic...

    databaseTechnology:图形采样和保持实现

    JanusGraph是一个分布式图形数据库,支持多种后端存储(如Cassandra、HBase)和索引(如Elasticsearch)。 在Java中实现图形采样和保持,可以利用TinkerPop提供的API,通过编写自定义的采样策略来选择子图,同时...

    银行业图数据库选型实践.pptx

    JanusGraph是一个可扩展的图数据库,支持多种后端存储,如Apache Cassandra、Apache HBase和Google Cloud Bigtable。而Neo4j作为一款完整的图数据库,拥有本地原生存储和单点计算与存储能力,但不具备水平扩展能力。...

    Titan图数据库安装文件

    - 考虑到Titan目前可能已经停止官方维护,选择一个当前活跃的图数据库(如JanusGraph)可能是更好的选择,以确保持续的社区支持和更新。 总结起来,Titan图数据库是一个强大且灵活的解决方案,适用于处理大量复杂...

    分布式图数据库在找房的应用实践(30页).pdf

    JanusGraph 是基于 Apache TinkerPop 的分布式图数据库,适合大规模数据存储;而 DGraph 是一款高性能、分布式的原生图数据库,其集群架构包括 zero、alpha 和 ratel 等组件,提供了良好的扩展性和数据一致性。 ...

Global site tag (gtag.js) - Google Analytics