使用LDBC SNB測試neo4j性能

用到的東西

  1. LDBC SNB datagen 0.3.2
  2. hadoop2.9.2
  3. maven3.6.3
  4. LDBC SNB implementations0.0.1
  5. neo4j-enterprise-3.5.4

1.安裝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

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_networksubstitution_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

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時間戳

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章