配置 Apache Arrow 服务器

GDS 支持通过 Apache Arrow Flight 导入图和导出属性。本章专门介绍如何将 Arrow Flight 服务器配置为 Neo4j 和 GDS 安装的一部分。有关将 Arrow Flight 与 Arrow 客户端一起使用,请参阅我们关于 投影图流式传输属性 的文档。

使用 Arrow 最简单的方法是通过我们的 Neo4j 图数据科学客户端,如果可用,它默认使用 Arrow。

Arrow 与 GDS 企业版捆绑在一起,必须 安装

安装

Neo4j AuraDS 上,Arrow 默认安装。

在独立的 Neo4j 服务器上,需要显式启用和配置 Arrow。Flight 服务器默认处于禁用状态,要启用它,请将以下内容添加到 $NEO4J_HOME/conf/neo4j.conf 文件中

gds.arrow.enabled=true

以下其他设置可用

名称 默认值 可选 描述

gds.arrow.listen_address

localhost:8491

此设置指定 Arrow Flight 服务器如何监听传入连接。它由两部分组成;一个 IP 地址(例如 127.0.0.1 或 0.0.0.0)和一个端口号(例如 7687),并以 <ip-address>:<port-number> 的格式表示。

gds.arrow.advertised_listen_address

localhost:8491

此设置指定客户端应用于连接到 Arrow Flight 服务器的地址。如果服务器运行在将广告地址转发到内部地址的代理后面,这将很有用。广告地址由两部分组成;一个地址(完全限定域名、主机名或 IP 地址)和一个端口号(例如 8491),并以 <address>:<port-number> 的格式表示。

gds.arrow.abortion_timeout

10

在中止导入过程之前,等待下一个命令的最长时间(以分钟为单位)。

gds.arrow.batch_size

10000

用于箭头属性导出的批处理大小。

请注意,任何对配置的更改都需要数据库重启。

您可以运行 CALL gds.debug.arrow() 来检查 Arrow 是否可用。

身份验证

客户端到 Arrow Flight 服务器的连接使用 Neo4j 原生身份验证提供程序 进行身份验证。任何已认证的用户都可以执行所有可用的 Arrow 操作,即图投影和属性流式传输。没有专门的角色需要配置。

要启用身份验证,请使用以下 DBMS 设置

dbms.security.auth_enabled=true

加密

客户端和服务器之间的通信可以选择加密。Arrow Flight 服务器正在重新使用 Neo4j 原生 SSL 框架。在 配置范围 方面,Arrow 服务器支持 httpsbolt。如果配置了这两个范围,则 Arrow 服务器优先考虑 https 范围。

要为 https 启用加密,请使用以下 DBMS 设置

dbms.ssl.policy.https.enabled=true
dbms.ssl.policy.https.private_key=private.key
dbms.ssl.policy.https.public_certificate=public.crt

目前无法使用私钥受密码保护的证书。此类证书可用于保护 Neo4j。对于 Arrow Flight,仅接受无密码私钥的证书。

即使为 Neo4j 配置了 Flight 服务器加密,也可以将其停用。要禁用加密,请使用以下设置

gds.arrow.encryption.never=true

该设置只能用于停用 GDS Flight 服务器的加密。它不能用于停用 Neo4j 服务器的加密。如果 Neo4j 服务器未配置加密,则它不能用于为 GDS Flight 服务器激活加密。

监控

要返回有关 GDS Flight 服务器状态的详细信息,GDS 提供了 gds.debug.arrow 过程。

运行调试过程。
CALL gds.debug.arrow()
YIELD
  running: Boolean,
  enabled: Boolean,
  listenAddress: String,
  batchSize: Integer,
  abortionTimeout: Integer
表 1. 结果
名称 类型 描述

正在运行

布尔值

如果 Arrow Flight Server 当前正在运行,则为 True。

已启用

布尔值

如果启用了相应的设置,则为 True。

版本

列表

支持的命令版本的列表(例如 ["v1", "v2"])。

监听地址

字符串

Arrow Flight 客户端应连接到的地址(主机和端口)。

批处理大小

整数

用于箭头属性导出的批处理大小。

中止超时

持续时间

在中止导入过程之前等待下一个命令的最长时间。

公告监听地址

字符串

已弃用:与 listenAddress 相同。

服务器位置

字符串

已弃用:始终为 NULL

版本控制

GDS Arrow Flight 服务器公开的所有功能都经过版本控制。这使我们能够更改现有功能、引入新功能或删除已弃用的功能,而不会破坏现有客户端。版本控制方案应用于客户端发送到服务器的命令。命令是 Arrow Flight 操作、描述符和票证的 GDS 特定抽象。

客户端将命令作为 UTF-8 编码的 JSON 文档发送。每个命令都与其他元数据相关联,例如命令的版本。

{
    name: "MY_COMMAND",
    version: "v1",
    body: {
        ...
    }
}

唯一的例外是 Flight 操作,其中版本是操作类型的一部分。版本始终位于操作类型的开头,由正斜杠 (/) 分隔。

Action type: V1/CREATE_GRAPH
Action body: {
    ...
}

可以使用 LIST_ACTIONS 端点从 GDS Arrow Flight 服务器请求所有可用的操作。

在 GDS 2.6 之前,命令没有版本控制,因为 GDS Arrow 功能仍处于 alpha 阶段。在 GDS 2.6 中,GDS Arrow 服务器同时支持版本控制和之前的 alpha 命令。alpha 命令被视为已弃用,将在将来的版本中删除。