JBR实验- LDBC SNB
一、 jbr 实验类型 LDBC社交网络基准(SNB) 交互式和商业智能(BI)工作负载; 在单个(集中式)RDF数据集上执行。
数据集是在Turtle中使用 LDBC SNB Hadoop datagen,
合并成一个N-Triples文件,并使用SPARQL版本的交互式短查询(IS1-7)和复杂查询(IC1-14)进行查询。
和/或BI (v1, 2018)查询(BI1-24, BI16除外),取决于 workload 配置字段。
要求
- node . js (18岁或以上)
- 码头工人 的调用所必需的 LDBC SNB数据)
- jbr (需要在命令行上初始化、准备和运行实验)
快速启动
1. 安装jbr
jbr 是一个命令行工具,它使实验能够初始化、准备和启动。 它可以从npm注册表中安装:
$ npm install -g jbr
或者
$ yarn global add jbr
2. 初始化新实验
使用 jbr CLI工具,初始化一个新的实验:
$ jbr init ldbc-snb my-experiment
$ cd my-experiment
这将创建一个新的 my-experiment 这个实验类型的默认配置目录。
3. 配置所需的挂钩
此实验类型要求您配置特定的SPARQL端点,以便将查询发送到 hookSparqlEndpoint.
该钩子的值可以按如下方式设置,例如 sparql-endpoint-comunica:
$ jbr set-hook hookSparqlEndpoint sparql-endpoint-comunica
4. 准备实验
为了运行所有预处理步骤,比如创建所有需要的数据集,调用prepare步骤:
$ jbr prepare
这将执行以下步骤,如果每个步骤的输出已经存在(除非 jbr prepare -f 使用):
- 为配置的比例因子运行LDBC SNB datagen,它将生成Turtle文件和替换参数
generated/out-snb/。这也会被跳过generated/out-snb/已删除,但所有从它派生的文件(步骤2-4)为配置workload存在,例如在使用预生成的资产时。 - 将所有Turtle文件合并为一个文件
generated/dataset.nt文件。datagen的空白节点标签是全局唯一的,并被保留。 - 创建
generated/parameters-persons.csv(人interactive_1_param.txt),generated/parameters-messages.csv(帖子和评论的种子随机样本)用于简短查询。 - 将所有交互式查询模板实例化为
generated/queries/(如果workload是interactive或者all),以及所有BI查询模板generated/queries-bi/(如果workload是bi或者all). BI查询需要数据源bi_N_param.txt文件,如果generated/out-snb/, BI查询只能通过重新生成现有的预生成资产(jbr prepare -f)。 - 可选地将数据集转换为HDT。
所有准备好的文件都将包含在 generated/ 目录:
generated/
dataset.hdt # If generateHdt is enabled
dataset.hdt.index.v1-1 # If generateHdt is enabled
dataset.nt
out-snb/
social_network/
social_network_activity_0_0.ttl
social_network_person_0_0.ttl
social_network_static_0_0.ttl
substitution_parameters/
bi_1_param.txt
...
interactive_1_param.txt
...
parameters-messages.csv
parameters-persons.csv
params.ini
queries/ # If workload is interactive or all
interactive-complex-1.sparql
...
interactive-short-7.sparql
queries-bi/ # If workload is bi or all
bi-1.sparql
...
bi-24.sparql
5. 进行实验
一旦实验完全配置好并准备好,您就可以运行它了:
$ jbr run
运行步骤完成后,结果将显示在 output/ 目录中。
输出
实验运行后生成以下输出。
output/query-times.csv (每个查询实例化一行,在复制轮上聚合):
name;id;error;errorDescription;failures;hash;httpRequests;httpRequestsMax;httpRequestsMin;httpRequestsStd;replication;results;resultsMax;resultsMin;time;timeMax;timeMin;times;timestamps;timestampsMax;timestampsMin;timestampsStd;timeStd;timestampsAll
interactive-short-4;0;false;;0;2e21f854f7ee6112613cc5912d141bdb;0;0;0;0;3;1;1;1;24.666666666666668;28;22;28 24 22;21.666666666666668;24;20;1.699673171197595;2.494438257849294;"[[20],[24],[21]]"
interactive-short-4;1;false;;0;29533521492a24c11be9676db0f16540;0;0;0;0;3;1;1;1;17.666666666666668;23;13;17 23 13;17.666666666666668;23;13;4.109609335312651;4.109609335312651;"[[17],[23],[13]]"
在这个旁边, output/query-results-raw.json 包含原始查询结果,
和 output/logs/ 包含数据日志和 load-time.csv启动端点和启动测量查询之间的毫秒时间(包括预热轮)。
查询
中的查询模板 lib/templates/queries/
的SPARQL查询 SolidBench,
而这些都是基于 SNB交互式SPARQL实现,
使用原版 http://www.ldbc.eu/ldbc_socialnet/1.0/ 由datagen发出的词汇表。
由于SPARQL没有最短路径运算符, interactive-complex-13 (单最短路径)只考虑最多4跳的路径(否则返回-1),
和 interactive-complex-14 (可信连接路径)只考虑最多3跳的最短路径。
短查询需要一个 person 或者 message 从生成的CSV文件中提取IRI。
复杂查询从数据源获取参数 interactive_N_param.txt 文件。
中的BI查询模板 lib/templates/queries-bi/
都是基于 SNB BI SPARQL实现,
中列出的更改 他们的自述.
他们从数据源中获取参数 bi_N_param.txt 文件。
bi-16 被排除,因为它的变长路径边界不能表示为单个模板,和 bi-25 被排除,因为它在上游是空的。
所有的参数选择都是确定性的 querySeed.
配置
默认生成的配置文件(jbr-experiment.json),实验结果如下:
{
"@context": [
"https://linkedsoftwaredependencies.org/bundles/npm/jbr/^6.0.0/components/context.jsonld",
"https://linkedsoftwaredependencies.org/bundles/npm/@jbr-experiment/ldbc-snb/^6.0.0/components/context.jsonld"
],
"@id": "urn:jbr:my-experiment",
"@type": "ExperimentLdbcSnb",
"scale": "0.1",
"hadoopMemory": "4G",
"queryCount": 5,
"querySeed": 12345,
"workload": "interactive",
"generateHdt": false,
"endpointUrl": "http://localhost:3001/sparql",
"endpointUrlExternal": "http://localhost:3001/",
"queryRunnerReplication": 3,
"queryRunnerWarmupRounds": 1,
"queryRunnerRequestDelay": 0,
"queryRunnerEndpointAvailabilityCheckTimeout": 1000,
"queryRunnerUrlParams": {},
"hookSparqlEndpoint": {
"@id": "urn:jbr:my-experiment:hookSparqlEndpoint",
"@type": "HookNonConfigured"
}
}
任何配置更改都需要重新运行准备步骤。
配置字段
scale:瑞士央行比例因子,如0.1,0.3,1,3,10,……默认为0.1.hadoopMemory: Hadoop datagen的最大堆大小,如4G。更高的规模因子需要更多的内存。queryCount:每个查询模板的实例化数。对于交互式工作负载,这不能超过数据代理的替换参数文件中的行数。对于BI工作负载,如果文件的行较少(例如bi_20_param.txt,它总是有3行)。querySeed:用于选择查询参数的随机种子。workload:准备和运行的工作负载:interactive(查询generated/queries/),bi(查询generated/queries-bi/),或all(两个)。默认为interactive.generateHdt如果……dataset.hdt也应该生成。endpointUrl的SPARQL端点所通过的URLhookSparqlEndpoint胡克会暴露的。endpointUrlExternal的SPARQL端点所通过的URLhookSparqlEndpoint胡克会暴露的。这将用于等待端点可用。queryRunnerReplication:复制运行数sparql-benchmark-runner.queryRunnerWarmupRounds:热身跑的次数sparql-benchmark-runner.queryRunnerRequestDelay:请求之间的延迟,单位为毫秒sparql-benchmark-runner.queryRunnerEndpointAvailabilityCheckTimeout:检查SPARQL端点是否可用的超时时间(以毫秒为单位)。queryRunnerUrlParams:字符串映射的JSON记录,其中包含将传递给SPARQL端点的URL参数。queryTimeoutFallback:单个查询的可选超时值(以毫秒为单位),在SPARQL端点钩子超时失败时用作回退。这应该始终高于SPARQL端点钩子中配置的超时值。
许可证
j .js是由 鲁本Taelman.
本代码版权归 根特大学- imec 并在 麻省理工学院的许可.