配置 Apache Arrow 服务器
GDS 支持通过 Apache Arrow Flight 导入图数据和导出属性。本章专门介绍如何将 Arrow Flight 服务器配置为 Neo4j 和 GDS 安装的一部分。有关将 Arrow Flight 与 Arrow 客户端配合使用的信息,请参阅我们关于图投影和流式传输属性的文档。
使用 Arrow 最简单的方法是通过我们的 Neo4j 图数据科学客户端 (Neo4j Graph Data Science Client),如果可用,它会默认使用 Arrow。
Arrow 随 GDS 企业版捆绑提供,必须先安装企业版。
安装
|
Arrow 在 Neo4j AuraDS 上是默认安装的。 |
在独立的 Neo4j 服务器上,需要明确启用并配置 Arrow。Flight 服务器默认处于禁用状态,要启用它,请将以下内容添加到您的 $NEO4J_HOME/conf/neo4j.conf 文件中
gds.arrow.enabled=true
可以使用以下附加设置
| 名称 | 默认 | 可选 | 描述 |
|---|---|---|---|
|
|
是 |
此设置指定 Arrow Flight 服务器如何侦听传入的连接。它由两部分组成:IP 地址(例如 127.0.0.1 或 0.0.0.0)和端口号(例如 7687),格式为 <ip-address>:<port-number>。 |
|
|
是 |
此设置指定客户端应连接到 Arrow Flight 服务器的地址。如果服务器运行在代理服务器之后,且代理将广播地址转发到内部地址,此设置非常有用。广播地址由两部分组成:地址(完全限定域名、主机名或 IP 地址)和端口号(例如 8491),格式为 <address>:<port-number>。 |
|
|
是 |
在中止导入过程之前,等待下一个命令的最长时间。 |
|
|
是 |
用于 Arrow 属性导出的批处理大小。 |
请注意,对配置的任何更改都需要重启数据库。
您可以运行 CALL gds.debug.arrow() 来检查 Arrow 是否可用。
Authentication(身份验证)
与 Arrow Flight 服务器的客户端连接使用 Neo4j 原生身份验证提供程序进行身份验证。任何经过身份验证的用户都可以执行所有可用的 Arrow 操作,即图投影和属性流式传输。没有专门的配置角色。
要启用身份验证,请使用以下 DBMS 设置
dbms.security.auth_enabled=true
加密
客户端与服务器之间的通信可选择进行加密。Arrow Flight 服务器重用了 Neo4j 原生 SSL 框架。就配置范围而言,Arrow 服务器支持 https 和 bolt。如果同时配置了这两个范围,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
| 名称 | 类型 | 描述 |
|---|---|---|
running |
布尔值 |
如果 Arrow Flight 服务器当前正在运行,则为 True。 |
enabled |
布尔值 |
如果相应的设置已启用,则为 True。 |
versions |
列表 |
支持的命令版本列表(例如 |
listenAddress |
字符串 |
Arrow Flight 客户端应连接的地址(主机和端口)。 |
batchSize |
整数 |
用于 Arrow 属性导出的批处理大小。 |
abortionTimeout |
Duration |
在中止导入过程之前,等待下一个命令的最长时间。 |
advertisedListenAddress |
字符串 |
已弃用:与 |
serverLocation |
字符串 |
已弃用:始终为 |
版本控制
GDS Arrow Flight 服务器公开的所有功能都经过了版本控制。这使我们能够在不破坏现有客户端的情况下更改现有功能、引入新功能或删除已弃用的功能。版本控制方案应用于客户端发送到服务器的命令。命令是 GDS 对 Arrow Flight Actions(动作)、Descriptors(描述符)和 Tickets(票据)的一种特定抽象。
命令由客户端以 UTF-8 编码的 JSON 文档形式发送。每个命令都关联有额外的元数据,例如命令的版本。
{
name: "MY_COMMAND",
version: "v1",
body: {
...
}
}
唯一的例外是 Flight Actions,其中版本是动作类型的一部分。版本始终位于动作类型的开头,用正斜杠 (/) 分隔。
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 命令被视为已弃用,并将在未来版本中删除。 |