Titan -GraphDatabase 配置(一)-环境搭建

Titan -GraphDatabase 配置

System:Ubuntu 16.04

参考博文链接:

https://blog.csdn.net/u010960155/article/details/81069112

https://blog.csdn.net/wyc199273/article/details/51559442


"启动hadoop,报错Error JAVA_HOME is not set and could not be found"
只需将各个配置文件中的export JAVA_HOME=${JAVA_HOME}中路径修改为显示路径即可

一、简介

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本身只支持某些版本
主要在于 Hbase与Hadoop版本兼容:https://blog.csdn.net/hsg77/article/details/81033963
考虑到兼容性问题,选用如下版本:
    Java1.8

    [Hadoop:2.6.5 ](https://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.6.5/)
    [Hbase:1.2.8](https://mirrors.cnnic.cn/apache/hbase/hbase-1.2.8/)
    [elasticSearch:1.5.2](https://www.elastic.co/downloads/past-releases/elasticsearch-1-5-2)

三、安装步骤

(一)Hadoop安装

1、Java环境安装,不做赘述

2、ssh无密码登录

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
#验证是否成功
ssh localhost

3、安装hadoop

(1)、解压安装

# 我个人安装的软件都统一放在/opt文件夹
tar -xzvf hadoop-2.6.5.tar.gz -C /opt

(2)、增加相关文件夹

cd /opt/hadoop-2.6.5
mkdir tmp hdfs hdfs/data hdfs/name

(3)、设置环境变量

vim ~/.bashrc # 在文件末添加

#set hadoop path
export HADOOP_HOME=/opt/hadoop-2.6.5
export PATH=$PATH:$HADOOP_HOME/bin

#保存退出并使设置生效
source ~/.bashrc

(4)、修改配置文件 在/opt/hadoop-2.5.6/etc/hadoop文件夹中
1)将./etc/hadoop/hadoop-env.sh,./etc/hadoop/yarn-env.sh中的JAVA_HOME修改为显示路径
2)修改core-site.xml配置如下

    <configuration>
         <property>
            <name>fs.default.name</name>
            <value>hdfs://localhost:9000</value>
            <description>HDFS的URI,文件系统://namenode标识:端口号</description>
        </property>

        <property>
            <name>hadoop.tmp.dir</name>
            <value>/root/hadoop/tmp</value>
            <description>namenode上本地的hadoop临时文件夹</description>
        </property>
    </configuration>
3)修改hdfs-site.xml配置
<configuration>
<!—hdfs-site.xml-->
    <property>
        <name>dfs.name.dir</name>
        <value>/opt/hadoop-2.6.5/hdfs/name</value>
        <description>namenode上存储hdfs名字空间元数据 </description> 
    </property>

    <property>
        <name>dfs.data.dir</name>
        <value>/opt/hadoop-2.6.5/hdfs/data</value>
        <description>datanode上数据块的物理存储位置</description>
    </property>

    <property>
        <name>dfs.replication</name>
        <value>1</value>
        <description>副本个数,配置默认是3,应小于datanode机器数量</description>
    </property>
</configuration>
4)修改mapred-site.xml配置
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
5)修改yarn-site.xml配置
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>${yarn.resourcemanager.hostname}:8099</value>
    </property>
</configuration>

(5)、Hadoop启动

cd /opt/hadoop-2.6.5
#格式化namenode
./bin/hadoop namenode -format
#启动NameNode 和 DataNode 守护进程
./sbin/start-dfs.sh
#启动ResourceManager 和 NodeManager 守护进程
./sbin/start-yarn.sh

(6)、启动验证
1)执行jps命令,如有如下进程,说明Hadoop正常启动

# jps
54679 NameNode
54774 DataNode
15741 Jps
9664 Master
55214 NodeManager
55118 ResourceManager
54965 SecondaryNameNode
2)在浏览器中输入http://localhost:8099、http://localhost:50070查看管理页面

4、Hbase安装

(1)、解压并配置安装路径

   sudo tar -zxvf hbase-1.2.8-bin.tar.gz -C /opt
   cd /opt/habase-1.2.8
   sudo vim ~/.bashrc
   export HBASE_HOME=/opt/hbase-1.2.8
   export PATH=$PATH:$HBASE_HOME
   source ~/.bashrc

(2)、验证是否安装成功
执行命令 hbase version 得:

HBase 1.2.8
Source code repository git://amanita/home/busbey/projects/hbase/hbase revision=56d38a088319413dc3a70e90b1b8e655c6a22340
Compiled by busbey on Fri Oct 12 13:02:02 CDT 2018
From source with checksum a44d1d22c15c436b6a9ceade7803cd63

(3)、配置单机模式

1)配置/opt/hbase-1.2.8/conf/hbase-env.sh
vim conf/hbase-env.sh
export JAVA_HOME=/opt/jdk-1.8.0   #修改为显示路径
export HBASE_MANAGES_ZK=true        #配置由hbase自己管理zookeeper,不需要单独的zookeeper
2)、配置conf/hbase-site.xml
 <configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>/opt/hbase-1.2.8/hbase-tmp</value>
    </property>
 </configuration>
3)、启动Hbase
./bin/start-hbase.sh

5、elasticsearch安装

(1)、解压并剪切到/opt

unzip elasticsearch-1.5.2.zip
sudo mv elasticsearch-1.5.2 /opt

(2)、启动elasticsearch,默认在终端运行,终端关闭服务也会关闭,可使用nouhp在后台运行

./bin/elasticsearch

附注:如果报错找不到JAVA_HOME,则修改./bin/elasticsearch.sh 顶部添加

export JAVA_HOME=/opt/jdk1.8.0

6、安装Titan

(1)、jar包修正
Titan-1.0.0有两个版本,一个是和Hadoop1组合,一个是Hadoop2组合
当使用和Hadoop2组合时,其本身的lib中jar存在问题
删除lib文件夹中的jar包:hadoop-core-1.2.1.jar
添加所需要的jar包:
http://search.maven.org/remotecontent?filepath=com/thinkaurelius/titan/titan-hadoop/1.0.0/titan-hadoop-1.0.0.jar
http://search.maven.org/remotecontent?filepath=com/thinkaurelius/titan/titan-hadoop-core/1.0.0/titan-hadoop-core-1.0.0.jar

(2)使用gremlin客户端测试服务是否启动成功

附注:如果报错找不到JAVA_HOME,则修改./bin/titan.sh 顶部添加

export JAVA_HOME=/opt/jdk1.8.0
cd /opt/titan-1.0.0-hadoop2/
./bin/gremlin.sh
#将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]

四、总结

人生苦短,我选neo4j

猜你喜欢

转载自blog.csdn.net/u011809553/article/details/84237954