快速上手使用Singularity進行生物信息分析
轉自:https://cloud.tencent.com/developer/article/1817541? ? ?轉自:原文出處及轉載信息本文分享自微信公眾號 - 優雅R(elegant-r),作者:lakeseafly? ? ? 見文內詳細說明,如有侵權,請聯系 yyc3330@163.com 刪除。
生信分析流程往往需要消耗數以萬計的電腦計算資源。另外,生信分析過程中會用到大量的分析程序以及腳本,還需要對運行環境進行配置與管理。這會導致分析的可重復性變低,導致流程的升級、管理等都會成為問題。
Docker是很適合解決上述的問題。但是生信分析集群,和一般的IT服務器又有很大區別,比如無root權限,分析任務需要進行資源管理(內存,CPU)。這些問題都讓Docker技術在HPC環境的應用受限,正因為此我們需要Singularity的誕生。
虛擬機 vs 容器
首先,先和大家介紹一下基本概念。虛擬機(Virtual Machine)指通過軟件模擬的具有完整硬件系統功能的、運行在一個完全隔離環境中的完整計算機系統。在實體計算機中能夠完成的工作在虛擬機中都能夠實現。在計算機中創建虛擬機時,需要將實體機的部分硬盤和內存容量作為虛擬機的硬盤和內存容量。每個虛擬機都有獨立的CMOS、硬盤和操作系統,可以像使用實體機一樣對虛擬機進行操作。
容器可以看作是,一種輕量級的虛擬機。由于不包含完整的操作系統,因此容器只需極少的計算資源,并且安裝快捷方便。這種效率讓容器能夠在叢集中進行部署,同時將復雜應用的單一組件壓縮到單獨的容器當中。將應用組件分別放置在不同的容器當中后,開發人員即可對個別組件進行更新,而無需重復運行整個應用。
Docker的缺點?
Docker是目前最熱最成熟的容器,但是它卻不是很適合生信分析的 HPC 環境。原因有幾點:
計算機資源的限制無法施加到容器中
多用戶(非 root 用戶)使用時的權限問題
Docker 包含了不必要的資源開銷
使用Singularity的優點
首先Singularity擁有容器所包含的大多數優點,例如啟動迅速、資源開銷小、輕松的遷移和擴展等等。除此之外,相較于Docker,還有一些獨特的優點:
容易對分析環境進行打包遷徙:Singularity所依賴的東西都在鏡像文件中,不需要再單獨打包 / 導入,直接拷貝走鏡像即可。沒有復雜的緩存機制,并且該鏡像已經過壓縮,只需占用非常少的磁盤空間。
和現有系統無縫整合:系統用戶權限、網絡等均直接繼承宿主機配置,并且無需進入某個鏡像后再執行命令,可以直接在外部調用鏡像內的指令,就像執行一個本地安裝的指令一樣。
無需運行 daemon 進程:Singularity提供的完全是一個運行時的環境,在不使用時不需要單獨的進程(資源限制和權限問題也得以解決),不占用任何資源。
Singularity還支持多種鏡像和容器文件格式,甚至可以直接使用 Docker 提供的鏡像,就像從 Docker Hub 去 pull 一個鏡像一樣簡單。
Singularity可以輕易的現有的 HPC 系統整合,幾乎無需任何額外的開發就能讓現有的 HPC 變成一個輕量級的容器云。
安裝Singularity
安裝好相關的依賴軟件
sudo apt-getinstall-y? build-essential uuid-dev libgpgme-dev squashfs-tools? libseccomp-dev? wget? pkg-config? git? cryptsetup-bi
如果你還沒有安裝go語言的話也需要進行下載安裝,下載地址:https://golang.org/dl/
下載ingularity
wget https://github.com/hpcng/singularity/releases/download/v3.7.2/singularity-3.7.2.tar.gztar-xzf singularity-3.7.2.tar.gzcd singularity
進行安裝
./mconfigcd builddir/sudo makesudo make install
安裝好后,將其加入path中。
使用Singularity運行bwa比對
下載系統images
singularity pull--arch amd64 library://library/default/ubuntu:20.04
接著創建沙箱,給里面裝軟件,一般推薦手動安裝:
singularity build--sandbox bwa ubuntu_20.04.sif
封裝軟件:
singularity build bwa.sif bwa
通過singularity運行軟件:
singularity exec bwa.sif bwa
如果操作沒有問題,bwa的幫助文檔就會彈出來。
當然也可以直接通過下載好其他人封裝好的鏡像:
singularity pull docker:dceoy/bwa
小結
相對docker來說,singularity操作更加簡便,兼容性高。以后會在HPC中生信分析中,變得原來越普遍好用。
參考資料:
Docker和Singularity雙劍合璧構建生物信息分析流
http://tiramisutes.github.io/2019/08/29/docker.html