跳转到主要内容

NMDC数据管理和编排的运行时系统

项目描述

NMDC数据管理和编排的运行时系统。

服务状态

http://nmdcstatus.polyneme.xyz/

如何适用

  • 问题
    跟踪与NMDC相关的问题,这些问题可能需要跨多个仓库进行工作。

  • nmdc-schema 存储LinkML模式规范以及生成的工件(例如JSON模式)。

  • nmdc-server 存储特定于数据门户的代码——其数据库、后端API和前端应用程序。

  • 工作流文档 引用了分布在几个存储库中的工作流代码,这些代码使用源数据生成计算数据。

  • 此存储库(nmdc-runtime)

    • 包含处理源数据和计算数据的代码,并将其转换为适用于下游应用程序(如数据门户)的广泛配置。
    • 管理上述操作(即轻量级数据转换)以及在其他地点执行的计算密集型和数据密集型工作流的执行,确保声明的作业可以访问所需的配置和数据资源。

数据导出

截至2021-10的NMDC元数据在此处可用

https://drs.microbiomedata.org/ga4gh/drs/v1/objects/sys086d541

该链接返回一个 GA4GH DRS API捆绑对象记录,其中包含NMDC元数据集合(研究集、生物样本集等),每个都是一个DRS API blob对象。

例如,研究集集合导出的blob,名为"study_set.jsonl.gz",列出了DRS API ID "sys0xsry70"。因此,可以通过以下方式检索它

https://drs.microbiomedata.org/ga4gh/drs/v1/objects/sys0xsry70

返回的blob对象记录列出了https://nmdc-runtime.files.polyneme.xyz/nmdcdb-mongoexport/2021-10-14/study_set.jsonl.gz作为访问方法的URL。

2021-10的导出目前都可以在以下位置访问:https://nmdc-runtime.files.polyneme.xyz/nmdcdb-mongoexport/2021-10-14/${COLLECTION_NAME}.jsonl.gz,但DRS API间接引用允许这些链接在未来更改,例如通过其他URL进行镜像等。因此,DRS API链接应该是您分享的链接。

概述

运行时功能

  1. Dagster编排

    • dagit - 一个用于监控和管理运行系统的Web UI。
    • dagster-daemon - 一个基于时间或外部状态触发管道运行的服务。
    • PostgreSQL数据库 - 用于存储运行历史、事件日志和调度状态。
    • 工作区代码
      • 要运行的代码被加载到Dagster的workspace中。此代码从一个或多个dagster的repositories加载。每个Dagster的repository可能需要运行不同的Python虚拟环境,并且可以加载自本地Python文件或从外部源通过pip install安装。在我们的案例中,每个Dagster的repository简单地从nmdc-runtime GitHub仓库中的本地Python文件加载,并且所有代码都在相同的Python环境中运行。
      • Dagster仓库由solidspipelines组成,可选的还有schedulessensors
        • solids表示单个计算单元
        • pipelines由solids构建而成
        • schedules基于时间触发周期性管道运行
        • sensors基于外部状态触发管道运行
      • 每个pipeline可以声明对任何运行时resources或附加配置的依赖。已定义了MongoDB的resources,以及为“dev”和“prod”两种modes的预设配置定义。这些预设告诉Dagster根据mode查找一组已知的环境变量来加载资源配置。
  2. nmdc-runtime FastAPI实例支持一次写入、高吞吐量内部数据存储的MongoDB数据库。

  3. FastAPI服务,用于与编排器和数据库接口,作为数据管理和工作流程自动化的中心。

本地开发

请确保已安装Docker(和Docker Compose);并且Docker引擎正在运行。

docker --version
docker compose version
docker info

请确保./mongoKeyFile的权限仅允许文件的所有者读取或写入文件。

chmod 600 ./mongoKeyFile

请确保您有一个用于Docker服务源文件的.env文件。您可以将.env.example复制到.env(这是gitignore'd的)以开始。

cp .env.example .env

根据.env文件的内容在您的shell会话中创建环境变量。

export $(grep -v '^#' .env | xargs)

如果您连接到需要SSH隧道访问的资源(例如,仅在NERSC网络上可访问的MongoDB服务器),请设置SSH隧道。

以下命令可能对您有用,无论是直接使用还是作为模板(请参阅Makefile)。

make nersc-mongo-tunnels

最后,启动Docker Compose堆栈。

make up-dev

Docker Compose用于启动本地MongoDB和PostgreSQL(由Dagster使用)实例,以及Dagster Web服务器(dagit)和守护进程(dagster-daemon)。

Dagit Web服务器可在http://127.0.0.1:3000/查看。

FastAPI服务可在http://127.0.0.1:8000/查看 - 例如,渲染的文档可在http://127.0.0.1:8000/redoc/查看。

本地测试

测试可以在tests中找到,并使用以下命令运行

在M1 Mac上?可能需要export DOCKER_DEFAULT_PLATFORM=linux/amd64

make up-test
make test

在创建 Dagster 实体和管道时,请向 tests/ 目录中添加测试,以确保您的代码按预期运行,并且不会随时间而出现错误。

有关在 Dagster 中为实体和管道编写测试的提示,请参阅他们的测试教程.

发布到 PyPI

此存储库包含一个 GitHub Actions 工作流程,将 Python 包发布到 PyPI

您还可以通过在存储库根目录中运行以下命令来手动将 Python 包发布到 PyPI:

rm -rf dist
python -m build
twine upload dist/*

链接

以下是与此存储库相关的链接

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

nmdc_runtime-1.10.0.tar.gz (63.7 MB 查看散列)

上传时间

构建分发

nmdc_runtime-1.10.0-py3-none-any.whl (122.1 kB 查看散列)

上传时间 Python 3

支持者: