1. 程式人生 > >Titan -GraphDatabase 配置(一)-環境搭建

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