图数据库Titan安装与部署
Titan简介
Titan是一个分布式的图数据库,支持横向扩展,可容纳数千亿个节点和边。 Titan支持事务,并且可以支撑上千用户并发进行复杂图遍历操作。
Titan包含下面这些特性:
- 弹性与线性扩展
- 分布式架构,可容错
- 支持多数据中心的高可用和热备
- 支持ACID和最终一致性
- 支持多种存储后端
Apache Cassandra
Apache HBase
Oracle BerkeleyDB
Akiban Persistit - 支持位置、数字和全文检索
ElasticSearch
Apache Lucene - 原生支持TinkerPop软件栈
Gremlin graph query language
Frames object-to-graph mapper
Rexster graph server
Blueprints standard graph API - 开源协议 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安装
- 下载hadoop-2.5.2.tar.gz 地址http://mirrors.cnnic.cn/apache/hadoop/common/
- tar -xzvf hadoop-2.5.2.tar.gz。 解压缩到当前目录
- cd hadoop-2.5.2
- 配置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>
- 配置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>
- 配置conf/Hadoop-env.sh,将JAVA_HOME改为JDK安装目录,which java 查看目录
export JAVA_HOME=`/usr/libexec/java`
- 启动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
- 下载hbase-1.2.4-bin.tar.gz 地址http://archive.apache.org/dist/hbase/
- 解压hbase
sudo tar -xvf hbase-
1.2
.
4
-bin.tar.gz #解压安装源码包
cd hbase-
1.2
.
4
- 配置安装路径
#将hbase下的bin目录添加到系统的path中,在/etc/profile文件尾行添加如下的内容
sudo vim /etc/profile
export PATH=$PATH:/usr/hbase/bin
source /etc/profile #执行source命令使上述配置在当前终端立即生效
- 验证是否安装成功
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
- 安装单机模式
(1) 配置/conf/hbase-env.shvim 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
- 下载elasticsearch-1.5.2.zip
- 解压文件
unzip elasticsearch-
1.5
.
2
.zip
- 启动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包存在问题,下面会详细说明。
- 下载titan-1.0.0-hadoop2.zip。地址https://github.com/thinkaurelius/titan/wiki/Downloads
- 解压titan
unzip titan-
1.0
.
0
-hadoop2.zip
- 删除并添加相关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
- 使用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语言,不仅能解决大规模图数据的问题,还能完成几乎的实时查询,未来还是很有潜力。
参考文章
官方文档 http://s3.thinkaurelius.com/docs/titan/1.0.0/
DB-Engines https://db-engines.com/en/ranking
图数据库Titan安装与部署相关推荐
- 达梦数据库DMHS安装及部署
目录 一.基础概念 1.1DMHS 1.2部署分配 二.安装前准备 2.1oracle端(源端)前期准备 2.1.1检查系统信息 2.1.2检查系统内存与存储空间 2.1.3检查数据库管理系统 2.2 ...
- 图数据库 OrientDB 安装 及 初步使用
目录 安装 Java 安装OrientDB 命令行操作OrientDB 创建数据库 列出数据库 断开数据库 连接数据库 创建 class 插入记录 查询记录 更新记录 删除记录 删除数据库 玩 Spa ...
- 图数据库neo4j安装、neo4j使用
安装 yum install java-1.8.0-openjdk tar -xf neo4j-community-3.5.2-unix.tar.gz ./bin/neo4j start 外部访问需修 ...
- installshield 安装mysql数据库_Installshield2010 实现web部署和数据库安装示例 - 邀月周记 - CS......
Installshield2010 实现web部署和数据库安装示例 收藏 此文于2010-05-21被推荐到CSDN首页 如何被推荐? 在前面两篇文章中,介绍了如何利用Installshield集成F ...
- 常用的图数据库对比(Neo4j、FlockDB、AllegroGrap、GraphDB、InfiniteGraph、TITAN、OrientDb)
1.数据库分类: 传统的关系数据库和NoSQL数据库 传统的关系数据库:mySQL.oracle NoSQL数据库分为Graph,Document,Column Family.Key-Value St ...
- cayley 图数据库简介和安装以及使用
图数据库的介绍 在如今数据库群雄逐鹿的时代中,非关系型数据库(NoSQL)已经占据了半壁江山,而图数据库(Graph Database)更是攻城略地,成为其中的佼佼者. 所谓图数据库,它应用图理论 ...
- 图数据库——大数据时代的高铁
如果把传统关系型数据库比做火车的话,那么到现在大数据时代,图数据库可比做高铁.它已成为NoSQL中关注度最高,发展趋势最明显的数据库. 简介 在众多不同的数据模型里,关系数据模型自20世纪80年代就处 ...
- 图数据库 TigerGraph 使用全攻略
与关系型数据库或其他类型的NoSQL数据库相比,图数据库提供了更有效的关系和网络建模方法.在1999年左右,图数据库领域还是Neo4j一家独大,但是发展至今,该领域也出现了很多新玩家和新产品. Tig ...
- neo4j图数据库:结构化数据流水线、非结构化数据流水线
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 智能对话系统:Unit对话API 在线聊天的总体架构与工具介绍 ...
最新文章
- 微信小程序开发的完整流程介绍,新手必读
- 在controller中无法通过注解@Value获取到配置文件中定义的值解决办法
- MySQL有关Group By的优化
- 「BZOJ 2152」聪聪可可
- scrapy-splash抓取动态数据例子三
- chrome默认为浏览器并且设置外部调用默认的启动参数
- ruby 连接mysql数据库
- int 范围_Java学习之随机生成5个(范围1——33)不同数字的思考
- imagick php 缩放,php使用imagick模块实现图片缩放、裁剪、压缩示例
- 64位Eclipse运行时提示“Failed to load the JNI shared library \Java\jre6\bin\client\jvm.dll”的一个解决方案
- 搜狗推出卫星影像地图 将覆盖全部七个奥运城市
- 电路第五版课后完全答案百度扫描(免费)
- Symbol Factory Universal v3.X 工业图形库
- C++ 语法篇之 static 用法
- 【例子】固定表格的首行与首列
- 注销consul节点
- 床的标准尺寸和规格都有哪种
- html+css模仿微信主页面
- 实现一个Android锁屏App功能的难点总结
- 南京工业互联网产业联盟成立
热门文章
- BAD SLAM | 直接法实时BA+RGBD基准数据集(CVPR2019)
- 如何访问webService接口
- Anaconda | conda常用命令
- pymatgen绘制能带态密度图(band+DOS)
- charts混合使用 elementui和e_vue模块化(echart+element ui)
- ISME: 北大吴晓磊课题组揭示合作演化新机制:“自私”驱动合作关系的建立?...
- 微生物领域非顶级期刊概述
- 人类吃屎用屎指南:用做肥料不如制咖啡、当展品、做炸弹
- pve rust 能拆家吗_RUST:2020年9月第四周:向上向上再向上!
- R语言使用randomForest包构建随机森林模型(Random forests)、使用importance函数查看特征重要度、使用table函数计算混淆矩阵评估分类模型性能、包外错误估计OOB