Achelous 数据访问

为何分布式计算环境的路径与Linux 单机不同?

与Linux 单机环境不同,分布式计算集群一般将存储资源放在单独网络位置,以便全部计算节点能够访问。

另一方面,对于生物信息分析流程而言,一套通用性较强的流程,必然意味着程序本身与数据的分离。尤其对于存储挂载出现变化的情况下,通过唯一的位置引用文件尤为必要。


Achelous 存储访问模式

Achelous 中对存储上文件的访问,遵循卷名+挂载位置:文件相对位置的规则。例如在上述情况中,存储的挂载的卷名为 xtao@alamo: 则,hello_world.txt 文件在集群中的绝对位置为: xtao@alamo:hello_world.txt

通过Achelous 提交作业的过程中,文件(或目录)推荐采用这种方式进行访问。 当存储挂载位置一致的集群环境,用户也可以采用Linux 路径方式进行访问


如何在WDL 脚本中访问存储资源

用户在运行WDL 任务时,Task 运行时需要访问存储数据,因此需要将存储卷映射到Docker 容器,WDL的Task 中的command 区域内的脚本访问文件的路径也需要使用相对于容器的路径。这些操作严重依赖运行环境,非常繁琐,易出错。Bioflow 可以自动为用户完成这些工作,它提供了三种工作模式。

1. Achelous 自动挂载

用户在编写WDL 脚本的时候,使用File 类型的变量来访问文件。文件的路径用极道的统一路径表示:volume@cluster:/path。例如:

### in WDL script ### 

File a = "vol1@cluster1:/a/b/c"

或者

### in WDL script ###

String x = "vol1@cluster1:/a/b/c"
File a = x

如果在Task 的command 部分中使用File 变量a,例如:


task foo {
    ## wdl code ##
    command {
        cat ${a} > output.txt
    }
}

当Task 的call 作为docker 容器执行的时候,Achelous 将自动为容器挂载文件变量a 所在的卷,并将${a}转换为容器内a 文件所对应的路径。多个File 变量、Array[File]等都可以自动处理。所以在这种使用方式下,用户不需要做任何操作,程序像运行在本地一样运行在服务器上。


2.使用Volume 的runtime 属性映射

Achelous 支持用户在taskruntime 属性映射主机的路径到容器中,类似于docker run –v参数的作用。

注意

以下情况下WDL 解析器不具备自动映射功能,用户必须通过runtime 映射才能实现文件操作

  • 脚本中存在路径引用

例如shell 脚本demo.sh如下:

sort /opt/my_data_in_local/sample_names.txt

此处/opt/my_data_in_local 为Linux 主机内路径,在Docker 容器内不存在对应路径,为了保证该路径能正常执行,需要对该路径进行手动挂载。

task foo {
  command{
    sh demo.sh 
  } 
  runtime{
    volumes : {
     "/opt/my_data_in_local":"/opt/my_data_in_local" ## 挂载到同一目录
        }
   }
}

  • 引用文件中存在路径

如file.list 中,内容如下:

/mnt/data_local/sample1.bam
/mnt/data_local/sample2.bam
/mnt/data_local/sample3.bam

用户如果没有自动挂载,则在使用时进行手动挂载,以进行映射:

task foo {
  command{
    sh dosomething.sh file.list 
  } 
  runtime{
    volumes : {
     "/mnt/data_local":"/mnt/data_local" ## 挂载到同一目录
        }
   }
}

3. 使用绝对路径

用户也可以根据自身习惯,在流程或参数文件中使用文件的绝对路径。例如:

### in WDL script ###

 File a = "/a/b/c"

注意

此处文件需在外部存储的相应位置。


Powered by XTAO TechnologyLast Modified On:2021 2023-03-24 09:05:16

results matching ""

    No results matching ""