图数据库Titan安装与部署

Titan简介

Titan是一个分布式的图数据库,支持横向扩展,可容纳数千亿个节点和边。 Titan支持事务,并且可以支撑上千用户并发进行复杂图遍历操作。

Titan包含下面这些特性:

  1. 弹性与线性扩展
  2. 分布式架构,可容错
  3. 支持多数据中心的高可用和热备
  4. 支持ACID和最终一致性
  5. 支持多种存储后端
    Apache Cassandra
    Apache HBase
    Oracle BerkeleyDB
    Akiban Persistit
  6. 支持位置、数字和全文检索
    ElasticSearch
    Apache Lucene
  7. 原生支持TinkerPop软件栈
    Gremlin graph query language
    Frames object-to-graph mapper
    Rexster graph server
    Blueprints standard graph API
  8. 开源协议 Apache 2 license

Titan安装流程

在这里使用Hbase存储数据,elasticsearch做索引。但Titan本身对以上工具支持只限某些版本,下图是Titan兼容版本一览。

最终使用 Titan1.0.0 + Hbase1.2.4 + elasticsearch1.5.2 + Hadoop2.5.2 进行安装
虽然Titan并未说明支持Hbase1.2.4,但在安装使用中并未发现问题,是否兼容还有待深入验证。
我的系统是Ubuntu 14.04.1,hadoop配置伪分布模式,hbase配置单机模式,java版本为jdk1.8。值得注意的是Titan需要Java8,推荐Oracle Java 8

hadoop安装

  1. 下载hadoop-2.5.2.tar.gz 地址http://mirrors.cnnic.cn/apache/hadoop/common/
  2. tar -xzvf hadoop-2.5.2.tar.gz。 解压缩到当前目录
  3. cd hadoop-2.5.2
  4. 配置conf/core-site.xml

          

          

            1

        

        

  5. 配置conf/Hadoop-env.sh,将JAVA_HOME改为JDK安装目录,which java 查看目录

    export JAVA_HOME=`/usr/libexec/java`

     

  6. 启动hadoop服务

    sbin/start-dfs.sh

启动成功后,执行jps,可以看到三个服务 NameNode、DataNode和SecondaryNameNode。成功启动后,可以访问 Web 界面 http://localhost:50070 来查看 Hadoop 的信息

图数据库Titan安装与部署_第1张图片

 

hbase安装

安装Hbase单机模式,需要注意的是Hbase对Hadoop版本兼容的问题,下图是hadoop与habse之间支持表

Hadoop version support matrix
"S" = supported

"X" = not supported

"NT" = Not tested

  1. 下载hbase-1.2.4-bin.tar.gz 地址http://archive.apache.org/dist/hbase/
  2. 解压hbase

    sudo tar -xvf hbase-1.2.4-bin.tar.gz   #解压安装源码包

    cd hbase-1.2.4

     

  3. 配置安装路径

    #将hbase下的bin目录添加到系统的path中,在/etc/profile文件尾行添加如下的内容

    sudo vim /etc/profile

    export  PATH=$PATH:/usr/hbase/bin

    source /etc/profile #执行source命令使上述配置在当前终端立即生效

     

  4. 验证是否安装成功

    hbase version #成功会显示如下信息

    HBase 1.2.4

    Source code repository git://asf-dev/home/busbey/projects/hbase revision=67592f3d062743907f8c5ae00dbbe1ae4f69e5af

    Compiled by busbey on Tue Oct 25 18:10:20 CDT 2016

    From source with checksum b45f19b5ac28d9651aa2433a5fa33aa0

     

  5. 安装单机模式
    (1) 配置/conf/hbase-env.sh

    vim conf/hbase-env.sh

     export JAVA_HOME=/usr/java/jdk  #配置本机的java安装根目录

     export HBASE_MANAGES_ZK=true        #配置由hbase自己管理zookeeper,不需要单独的zookeeper


    (2) 配置/conf/hbase-site.xml。在启动Hbase前需要设置属性hbase.rootdir,用于指定Hbase数据的存储位置

    vim conf/hbase-site.sh

     

        

            hbase.rootdir

            file:///usr/hbase/hbase-tmp

        

     


    (3) 启动Hbase

    bin/start-hbase.sh

     

安装elasticsearch

  1. 下载elasticsearch-1.5.2.zip
  2. 解压文件

    unzip elasticsearch-1.5.2.zip

     

  3. 启动elasticsearch.es默认是在终端运行,终端关闭服务也会关闭。服务最好使用nouhp在后台运行

    bin/elasticsearch #看到如下输出,安装成功

    [2017-02-23 11:15:46,337][INFO ][node                     ] [Yellow Claw] version[1.5.2], pid[18336],       build[62ff986/2015-04-27T09:21:06Z]

    [2017-02-23 11:15:46,338][INFO ][node                     ] [Yellow Claw] initializing ...

    [2017-02-23 11:15:46,344][INFO ][plugins                  ] [Yellow Claw] loaded [], sites []

    [2017-02-23 11:15:48,946][INFO ][node                     ] [Yellow Claw] initialized

    [2017-02-23 11:15:48,946][INFO ][node                     ] [Yellow Claw] starting ...

    [2017-02-23 11:15:49,113][INFO ][transport                ] [Yellow Claw] bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/30.30.17.84:9300]}

    [2017-02-23 11:15:49,163][INFO ][discovery                ] [Yellow Claw] elasticsearch/OZ853SsXRIy-oVG0EWPGHA

    [2017-02-23 11:15:52,941][INFO ][cluster.service          ] [Yellow Claw] new_master [Yellow Claw][OZ853SsXRIy-oVG0EWPGHA][master.domain.com][inet[/30.30.17.84:9300]], reason: zen-disco-join (elected_as_master)

    [2017-02-23 11:15:52,998][INFO ][http                     ] [Yellow Claw] bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/30.30.17.84:9200]}

    [2017-02-23 11:15:52,999][INFO ][node                     ] [Yellow Claw] started

    [2017-02-23 11:15:53,010][INFO ][gateway                  ] [Yellow Claw] recovered [0] indices into cluster_state

    [2017-02-23 11:18:53,783][INFO ][cluster.metadata         ] [Yellow Claw] [titan] creating index, cause [api], templates [], shards [5]/[1], mappings []

    [2017-02-23 11:22:22,191][INFO ][cluster.metadata         ] [Yellow Claw] [titan] create_mapping [vertices]

    [2017-02-23 11:22:22,235][INFO ][cluster.metadata         ] [Yellow Claw] [titan] create_mapping [edges]

    [2017-02-23 11:22:22,253][INFO ][cluster.metadata         ] [Yellow Claw] [titan] update_mapping [edges]

     

安装Titan

准备工作都已完成,下面安装Titan。Titan1.0.0有两个版本,一个是hadoop1,另一个是hadoop2。在这里使用的是hadoop2,值得注意的是这个版本本身有个坑,它的lib中本身jar包存在问题,下面会详细说明。

  1. 下载titan-1.0.0-hadoop2.zip。地址https://github.com/thinkaurelius/titan/wiki/Downloads
  2. 解压titan

    unzip titan-1.0.0-hadoop2.zip

     

  3. 删除并添加相关jar包 。官方提供的hadoop2的安装包有一些问题,如果想要顺利的使用titan,必须删除相关的jar包,并添加一些缺失的jar包
    (a) 删除异常jar包

    hadoop-core-1.2.1.jar

    (b)添加所需要的jar包,这些jar包

    titan-hadoop-1.0.0.jar

    titan-hadoop-core-1.0.0.jar

     

  4. 使用Gremlin客户端测试服务是否启动成功

    /titan/titan-1.0.0-hadoop2/bin/gremlin.sh    #启动gremlin控制台

     

    #将titan中自带例子众神图谱加载进来,并执行简单的图查询操作帮助熟悉gremlin console

    #titan getting started [http://s3.thinkaurelius.com/docs/titan/1.0.0/getting-started.html]

     

    gremlin> graph = TitanFactory.open('conf/titan-hbase-es.properties')   #创建一个graph实例,使用hbase存储,es索引。执行完后可以看到habse中多了一个titan表

    ==>standardtitangraph[cassandrathrift:[127.0.0.1]]

    gremlin> GraphOfTheGodsFactory.load(graph)    #将titan中的众神图谱导入数据库。导完以后,hbase titan表里会增加很多行数据。

    ==>null

    gremlin> g = graph.traversal()   #遍历图

    ==>graphtraversalsource[standardtitangraph[cassandrathrift:[127.0.0.1]], standard]

     

    #图查询案例

    gremlin> saturn = g.V().has('name', 'saturn').next()

    ==>v[256]

    gremlin> g.V(saturn).valueMap()

    ==>[name:[saturn], age:[10000]]

    gremlin> g.V(saturn).in('father').in('father').values('name')

    ==>hercules

    gremlin> g.E().has('place', geoWithin(Geoshape.circle(37.97, 23.72, 50)))

    ==>e[a9x-co8-9hx-39s][16424-battled->4240]

    ==>e[9vp-co8-9hx-9ns][16424-battled->12520]

    gremlin> g.E().has('place', geoWithin(Geoshape.circle(37.97, 23.72, 50))).as('source').inV().as('god2').select('source').outV().as('god1').select('god1', 'god2').by('name')

    ==>[god1:hercules, god2:hydra]

    ==>[god1:hercules, god2:nemean]

     

    总结

    titan依赖比较多,所以安装依赖环境比较花费时间,如果机器本身有titan支持数据存储和索引平台,那安装titan应该不用太多时间。
    titan本身是一个比较新的图数据库,未达到完全稳定,其官方版本自身存在一定问题
    titan社区不是很活跃,如果在使用中遇到了问题可能会找不到相关的资料
    目前在DB-Engines排名前三的图数据库分别是:neo4j,orient-DB,titan(排名分先后)。neo4j是目前使用人数最多的图数据库,其版本稳定,文档较全,但其无法应用于大规模图数据。orient-DB也是分布式图数据库,但其并不是专业图数据库,除支持图模型之外,它还支持文档、kv模型。
    titan作为分布式的图数据库,支持gremlin语言,不仅能解决大规模图数据的问题,还能完成几乎的实时查询,未来还是很有潜力。

参考文章

  1. 官方文档  http://s3.thinkaurelius.com/docs/titan/1.0.0/

  2. DB-Engines https://db-engines.com/en/ranking

你可能感兴趣的:(数据库)