将 Amazon Neptune 与图形笔记本配合使用 - Amazon Neptune

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 Amazon Neptune 与图形笔记本配合使用

要使用海王星图表,你可以使用 Neptune 图形笔记本,也可以使用模板创建新的海王星数据库。 AWS CloudFormation您也可以

无论您是图表新手并想学习和实验,还是经验丰富并想要完善查询,Neptune 工作台都提供了一个交互式开发环境 (IDE),可以在构建图形应用程序时提高工作效率。Workbench 提供了一个用户友好的界面,用于与 Neptune 数据库进行交互、编写查询和可视化数据。

通过使用 AWS CloudFormation 模板来设置 Neptune 数据库,使用工作台开发图形应用程序,您可以快速高效地开始使用 Neptune,而无需其他工具。这使您可以专注于构建应用程序,而不是设置底层基础架构。

Neptune 在开源 Neptune 图形JupyterLab笔记本项目和 Neptune 工作台中提供 Jupyter GitHub 和笔记本。这些笔记本在交互式编码环境中提供示例应用程序教程和代码片段,您可以在此环境中学习图形技术和 Neptune。您可以使用它们在后端通过不同的查询语言、不同的数据集甚至不同的数据库来逐步设置、配置、填充和查询图形。

可以通过多种不同方式托管这些笔记本:

  • Nep tune 工作台允许您在托管在亚马逊的完全托管的环境中运行 Jupyter 笔记本 SageMaker,并自动为您加载最新版本的 Neptune 图形笔记本项目。创建新的 Neptune 数据库时,可以轻松地在 Neptune 控制台中设置工作台。

    注意

    创建 Neptune 笔记本实例时,您可以选择两个网络访问选项:通过亚马逊直接访问 SageMaker (默认)和通过 a 进行访问。VPC无论哪种选择,笔记本电脑都需要访问互联网才能获取安装Neptune工作台的软件包依赖关系。无法访问互联网将导致 Neptune 笔记本实例的创建失败。

  • 您也可以在本地安装 Jupyter。这使您可以从便携式电脑上运行笔记本,而便携式电脑连接到 Neptune 或其中一个开源图形数据库的本地实例。在后一种情况下,您可以随心所欲地尝试图形技术,而不必花一分钱。然后,准备就绪后,您可以顺利迁移到 Neptune 提供的托管式生产环境。

使用 Neptune Workbench 托管 Neptune 笔记本

Neptune 提供的 T3T4g 实例类型可供您入门,每小时不到 0.10 美元。您需要通过亚马逊 SageMaker为工作台资源付费,这与 Neptune 账单是分开的。请参阅 Neptune 定价页面。Jupyter 和在 Neptune 工作台上创建的 JupyterLab 笔记本都使用 Amazon Linux 2 和 3 环境。 JupyterLab 有关 JupyterLab 笔记本支持的更多信息,请参阅 Amazon SageMaker 文档

您可以通过以下两种方式使用 Neptune 工作台创建 Jupyter 或 JupyterLab 笔记本: AWS Management Console

使用 “笔记本” 菜单创建 Jupyter 或 JupyterLab 笔记本
  1. 登录 AWS 管理控制台,然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。

  2. 在左侧的导航窗格中,选择 Notebooks (笔记本)

  3. 选择创建笔记本

  4. 集群列表中,选择您的 Neptune 数据库集群。如果您还没有数据库集群,请选择 Create cluster (创建集群) 以创建一个。

  5. 选择笔记本实例类型

  6. 为您的笔记本提供一个名称以及可选的描述。

  7. 除非您已经为笔记本创建了 AWS Identity and Access Management (IAM) 角色,否则请选择创建IAM角色并输入IAM角色名称。

    注意

    如果您选择重复使用为以前的笔记本创建的IAM角色,则该角色策略必须包含访问您正在使用的 Neptune 数据库集群的正确权限。您可以通过检查neptune-db:*操作ARN下的资源中的组件是否与该群集匹配来验证这一点。当您尝试运行笔记本魔术命令时,权限配置不正确会导致连接错误。

  8. 选择创建笔记本。在一切准备就绪之前,创建过程可能需要 5 到 10 分钟。

  9. 创建笔记本后,将其选中,然后选择 “打开 Jupyter” 或 “打开”。 JupyterLab

控制台可以为您的笔记本创建 AWS Identity and Access Management (IAM) 角色,也可以自己创建一个。此角色的策略应包括以下内容:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::aws-neptune-notebook-(AWS region)", "arn:aws:s3:::aws-neptune-notebook-(AWS region)/*" ] }, { "Effect": "Allow", "Action": "neptune-db:*", "Resource": [ "arn:aws:neptune-db:(AWS region):(AWS account ID):(Neptune resource ID)/*" ] } ] }

请注意,上述策略中的第二条语句列出了一个或多个 Neptune 群集资源。IDs

此外,角色应建立以下信任关系:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

再说一遍,一切准备就绪可能需要 5 至 10 分钟。

您可以将新笔记本配置为与 Neptune ML 结合使用,如手动为 Neptune ML 配置 Neptune 笔记本中所述。

使用 Python 将通用 SageMaker 笔记本连接到 Neptune

如果你已经安装了海王星魔法,那么将笔记本连接到海王星很容易,但是即使你没有使用 SageMaker 海王星笔记本电脑,也可以使用 Python 将笔记本连接到海王星。

在笔记本电脑手机中连接到 Neptune 需要采取的步骤 SageMaker
  1. 安装 Gremlin Python 客户端:

    !pip install gremlinpython

    Neptune 笔记本会为你安装 Gremlin Python 客户端,因此只有在你使用普通笔记本时才需要执行此步骤。 SageMaker

  2. 编写如下代码来连接和发出 Gremlin 查询:

    from gremlin_python import statics from gremlin_python.structure.graph import Graph from gremlin_python.process.graph_traversal import __ from gremlin_python.process.strategies import * from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection from gremlin_python.driver.aiohttp.transport import AiohttpTransport from gremlin_python.process.traversal import * import os port = 8182 server = '(your server endpoint)' endpoint = f'wss://{server}:{port}/gremlin' graph=Graph() connection = DriverRemoteConnection(endpoint,'g', transport_factory=lambda:AiohttpTransport(call_from_event_loop=True)) g = graph.traversal().withRemote(connection) results = (g.V().hasLabel('airport') .sample(10) .order() .by('code') .local(__.values('code','city').fold()) .toList()) # Print the results in a tabular form with a row index for i,c in enumerate(results,1): print("%3d %4s %s" % (i,c[0],c[1])) connection.close()
注意

如果您碰巧使用的是早于 3.5.0 的 Gremlin Python 客户端,那么这行:

connection = DriverRemoteConnection(endpoint,'g', transport_factory=lambda:AiohttpTransport(call_from_event_loop=True))

只会是:

connection = DriverRemoteConnection(endpoint,'g')

在 Neptune 笔记本电脑上启用 CloudWatch 日志

CloudWatch Neptune 笔记本现在默认启用日志。如果您的旧笔记本无法生成 CloudWatch 日志,请按照以下步骤手动启用日志:

  1. 登录 AWS Management Console 并打开SageMaker 控制台

  2. 在左侧的导航窗格上,选择笔记本,然后选择笔记本实例。查找要为其启用日志的 Neptune 笔记本的名称。

  3. 选择该笔记本实例的名称,进入详细信息页面。

  4. 如果笔记本实例正在运行,请选择笔记本详细信息页面右上角的停止按钮。

  5. 在 “权限和加密” 下有一个IAM角色字段ARN。选择此字段中的链接可转到运行此笔记本实例时使用的IAM角色。

  6. 创建以下策略:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DeleteLogDelivery", "logs:Describe*", "logs:GetLogDelivery", "logs:GetLogEvents", "logs:ListLogDeliveries", "logs:PutLogEvents", "logs:PutResourcePolicy", "logs:UpdateLogDelivery" ], "Resource": "*" } ] }
  7. 保存此新策略并将其附加到步骤 4 中找到的IAM角色。

  8. 点击 SageMaker 笔记本实例详细信息页面右上角的 “启动”。

  9. 日志开始流动后,您应该会在详细信息页面笔记本实例设置部分的左下角附近标有生命周期配置的字段下方看到查看日志链接。

如果笔记本无法启动,则 SageMaker 主机上的笔记本详细信息页面上会显示一条消息,说明笔记本实例花了 5 分钟才启动。 CloudWatch 可以在以下名称下找到与此问题相关的日志:

(your-notebook-name)/LifecycleConfigOnStart

在本地计算机上设置图形笔记本

图形笔记本项目包含有关在本地计算机上设置 Neptune 笔记本的说明:

您可以将本地笔记本连接到 Neptune 数据库集群,也可以连接到开源图形数据库的本地或远程实例。

将 Neptune 笔记本与 Neptune 集群结合使用

如果您在后端连接到 Neptune 集群,则可能需要在 Amazon 中运行笔记本电脑。 SageMaker从连接到 Neptune 比从本地安装笔记本电脑更方便,而且它 SageMaker 可以让你更轻松地使用 Neptune ML。

有关如何在中 SageMaker设置笔记本的说明,请参阅使用 Amazon 启动 graph-not ebook。 SageMaker

有关如何设置和配置 Neptune 本身的说明,请参阅设置亚马逊 Neptune

您也可以将本地安装的 Neptune 笔记本连接到 Neptune 数据库集群。这可能稍微复杂一些,因为 Amazon Neptune 数据库集群只能在设计上与外界隔离的亚马逊虚拟私有云 (VPC) 中创建。有多种方法可以VPC从外部连接到 a。一种是使用负载均衡器。另一种是使用对VPC等互连(参见 Amazon Virtual Private Cloud 对等互连指南)。

但是,对于大多数人来说,最便捷的方法是连接在中设置 Amazon EC2 代理服务器,VPC然后使用SSH隧道(也称为端口转发)与之连接。你可以在图形 GitHub 笔记本项目的additional-databases/neptune文件夹中将绘图笔记本本地连接到 Amazon Neptune 中找到有关如何设置的说明。

使用带有开源图形数据库的 Neptune 笔记本

要免费开始使用图形技术,还可以在后端使用带有各种开源数据库的 Neptune 笔记本。例如 TinkerPop Gremlin 服务器Blaz egraph 数据库。

要使用 Gremlin 服务器作为后端数据库,请执行以下步骤:

要使用 Blazegraph 的本地实例作为后端数据库,请执行以下步骤:

  • 查看 Blazegraph 快速入门说明,了解运行 Blazegraph 实例所需的基本设置和配置。

  • 访问 graph-notebook Blazegraph 配置文件 GitHub 夹,其中包含设置本地 Blazegraph 实例所需的文件和说明。

  • 在 GitHub 存储库中,导航到 “blazegraph” 目录,然后按照提供的说明设置本地 Blazegraph 实例。这包括下载 Blazegraph 软件、配置必要文件和启动 Blazegraph 服务器的步骤。

运行本地 Blazegraph 实例后,即可将其与应用程序集成,作为基于图形的数据和查询的后端数据库。请参阅 graph-notebook 存储库中提供的文档和示例代码,了解如何将您的应用程序连接到 Blazegraph 实例。

将你的 Neptune 笔记本从 Jupyter 迁移到 3 JupyterLab

2022 年 12 月 21 日之前创建的 Neptune 笔记本使用 Amazon Linux 1 环境。您可以按照以下 AWS 博客文章中描述的步骤将在此日期之前创建的较旧的 Jupyter 笔记本迁移到新的 Amazon Linux 2 环境中 JupyterLab 3:使用亚马逊 Linux 2 将您的工作迁移到带有 Amazon Linux 2 的亚马逊 SageMaker 笔记本实例 2。

此外,还有一些步骤专门适用于将 Neptune 笔记本迁移到新环境:

Neptune 特定的先决条件

在源 Neptune 笔记本的IAM角色中,添加以下所有权限:

{ "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:CreateBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::(your ebs backup bucket name)", "arn:aws:s3:::(your ebs backup bucket name)/*" ] }, { "Effect": "Allow", "Action": [ "sagemaker:ListTags" ], "Resource": [ "*" ] }

请务必为要ARN用于备份的 S3 存储桶指定正确的存储桶。

特定于 Neptune 的生命周期配置

按博客文章中所述创建第二个生命周期配置脚本以恢复备份(从 on-create.sh)时,生命周期名称必须遵循 aws-neptune-* 格式,例如 aws-neptune-sync-from-s3。这样LCC可以确保在 Neptune 控制台中创建笔记本时可以选择。

从快照到新实例的 Neptune 特定同步

在博客文章中描述的从快照同步到新实例的步骤中,以下是特定于 Neptune 的更改:

  • 在步骤 4 中,选择 notebook-al2-v2

  • 在第 5 步中,重复使用源 Neptune 笔记本中的IAM角色。

  • 在步骤 7 和 8 之间:

    • 笔记本实例设置中,设置使用 aws-neptune-* 格式的名称。

    • 打开网络设置手风琴VPC,选择与源笔记本相同的子网和安全组。

创建新笔记本后 Neptune 特定的步骤

  1. 选择笔记本的打开 Jupyter 按钮。一旦 SYNC_COMPLETE 文件出现在主目录中,请继续执行下一步。

  2. 转到 SageMaker 控制台中的笔记本实例页面。

  3. 停止笔记本。

  4. 选择编辑

  5. 在笔记本实例设置中,通过选择源 Neptune 笔记本的原始生命周期来编辑生命周期配置字段。请注意,这不是EBS备份生命周期。

  6. 选择更新笔记本设置

  7. 再次启动笔记本。

通过对博客文章中概述的步骤进行此处描述的修改,您的图形笔记本现在应该迁移到使用 Amazon Linux 2 和 JupyterLab 3 环境的新 Neptune 笔记本实例上。它们将显示在的 Neptune 页面上以供访问和管理,现在 AWS Management Console,你可以选择 “打开 Jupyter” 或 “打开”,从上次停下来的地方继续工作。 JupyterLab