用到的东西
- 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_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
- 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_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
- 用于将生成的测试数据格式化层Neo4j可以使用的数据
- 将数据导入到Neo4j数据库
- github地址https://github.com/ldbc/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时间戳