云计算与生信(AWS / 阿里云)¶
一句话说明¶
当你的笔记本跑不动30个全基因组、或者实验室服务器排队要等一周时,云计算让你花几块钱就能临时租到一台128核512G内存的服务器——用完就还,按小时付费。
为什么生信需要云计算¶
本地 vs 云的对比¶
| 维度 | 本地服务器/电脑 | 云计算(AWS/阿里云) |
|---|---|---|
| 硬件成本 | 一台好服务器20-50万元 | 按小时计费,用多少花多少 |
| 配置时间 | 采购→到货→机房→装系统→装软件=几周 | 几分钟就能启动 |
| 扩展性 | 内存不够?买新的再等几周 | 点一下鼠标升级到1TB内存 |
| 维护 | 需要人管硬件、散热、UPS | 云厂商全管 |
| 典型瓶颈 | CPU不够/内存不够/硬盘满了 | 花钱就能解决 |
| 适合场景 | 日常小规模分析 | 突发大批量计算/课题组没服务器 |
| 数据安全 | 数据在自己手里 | 需要配好权限和加密 |
白话类比¶
- 本地服务器 = 自己买车:一次性花大钱,后续保养自己管,不用的时候还占车位
- 云服务器 = 打车/租车:用的时候花钱,不用的时候不花钱,但长期用可能比买车贵
生信场景中的典型需求¶
| 分析任务 | 需要的资源 | 云上推荐配置 |
|---|---|---|
| 全基因组比对(30x WGS) | 32核, 128G内存, 1TB SSD | m5.8xlarge (AWS) / ecs.g7.8xlarge (阿里云) |
| 宏基因组组装 (MEGAHIT) | 16核, 256G内存 | r5.8xlarge (AWS) / ecs.r7.8xlarge (阿里云) |
| 单细胞10x分析 | 8核, 64G, GPU可选 | m5.2xlarge 或 p3.2xlarge(含GPU) |
| 简单差异分析 | 4核, 16G足够 | t3.xlarge (AWS) / ecs.t6-c1m2.xlarge (阿里云) |
| 机器学习训练 | GPU, 32G显存 | p3.2xlarge (V100) / ecs.gn6v-c8g1.2xlarge |
AWS 生信相关服务¶
核心服务白话解释¶
EC2(Elastic Compute Cloud)— 云服务器¶
白话说:就是远程租一台电脑,你可以选CPU型号、内存大小、硬盘类型——和你自己电脑一样用,SSH登录进去装软件跑分析。
# ===== 常见EC2实例类型(生信用) =====
# t3.medium — 2核 4G — $0.0416/小时 — 轻量测试
# m5.xlarge — 4核 16G — $0.192/小时 — 日常分析
# m5.4xlarge — 16核 64G — $0.768/小时 — 中等规模
# r5.8xlarge — 32核 256G — $2.016/小时 — 内存密集型(组装)
# c5.9xlarge — 36核 72G — $1.53/小时 — CPU密集型(比对)
# p3.2xlarge — 8核 61G+V100 GPU — $3.06/小时 — 深度学习
# 实例命名规则:
# m = 通用型(memory平衡)
# c = 计算优化型(CPU强)
# r = 内存优化型(RAM大)
# p/g = GPU实例
# 数字 = 代(5=第5代,越新越便宜)
# xlarge/2xlarge = 大小规格
S3(Simple Storage Service)— 对象存储¶
白话说:就是云上的"网盘",不过它不是文件夹结构而是"桶(bucket)+对象(object)"。特点是便宜、无限容量、可以和其他AWS服务无缝对接。
# ===== S3 基本操作(用AWS CLI) =====
# 安装AWS CLI
# pip install awscli
# aws configure # 输入Access Key和Secret Key
# 创建存储桶
aws s3 mb s3://my-bioinfo-data
# mb = make bucket,创建一个叫my-bioinfo-data的桶
# 上传文件到S3
aws s3 cp sample1.fastq.gz s3://my-bioinfo-data/raw/
# cp = copy,把本地文件上传到S3的raw/目录
# 上传整个目录
aws s3 sync ./results/ s3://my-bioinfo-data/results/
# sync = 同步,只上传有变化的文件
# 下载文件
aws s3 cp s3://my-bioinfo-data/results/output.txt ./
# 从S3下载到本地
# 查看桶里的文件
aws s3 ls s3://my-bioinfo-data/raw/
# ls = list,列出文件
# S3存储费用(美东区域,2025年参考价):
# 标准存储:~$0.023/GB/月
# 低频访问(IA):~$0.0125/GB/月
# Glacier(归档):~$0.004/GB/月
# 100TB原始测序数据一个月标准存储≈$2300
AWS Batch — 批量计算¶
白话说:你提交一堆任务(比如100个样本的比对),AWS Batch自动帮你开机器、分配任务、跑完关机。你不用管"开几台机器"这种事。
# AWS Batch的工作流程:
# 1. 你把分析脚本打包成Docker镜像
# 2. 定义"作业定义"(Job Definition):要跑什么命令、需要多少资源
# 3. 提交到"作业队列"(Job Queue)
# 4. AWS Batch自动分配"计算环境"(Compute Environment)的EC2实例
# 5. 跑完自动回收资源
# 示例:定义一个比对作业
# job_definition.json:
# {
# "jobDefinitionName": "bwa-alignment",
# "type": "container",
# "containerProperties": {
# "image": "biocontainers/bwa:v0.7.17", # Docker镜像
# "vcpus": 8, # 需要8个CPU
# "memory": 32000, # 需要32GB内存
# "command": ["bwa", "mem", "-t", "8",
# "ref.fa", "sample.fastq.gz"]
# }
# }
Lambda — 无服务器函数¶
白话说:写一小段代码,有事件触发时自动运行——不用管服务器。比如"S3里一有新的FASTQ文件上传,就自动触发质控"。
SageMaker — 机器学习平台¶
白话说:一站式机器学习环境,内置Jupyter Notebook + GPU + 常见ML框架。适合跑深度学习(如scVI)或训练随机森林模型。
阿里云生信相关服务¶
阿里云是国内最大的云厂商,对国内用户来说网络更快、支付更方便、合规更简单。
核心服务对照¶
| AWS服务 | 阿里云对应 | 白话说明 |
|---|---|---|
| EC2 | ECS(弹性计算服务) | 云服务器 |
| S3 | OSS(对象存储服务) | 云上网盘 |
| AWS Batch | 已停止维护;替代方案:ACK+弹性容器 | 批量计算 |
| SageMaker | PAI(机器学习平台) | AI训练平台 |
| Lambda | 函数计算FC | 无服务器函数 |
注意:阿里云批量计算(BatchCompute)已停止维护(2024年官方公告)。目前推荐使用 ACK(容器服务Kubernetes)+ 弹性容器实例(ECI)来替代批量计算任务。
# ===== 阿里云OSS基本操作(用ossutil) =====
# 安装ossutil
# 从 https://help.aliyun.com/document_detail/120075.html 下载
# 配置
ossutil config -e oss-cn-beijing.aliyuncs.com -i <AccessKeyID> -k <AccessKeySecret>
# 创建Bucket
ossutil mb oss://my-bioinfo-data
# 上传文件
ossutil cp sample1.fastq.gz oss://my-bioinfo-data/raw/
# 上传目录
ossutil cp -r ./results/ oss://my-bioinfo-data/results/
# 下载
ossutil cp oss://my-bioinfo-data/results/output.txt ./
# OSS费用(华北2,2025年参考价):
# 标准存储:约¥0.12/GB/月
# 低频访问:约¥0.08/GB/月
# 归档存储:约¥0.033/GB/月
# ===== 阿里云ECS实例类型(生信用) =====
# ecs.t6-c1m2.xlarge — 4核 8G — 轻量测试
# ecs.g7.2xlarge — 8核 32G — 日常分析
# ecs.g7.8xlarge — 32核 128G — 中等规模
# ecs.r7.8xlarge — 32核 256G — 内存密集型(组装)
# ecs.c7.8xlarge — 32核 64G — CPU密集型(比对)
# ecs.gn6v-c8g1.2xlarge — 8核+V100 — 深度学习
# 命名规则:
# g = 通用型
# c = 计算优化型
# r = 内存优化型
# gn = GPU计算型
# 数字7 = 第7代
云上生信实操(以AWS为例)¶
完整流程:启动EC2 → 装环境 → 上传数据 → 跑分析 → 下载结果¶
# ===== 第1步:启动EC2实例 =====
# 方法1:AWS控制台(网页操作)
# 1. 登录 https://console.aws.amazon.com
# 2. 搜索 EC2 → Launch Instance
# 3. 选择 AMI:Ubuntu 22.04 LTS
# 4. 实例类型:m5.4xlarge(16核64G,适合宏基因组分析)
# 5. 密钥对:创建或选择已有密钥(.pem文件)
# 6. 安全组:开放SSH(22端口)
# 7. 存储:100GB gp3 SSD
# 8. 点击 Launch
# 方法2:AWS CLI(命令行)
aws ec2 run-instances \
--image-id ami-0c55b159cbfafe1f0 \
--instance-type m5.4xlarge \
--key-name my-key \
--security-group-ids sg-xxxxxx \
--block-device-mappings '[{"DeviceName":"/dev/sda1","Ebs":{"VolumeSize":100,"VolumeType":"gp3"}}]'
# ===== 第2步:SSH连接 =====
ssh -i my-key.pem ubuntu@<EC2的公网IP>
# -i 指定密钥文件
# ubuntu@ 是Ubuntu AMI的默认用户名
# ===== 第3步:安装生信环境 =====
# 安装Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b # -b = 静默安装
source ~/.bashrc
# 创建生信环境
conda create -n bioinfo python=3.10 -y # 创建环境
conda activate bioinfo # 激活环境
# 安装生信工具
conda install -c bioconda -c conda-forge \
fastp=1.3.3 \
bwa=0.7.17 \
samtools=1.19 \
megahit=1.2.9 \
metaphlan=4.1.0 -y
# -c bioconda = 从bioconda频道安装
# -y = 自动确认
# ===== 第4步:从S3下载数据 =====
# 配置AWS CLI(在EC2上如果用IAM Role则无需配置)
aws configure # 输入你的Access Key
# 下载原始FASTQ文件
aws s3 sync s3://my-bioinfo-data/raw/ ./raw_data/
# sync会自动跳过已下载的文件
# ===== 第5步:运行分析 =====
# 例子:宏基因组质控+比对
for sample in raw_data/*_R1.fastq.gz; do
base=$(basename $sample _R1.fastq.gz) # 提取样本名
# 质控
fastp \
-i raw_data/${base}_R1.fastq.gz \
-I raw_data/${base}_R2.fastq.gz \
-o clean/${base}_R1.fastq.gz \
-O clean/${base}_R2.fastq.gz \
-h reports/${base}_fastp.html \
-w 8 # 8个线程
echo "完成样本: $base"
done
# ===== 第6步:上传结果到S3 =====
aws s3 sync ./results/ s3://my-bioinfo-data/results/
aws s3 sync ./reports/ s3://my-bioinfo-data/reports/
# ===== 第7步:停止/终止实例(省钱!) =====
# 停止(保留数据盘,停止后不收EC2费用,但EBS仍收费)
aws ec2 stop-instances --instance-ids i-xxxxxx
# 终止(彻底删除,不再产生任何费用)
aws ec2 terminate-instances --instance-ids i-xxxxxx
成本控制(省钱秘籍)¶
1. Spot实例 / 抢占式实例(省60-90%)¶
白话说:AWS把暂时用不着的服务器"打折出租",可能随时被回收——但对于可以重跑的生信分析来说,性价比极高。
# ===== AWS Spot实例 =====
# 普通(按需)价格 vs Spot价格对比
# m5.4xlarge: 按需$0.768/h vs Spot约$0.23/h(省70%)
# r5.8xlarge: 按需$2.016/h vs Spot约$0.60/h(省70%)
# 用AWS CLI启动Spot实例
aws ec2 run-instances \
--instance-type m5.4xlarge \
--image-id ami-0c55b159cbfafe1f0 \
--instance-market-options '{"MarketType":"spot","SpotOptions":{"SpotInstanceType":"one-time"}}' \
--key-name my-key
# SpotInstanceType=one-time 表示一次性请求
# 阿里云对应的叫"抢占式实例"
# 原理相同:打折用闲置资源,可能被回收
Spot使用建议: | 场景 | 是否适合Spot | 理由 | |------|------------|------| | 比对/质控(可重跑) | 适合 | 中断了重新跑就行 | | 组装(跑几天的任务) | 看情况 | 设置checkpoint,中断后从断点恢复 | | 数据库服务 | 不适合 | 不能中断 | | Nextflow流程 | 很适合 | Nextflow自动处理失败重试 |
2. 按需 vs 预留实例¶
| 类型 | 折扣 | 适合场景 |
|---|---|---|
| 按需(On-Demand) | 无折扣 | 临时使用、不确定用多久 |
| 预留(Reserved) | 省30-60% | 确定要用1-3年 |
| Savings Plans | 省最多72% | 承诺每小时最低消费 |
| Spot | 省60-90% | 可中断的批量任务 |
3. 自动关机脚本¶
# ===== 防止忘记关机的自动关机脚本 =====
# 方法1:crontab定时关机(每天凌晨2点自动停止)
echo "0 2 * * * /usr/sbin/shutdown -h now" | crontab -
# 0 2 * * * = 每天凌晨2点
# shutdown -h now = 立即关机
# 方法2:空闲检测关机(CPU使用率低于5%超过30分钟就关机)
cat << 'EOF' > /home/ubuntu/auto_shutdown.sh
#!/bin/bash
# 检查CPU使用率,空闲超过30分钟自动关机
THRESHOLD=5 # CPU使用率阈值(%)
INTERVAL=300 # 检查间隔(秒)
COUNT=0 # 连续低于阈值的次数
MAX_COUNT=6 # 连续6次(30分钟)就关机
while true; do
CPU=$(top -bn1 | grep "Cpu(s)" | awk '{print 100-$8}')
# top获取CPU使用率,100减去空闲率=使用率
if (( $(echo "$CPU < $THRESHOLD" | bc -l) )); then
COUNT=$((COUNT + 1))
echo "CPU低于${THRESHOLD}%,连续${COUNT}次"
if [ $COUNT -ge $MAX_COUNT ]; then
echo "空闲超过30分钟,正在关机..."
sudo shutdown -h now
fi
else
COUNT=0 # 重置计数
fi
sleep $INTERVAL
done
EOF
chmod +x /home/ubuntu/auto_shutdown.sh
nohup /home/ubuntu/auto_shutdown.sh &
4. 存储层级优化¶
数据生命周期 → 选对存储层级省钱
正在分析的数据 → 标准存储(S3 Standard / OSS标准)
最贵但读写快
分析完30天内可能还要看的 → 低频访问(S3 IA / OSS低频)
便宜40%,读取要收少量费用
分析完不太会再看的 → 归档(S3 Glacier / OSS归档)
便宜80%,取回要等几小时
永远不会看但法规要求保留的 → 深度归档(Glacier Deep Archive)
最便宜,取回要等12小时
# 自动化:设置S3生命周期规则
# 30天后自动转低频 → 90天后自动转归档
aws s3api put-bucket-lifecycle-configuration \
--bucket my-bioinfo-data \
--lifecycle-configuration '{
"Rules": [{
"ID": "auto-archive",
"Status": "Enabled",
"Transitions": [
{"Days": 30, "StorageClass": "STANDARD_IA"},
{"Days": 90, "StorageClass": "GLACIER"}
],
"Filter": {"Prefix": "raw/"}
}]
}'
Nextflow + AWS Batch 配置¶
Nextflow是生信流程管理器,和AWS Batch结合可以自动在云上并行运行流程,是目前云上生信分析的主流方案。nf-core社区提供了大量现成的流程。
// ===== nextflow.config — AWS Batch配置 =====
profiles {
awsbatch {
process {
executor = 'awsbatch' // 使用AWS Batch作为执行器
queue = 'my-batch-queue' // AWS Batch的作业队列名
container = 'nfcore/rnaseq:3.14.0' // 默认Docker镜像
}
aws {
region = 'us-east-1' // AWS区域
batch {
cliPath = '/home/ec2-user/miniconda/bin/aws'
// AWS CLI的路径
}
}
// 工作目录必须是S3路径
workDir = 's3://my-nf-work/work/'
// 不同进程可以用不同配置
process {
withName: 'FASTQC' {
cpus = 2 // FastQC只需要2核
memory = '4.GB'
}
withName: 'STAR_ALIGN' {
cpus = 16 // STAR比对需要16核
memory = '64.GB'
container = 'nfcore/star:2.7.10a'
}
}
}
}
# ===== 运行nf-core流程在AWS Batch上 =====
# 先安装Nextflow
curl -s https://get.nextflow.io | bash
# 运行nf-core/rnaseq流程
nextflow run nf-core/rnaseq \
-profile awsbatch \
--input samplesheet.csv \
--outdir s3://my-bioinfo-data/rnaseq-results/ \
--genome GRCh38 \
-resume
# -profile awsbatch = 使用上面定义的AWS Batch配置
# --outdir = 输出到S3
# -resume = 如果中断了可以从断点恢复
# Nextflow + AWS Batch的优势:
# 1. 每个步骤自动开独立的EC2实例
# 2. 步骤完成后自动关机(不浪费钱)
# 3. 支持Spot实例(省钱)
# 4. -resume可以从失败点恢复(Spot被回收也不怕)
# 5. 所有中间文件自动存S3
面试怎么答(5道)¶
Q1:你用过云计算做生信分析吗?怎么用的?¶
答:"用过AWS。流程是:(1) 用EC2启动一台合适配置的服务器(比如宏基因组组装需要大内存就选r5实例);(2) SSH连接后用conda安装分析工具;(3) 从S3下载原始数据到EC2本地;(4) 运行分析流程;(5) 结果上传回S3保存;(6) 分析完立即停止实例。为了省钱,批量任务用Spot实例,并设置自动关机脚本防止忘记关机。"
Q2:云上生信分析怎么省钱?¶
答:"四个核心策略:(1) 用Spot/抢占式实例,比按需价格省60-90%,适合可重跑的分析任务;(2) 选对实例类型——CPU密集型任务用c系列,内存密集型用r系列,别用过大的实例浪费;(3) 存储层级管理——正在用的数据放标准存储,分析完的转低频或归档,设置自动生命周期规则;(4) 用完就关机,设置自动关机脚本防止空跑。我们之前100个样本的分析,用Spot实例只花了按需价格的三分之一。"
Q3:本地分析和云上分析分别适合什么场景?¶
答:"本地适合日常小规模分析(几个样本的差异分析、画图等),成本可控且数据不离本地。云上适合三种场景:(1) 大规模批量计算(比如几百个全基因组同时比对);(2) 突发性计算需求(项目deadline前需要短时间跑完大量分析);(3) 实验室没有足够计算资源。最优方案是混合使用——日常分析在本地,大批量任务上云。"
Q4:你知道Nextflow和AWS Batch怎么配合吗?¶
答:"Nextflow是流程管理器,AWS Batch是计算资源调度器,两者配合非常好。在nextflow.config里设置executor为awsbatch,指定作业队列和S3工作目录。运行时Nextflow会自动把每个步骤提交到AWS Batch,Batch自动分配EC2实例、拉取Docker镜像、运行命令、完成后回收资源。优势是支持Spot实例和-resume断点恢复——即使Spot实例被回收,Nextflow也会自动把该步骤重新提交。nf-core社区有大量现成流程可以直接用。"
Q5:云上分析的数据安全怎么保障?¶
答:"几个关键措施:(1) IAM权限最小化——每个用户/服务只给需要的最小权限;(2) S3桶设为私有,不开公共访问;(3) 传输加密——用HTTPS/TLS;(4) 存储加密——S3开启SSE-S3或SSE-KMS服务端加密;(5) VPC隔离——EC2放在私有子网,只通过堡垒机访问;(6) 日志审计——开CloudTrail记录所有API操作。如果涉及敏感数据(如医疗数据),还要考虑合规要求(如HIPAA)。"
速查表¶
AWS服务速查¶
| 服务 | 用途 | 生信场景 | 费用量级 |
|---|---|---|---|
| EC2 | 云服务器 | 运行分析 | $0.04-$3/小时(按实例类型) |
| S3 | 对象存储 | 存FASTQ/BAM/结果 | $0.023/GB/月(标准) |
| AWS Batch | 批量计算 | 自动调度大批量任务 | 只收EC2费用 |
| Lambda | 无服务器函数 | 自动触发流程 | 按调用次数,极便宜 |
| SageMaker | 机器学习 | 训练模型 | $0.05-$25/小时 |
| ECR | 容器镜像仓库 | 存Docker镜像 | $0.10/GB/月 |
阿里云服务速查¶
| 服务 | 用途 | 费用量级 |
|---|---|---|
| ECS | 云服务器 | ¥0.1-¥20/小时 |
| OSS | 对象存储 | ¥0.12/GB/月(标准) |
| PAI | 机器学习 | ¥0.5-¥30/小时 |
| ACK | 容器服务 | 管理免费,收ECS费 |
| 函数计算FC | 无服务器 | 按调用次数 |
常用AWS CLI命令¶
# EC2操作
aws ec2 describe-instances # 查看所有实例
aws ec2 start-instances --instance-ids i-xxx # 启动
aws ec2 stop-instances --instance-ids i-xxx # 停止
aws ec2 terminate-instances --instance-ids i-xxx # 终止
# S3操作
aws s3 ls # 列出所有桶
aws s3 ls s3://bucket/path/ # 列出桶内文件
aws s3 cp local s3://bucket/ # 上传
aws s3 cp s3://bucket/file ./ # 下载
aws s3 sync ./dir s3://bucket/dir/ # 同步目录
aws s3 rm s3://bucket/file # 删除
# 查看费用
aws ce get-cost-and-usage \
--time-period Start=2025-01-01,End=2025-01-31 \
--granularity MONTHLY \
--metrics "BlendedCost"
延伸资源¶
- AWS官方基因组学方案:https://aws.amazon.com/health/genomics/
- nf-core AWS教程:https://nf-co.re/docs/usage/tutorials/nextflow_on_aws_batch
- 阿里云生命科学方案:https://www.aliyun.com/solution/lifescience
- Nextflow官方文档:https://www.nextflow.io/docs/latest/index.html
- AWS定价计算器:https://calculator.aws/
- 阿里云价格计算器:https://www.aliyun.com/price/product
- AWS CLI文档:https://docs.aws.amazon.com/cli/latest/reference/
如果你只是找实习/初级岗位,面试官不会要求你精通云计算。但能说出"我了解EC2/S3/Batch的基本概念,用过AWS CLI上传下载数据,知道Spot实例省钱",已经比大多数候选人强了。