配置 Apache Arrow 服务器
GDS 支持通过 Apache Arrow Flight 导入图和导出属性。本章专门介绍如何将 Arrow Flight 服务器配置为 Neo4j 和 GDS 安装的一部分。有关将 Arrow Flight 与 Arrow 客户端一起使用,请参阅我们关于投影图和流式传输属性的文档。
使用 Arrow 最简单的方法是通过我们的Neo4j 图数据科学客户端,如果可用,该客户端默认使用 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 是否可用。
身份验证
客户端连接到 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,仅接受私钥无密码的证书。 |
Flight 服务器加密也可以停用,即使它已为 Neo4j 配置。要禁用加密,请使用以下设置
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
名称 | 类型 | 描述 |
---|---|---|
运行中 |
布尔值 |
如果 Arrow Flight 服务器当前正在运行,则为 True。 |
已启用 |
布尔值 |
如果相应设置已启用,则为 True。 |
版本 |
列表 |
支持的命令版本列表(例如 |
监听地址 |
字符串 |
Arrow Flight 客户端应连接到的地址(主机和端口)。 |
批处理大小 |
整数 |
用于 Arrow 属性导出的批处理大小。 |
中止超时 |
持续时间 |
在中止导入过程之前等待下一个命令的最长时间。 |
公布监听地址 |
字符串 |
已弃用:与 |
服务器位置 |
字符串 |
已弃用:始终为 |
版本控制
GDS Arrow Flight 服务器公开的所有功能都经过版本控制。这使我们能够在不破坏现有客户端的情况下,对现有功能进行更改、引入新功能或删除已弃用的功能。版本控制方案应用于客户端发送到服务器的命令。命令是 Arrow Flight Actions、Descriptors 和 Tickets 之上的 GDS 特有抽象。
客户端以 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 命令被视为已弃用并将在未来版本中删除。 |