环境搭建:安装Nextflow、配置Java、设置内存与执行器
好,咱们直接动手。环境搭好了,后面跑 pipeline 才不卡壳。我自己带团队时,第一件事就是让大家统一 Java 版本和 Nextflow 安装方式——否则出问题排查起来头疼得很。
安装 Java 与配置环境变量
Nextflow 跑在 JVM 上,Java 是第一道门槛。官方要求 Java 11 或更高版本,我个人习惯用 OpenJDK 11,稳定、长期支持。你问为啥不用 Oracle JDK?说白了,开源项目配 OpenJDK 更省心,授权问题少。
检查系统有没有 Java:
java -version
如果没装,Ubuntu 系统直接走 apt:
sudo apt update
sudo apt install openjdk-11-jdk -y
装完后设置环境变量。我建议把 JAVA_HOME 写进 ~/.bashrc 或 ~/.zshrc,这样每次登录自动生效:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
别忘了 source ~/.bashrc 或者重启终端。验证一下:
echo $JAVA_HOME
java -version
JAVA_HOME 指向一个过期的 Java 8,Nextflow 启动直接报 Unsupported major.minor version。那一次排查了半小时,最后发现是环境变量冲突。所以装完后务必检查两个命令的输出,确保版本是 11+。
安装 Nextflow
Nextflow 安装分两种:手动下载和 curl 管道。我推荐用 curl 方式,一行命令搞定,还能顺便加进 PATH。
方式一:curl 管道(推荐)
curl -fsSL https://get.nextflow.io | bash
执行后当前目录会多一个 nextflow 可执行文件。然后把它挪到 ~/bin 或者 /usr/local/bin:
chmod +x nextflow
sudo mv nextflow /usr/local/bin/
验证安装:
nextflow -version
显示版本号就 OK 了。
方式二:手动下载
适合网络受限的环境。去 GitHub Releases 页下载压缩包,解压后得到 nextflow 文件,同样加执行权限、挪到 PATH 目录里。步骤一样,就是多两步解压操作。
| 对比项 | curl 管道 | 手动下载 |
|---|---|---|
| 速度 | 快,自动获取最新版 | 需手动指定版本 |
| 网络依赖 | 需要外网 | 可离线下载再上传 |
| 后续更新 | 用 nextflow self-update | 同左,但首次安装麻烦 |
nextflow run hello
它会在本地拉取 nf-core 的 hello 模块并执行。如果这一步报错,通常是 Java 或网络问题,提前暴露总比跑真实数据时炸要好。
配置内存与执行器
Nextflow 用 JVM 跑,默认内存有时候不够。尤其是处理大文件或者并行任务多时,OOM 问题很常见。内存配置通过环境变量 NXF_OPTS 控制。
打开 ~/.bashrc 添加:
export NXF_OPTS="-Xms2g -Xmx8g"
-Xms2g:JVM 堆初始大小,我一般设 2G 起步-Xmx8g:堆最大限制,根据机器内存调整。如果是个人电脑 16G,设 8G 够用;集群节点如果有 64G,可以设 32G
如果 pipeline 里任务很多,还可以加 GC 参数避免停顿:
export NXF_OPTS="-Xms4g -Xmx16g -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
执行器(Executor)决定任务调度方式。本地开发用 local;集群环境用 sge、slurm、pbs 等。配置写在 nextflow.config 里:
process {
executor = 'local'
cpus = 4
memory = '8 GB'
}
如果换成 SLURM:
process {
executor = 'slurm'
queue = 'normal'
cpus = 4
memory = '8 GB'
}
process.memory 默认没设,而集群的限制又比 JVM 小。所以务必显式给每个 process 指定 memory,哪怕和 NXF_OPTS 一样。
还有一个容易被忽略的点:工作目录。默认是 work/,如果磁盘空间不够,要改到其他位置:
export NXF_WORK=/scratch/$USER/nf-work
环境搭建核心逻辑
下面这张图总结了整个搭建流程和关键配置关系。你看一遍,然后照着做。
总结一下必做步骤:
- 安装 OpenJDK 11,设置
JAVA_HOME - 用 curl 安装 Nextflow,添加到 PATH
- 在
~/.bashrc里写入NXF_OPTS和NXF_WORK - 在 nextflow.config 里写明 process.executor 和资源限制
- 跑
nextflow run hello全链路验证
环境搭建没有太多花哨的,但一步错就会卡后续。我个人习惯把每一步的命令都写在笔记里,换机器时直接复制粘贴。你如果遇到报错,先看 Java 版本,再看 NXF_OPTS 有没有被覆盖,基本能解决 90% 的问题。