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

    <configuration>

          <!-- Hadoop 伪分布式配置 -->

          <!-- 使用 hadoop-2.5.2/tmp 做为 hdfs 的存储目录,默认为 /tmp

          <property>

             <name>hadoop.tmp.dir</name>

             <value>file:/home/lihu.clh/hadoop/hadoop-2.5.2/tmp</value>

          </property>

          <property>

             <name>fs.defaultFS</name>

             <value>hdfs://localhost:9000</value>

          </property>

    </configuration>

  5. 配置conf/hdfs-site.xml

    <configuration>

        <property>

            <name>dfs.replication</name>

            <!-- 伪分布设置为 1 -->

            <value>1</value>

        </property>

        <!--

        <property>

            <name>dfs.namenode.name.dir</name>

             <value>file:/home/lihu.clh/hadoop/hadoop-2.5.2/tmp/dfs/name</value>

        </property>

        <property>

            <name>dfs.datanode.data.dir</name>

            <value>file:/home/lihu.clh/hadoop/hadoop-2.5.2/tmp/dfs/data</value>

        </property>

        -->

    </configuration>

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

    export JAVA_HOME=`/usr/libexec/java`

  7. 启动hadoop服务

    sbin/start-dfs.sh

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

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

     <configuration>

        <property>

            <name>hbase.rootdir</name>

            <value>file:///usr/hbase/hbase-tmp</value>

        </property>

     </configuration>

    (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

图数据库Titan安装与部署相关推荐

  1. 达梦数据库DMHS安装及部署

    目录 一.基础概念 1.1DMHS 1.2部署分配 二.安装前准备 2.1oracle端(源端)前期准备 2.1.1检查系统信息 2.1.2检查系统内存与存储空间 2.1.3检查数据库管理系统 2.2 ...

  2. 图数据库 OrientDB 安装 及 初步使用

    目录 安装 Java 安装OrientDB 命令行操作OrientDB 创建数据库 列出数据库 断开数据库 连接数据库 创建 class 插入记录 查询记录 更新记录 删除记录 删除数据库 玩 Spa ...

  3. 图数据库neo4j安装、neo4j使用

    安装 yum install java-1.8.0-openjdk tar -xf neo4j-community-3.5.2-unix.tar.gz ./bin/neo4j start 外部访问需修 ...

  4. installshield 安装mysql数据库_Installshield2010 实现web部署和数据库安装示例 - 邀月周记 - CS......

    Installshield2010 实现web部署和数据库安装示例 收藏 此文于2010-05-21被推荐到CSDN首页 如何被推荐? 在前面两篇文章中,介绍了如何利用Installshield集成F ...

  5. 常用的图数据库对比(Neo4j、FlockDB、AllegroGrap、GraphDB、InfiniteGraph、TITAN、OrientDb)

    1.数据库分类: 传统的关系数据库和NoSQL数据库 传统的关系数据库:mySQL.oracle NoSQL数据库分为Graph,Document,Column Family.Key-Value St ...

  6. cayley 图数据库简介和安装以及使用

    图数据库的介绍 在如今数据库群雄逐鹿的时代中,非关系型数据库(NoSQL)已经占据了半壁江山,而图数据库(Graph Database)更是攻城略地,成为其中的佼佼者.   所谓图数据库,它应用图理论 ...

  7. 图数据库——大数据时代的高铁

    如果把传统关系型数据库比做火车的话,那么到现在大数据时代,图数据库可比做高铁.它已成为NoSQL中关注度最高,发展趋势最明显的数据库. 简介 在众多不同的数据模型里,关系数据模型自20世纪80年代就处 ...

  8. 图数据库 TigerGraph 使用全攻略

    与关系型数据库或其他类型的NoSQL数据库相比,图数据库提供了更有效的关系和网络建模方法.在1999年左右,图数据库领域还是Neo4j一家独大,但是发展至今,该领域也出现了很多新玩家和新产品. Tig ...

  9. neo4j图数据库:结构化数据流水线、非结构化数据流水线

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 智能对话系统:Unit对话API 在线聊天的总体架构与工具介绍 ...

最新文章

  1. 微信小程序开发的完整流程介绍,新手必读
  2. 在controller中无法通过注解@Value获取到配置文件中定义的值解决办法
  3. MySQL有关Group By的优化
  4. 「BZOJ 2152」聪聪可可
  5. scrapy-splash抓取动态数据例子三
  6. chrome默认为浏览器并且设置外部调用默认的启动参数
  7. ruby 连接mysql数据库
  8. int 范围_Java学习之随机生成5个(范围1——33)不同数字的思考
  9. imagick php 缩放,php使用imagick模块实现图片缩放、裁剪、压缩示例
  10. 64位Eclipse运行时提示“Failed to load the JNI shared library \Java\jre6\bin\client\jvm.dll”的一个解决方案
  11. 搜狗推出卫星影像地图 将覆盖全部七个奥运城市
  12. 电路第五版课后完全答案百度扫描(免费)
  13. Symbol Factory Universal v3.X 工业图形库
  14. C++ 语法篇之 static 用法
  15. 【例子】固定表格的首行与首列
  16. 注销consul节点
  17. 床的标准尺寸和规格都有哪种
  18. html+css模仿微信主页面
  19. 实现一个Android锁屏App功能的难点总结
  20. 南京工业互联网产业联盟成立

热门文章

  1. BAD SLAM | 直接法实时BA+RGBD基准数据集(CVPR2019)
  2. 如何访问webService接口
  3. Anaconda | conda常用命令
  4. pymatgen绘制能带态密度图(band+DOS)
  5. charts混合使用 elementui和e_vue模块化(echart+element ui)
  6. ISME: 北大吴晓磊课题组揭示合作演化新机制:“自私”驱动合作关系的建立?...
  7. 微生物领域非顶级期刊概述
  8. 人类吃屎用屎指南:用做肥料不如制咖啡、当展品、做炸弹
  9. pve rust 能拆家吗_RUST:2020年9月第四周:向上向上再向上!
  10. R语言使用randomForest包构建随机森林模型(Random forests)、使用importance函数查看特征重要度、使用table函数计算混淆矩阵评估分类模型性能、包外错误估计OOB