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链接应该是您分享的链接。
概述
运行时功能
-
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仓库由
solids
和pipelines
组成,可选的还有schedules
和sensors
。solids
表示单个计算单元pipelines
由solids构建而成schedules
基于时间触发周期性管道运行sensors
基于外部状态触发管道运行
- 每个
pipeline
可以声明对任何运行时resources
或附加配置的依赖。已定义了MongoDB的resources
,以及为“dev”和“prod”两种modes
的预设配置定义。这些预设告诉Dagster根据mode
查找一组已知的环境变量来加载资源配置。
- 要运行的代码被加载到Dagster的
-
nmdc-runtime FastAPI实例支持一次写入、高吞吐量内部数据存储的MongoDB数据库。
-
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/*
链接
以下是与此存储库相关的链接
- 生产 API 服务器: https://api.microbiomedata.org
- PyPI 包: https://pypi.ac.cn/project/nmdc-runtime
- DockerHub 镜像(API 服务器): https://hub.docker.com/r/microbiomedata/nmdc-runtime-fastapi
- DockerHub 镜像(Dagster): https://hub.docker.com/r/microbiomedata/nmdc-runtime-dagster
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于 安装包 的信息。