配置 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

可用以下附加设置

名称 默认值 可选 描述

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

10m

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

gds.arrow.batch_size

10000

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

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

您可以运行 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,仅接受私钥无密码的证书。

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
表 1. 结果
名称 类型 描述

运行中

布尔值

如果 Arrow Flight 服务器当前正在运行,则为 True。

已启用

布尔值

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

版本

列表

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

监听地址

字符串

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

批处理大小

整数

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

中止超时

持续时间

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

公布监听地址

字符串

已弃用:与 listenAddress 相同。

服务器位置

字符串

已弃用:始终为 NULL

版本控制

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 命令被视为已弃用并将在未来版本中删除。