用到的东西

  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_HOME

# 同步源码
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_datagen默认生成的数据量为“sf1”,修改“parmas.ini”文件来配置数据量:

# sf1
ldbc.snb.datagen.generator.scaleFactor:snb.interactive.1

# sf10
ldbc.snb.datagen.generator.scaleFactor:snb.interactive.10

# sf100
ldbc.snb.datagen.generator.scaleFactor:snb.interactive.100

5.安装LDBC SNB implementations

5.1 使用git同步源码,或者用下载器下载再上传到linux,再进行解压。

# 同步源码
git clone https://github.com/ldbc/ldbc_snb_datagen.git

5.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-5.5.4/data/databases/graph.db

# 查看环境变量
export

5.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

6.测试

6.1 运行neo4j,进入http://localhost:7474界面,查看是否有数据

# 运行neo4j
bin/neo4j start

6.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时间戳