用到的東西
- LDBC SNB datagen 0.3.2
- hadoop2.9.2
- maven3.6.3
- LDBC SNB implementations0.0.1
- neo4j-enterprise-3.5.4
1.安裝ldbc_snb_datagen
- ldbc_snb_datagen用來生成測試數據
- git地址是https://github.com/ldbc/ldbc_snb_datagen
安裝步驟:
1.1 下載Hadoop,解壓就好,無須配置和啓動hadoop。添加HADOOP_HOME
環境變量。
# 解壓hadoop
unzip hadoop-2.9.2.zip
# 添加環境變量
export HADOOP_HOME=/data6/linsongwang/hadoop-2.9.2
1.2 使用git同步源碼,速度有點慢,可以使用加速器下載,然後通過ftp上傳、解壓。添加環境變量LDBC_SNB_DATAGEN_HOM
。
# 同步源碼
git clone https://github.com/ldbc/ldbc_snb_datagen.git
# 添加環境變量
export LDBC_SNB_DATAGEN_HOME=/data6/linsongwang/ldbc_snb_datagen-0.3.2
1.3 進入ldbc_snb_datagen
解壓後的目錄,拷貝params-csv-basic.ini
文件命名爲params.ini
。
# 拷貝params-csv-basic.ini
cp params-csv-basic.ini params.ini
1.4 添加HADOOP_CLIENT_OPTS
環境變量,修改run.sh
文件中DEFAULT_HADOOP_HOME
參數的值爲我們的hadoop路徑。
# 用於運行內存,根據具體情況配置多大內存
export HADOOP_CLIENT_OPTS="-Xmx8G"
# 修改後的run.sh
DEFAULT_HADOOP_HOME=/data6/linsongwang/hadoop-2.9.2 #change to your hadoop folder
2.安裝maven
- ldbc_snb_datagen需要用到maven來打包,所以必須安裝maven並配置環境變量
- maven下載地址http://maven.apache.org/download.cgi
2.1 選擇一個maven的版本,右鍵“下載”複製鏈接地址,在linux中用wget命令。
# 下載maven
wget https://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
2.2 解壓maven,並配置環境變量
# 解壓maven
tar -zxvf apache-maven-3.6.3-bin.tar.gz
# 將maven目錄加入環境變量
export MAVEN_HOME=/data6/linsongwang/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin
# 查看環境變量
echo $MAVEN_HOME
echo $PATH
2.3 輸入mvn
不會提示找不到命令,有maven的提示信息,證明安裝成功。
3.生成測試數據
3.1 返回ldbc_snb_datagen-0.3.2
根目錄,運行run.sh
文件生成測試數據。
./run.sh
3.2 生成的數據在social_network
和substitution_parameters
兩個目錄下。social_network
存儲的是表單數據,substitution_parameters
存儲的是測試數據。
3.3 新建test-data
目錄,將social_network
目錄下``和static
兩個目錄的數據都拷貝到這個目錄下。
# 新建test-data目錄
mkdir test-data
# 拷貝數據
cp -r ldbc_snb_datagen-0.3.2/social_network/static/. test-data/
cp -r ldbc_snb_datagen-0.3.2/social_network/dynamic/. test-data/
注意:
拷貝數據到同一個目錄操作針對的是0.0.1版本的LDBC SNB implementations
在更高版本的implementations中只需要將social_network目錄添加進環境變量即可。
4.安裝LDBC SNB implementations
- 用於將生成的測試數據格式化層Neo4j可以使用的數據
- 將數據導入到Neo4j數據庫
- github地址https://github.com/ldbc/ldbc_snb_implementations
4.1 使用git同步源碼,或者用下載器下載再上傳到linux,再進行解壓。
# 同步源碼
git clone https://github.com/ldbc/ldbc_snb_datagen.git
4.2 添加環境變量
# 添加Neo4j環境變量
export NEO4J_HOME=/data6/linsongwang/neo4j-enterprise-3.5.4
# 將social_network/static目錄添加到環境變量
export NEO4J_DATA_DIR=/data6/linsongwang/test-data
# 在我版本中social_network目錄下的文件是XXX_0_0.csv的格式
# 所以需要添加_0_0.csv內容的POSTFIX環境變量
export POSTFIX="_0_0.csv"
# 添加neo4j數據庫的環境變量
# 默認數據庫在“neo4j根目錄/data/databases/graph.db”
export NEO4J_DB_DIR=/data6/linsongwang/neo4j-enterprise-3.5.4/data/databases/graph.db
# 查看環境變量
export
4.3 開始導入數據到neo4j圖數據庫
# 進入ldbc_snb_implementations目錄下的cypher/load-scripts目錄
cd ldbc_snb_implementations-0.0.1/cypher/load-scripts
# 執行load-in-one-step.sh,會自動導入數據到neo4j
./load-in-one-step.sh
5.測試
5.1 運行neo4j,進入http://localhost:7474界面,查看是否有數據
# 運行neo4j
bin/neo4j start
5.2 進入ldbc_snb_implementations-0.0.1/cypher/queries
目錄,下面有很多.cypher
的文件,是neo4j的測試文件,裏面寫的是neo4j命令。命令中包含$XXX
的參數,參數值就是datagen生成的substitution_parameters
目錄下對應文件的值。複製進入替換對應參數,在neo4j運行參數即可。
例:
# bi-1.cypher文件
MATCH (message:Message)
WHERE message.creationDate < $date
WITH count(message) AS totalMessageCountInt // this should be a subquery once Cypher supports it
WITH toFloat(totalMessageCountInt) AS totalMessageCount
MATCH (message:Message)
WHERE message.creationDate < $date
AND message.content IS NOT NULL
......
# 對應的測試數據文件是bi_1_param.txt
date
1311264000000
1312732800000
1313337600000
1313942400000
......
# 選擇一個數據替換$date
MATCH (message:Message)
WHERE message.creationDate < 1311264000000
WITH count(message) AS totalMessageCountInt // this should be a subquery once Cypher supports it
WITH toFloat(totalMessageCountInt) AS totalMessageCount
MATCH (message:Message)
WHERE message.creationDate < 1311264000000
AND message.content IS NOT NULL
......
注意:
測試數據.txt文件格式可能和.cypher文件需要個格式不一樣
如上的數據替換是錯的,因爲$date需要的參數是yyyyMMddHHmmssSSS格式數據,而.txt文件給出的數據是long時間戳