我用的乙個伺服器上裝了乙個集群管理工具(sge, sun grid engine), 用於從登陸節點上向計算節點進行任務投遞。一開始,不太會用,但是經過一段時間的摸索學習後,終於能順手的用起來了。
在使用sge之前,你得先了解sge到底做了什麼事情. sge或者其他集群管理工作做的事情就是將使用者投遞的任務進行排隊,然後將任務交給能夠執行的結算節點執行,工作流程可以分為四步:
接受使用者投放的任務
在任務執行以前,將任務放到乙個儲存區域
傳送任務到乙個執行裝置,並監控任務的執行
執行結束寫回結果並記錄執行日誌
sge中投遞任務所用到的命令是qsub
. 最簡單的用法是下面這種,即,將要執行的命令通過標準輸入的方式傳遞給qsub
echo "ls -l " | qsub
投遞之後可以用qstat
檢視自己投遞的任務的運**況,如下圖
任務投遞情況
第一列是任務編號, 第二列是優先順序,第三列是任務名字,在引數裡沒有特別說明的情況下,sge會用任務的**進行命令,stdin表示來自於標準輸入,第四列是使用者名稱,第五列是執行狀態("r"表示執行中), 第六列表示任務投遞和開始時間,第七列是任務投遞的節點,第8列則是要申請的執行緒數。在執行完成後會在家目錄下生成"stdin.e7883"和"stdin.o7883", 其中7883就是任務編號, 前者存放標準錯誤輸出, 後者存放標準輸出, 因此"cat stdin.o7883"的內容就是ls -l
的內容。
另一種方法是先寫乙個指令碼然後投遞,比如先編輯乙個檔案"ls.sh", 內容如下,然後用"qsub ls.sh"投遞任務。
ls -l
跟之前一樣,最後在家目錄下產生了"ls.sh.e***x"和"ls.sh.e***x"兩個檔案
當然實際時肯定沒有那麼簡單,我們需要增加各種引數來調整qsub
的行為,用qsub -help
可以看完整的引數,但是常用的為如下幾個
那麼接下來就可以新增這些引數執行一些命令了,例如在命令列裡投遞乙個比對任務
echo "bowtie2 -p 8 -x index/ref -1 data/a_1.fq -2 data/a_2.fq | samtools sort > a.bam" | qsub -v -cwd -l vf=25g -s /bin/bash -pe openmpi 8 -n a.bt2
這些引數除了在外部設定外,還可以在shell指令碼裡設定,如下
#!/bin/bash
#$ -s /bin/bash
#$ -v
#$ -cwd
#$ -l vf=25g
#$ -pe openmpi 8
#$ -n a.bt2
bowtie2 -p 8 -x index/ref -1 data/a_1.fq -2 data/a_2.fq | samtools sort > a.bam
除了任務投遞外,查詢任務也是乙個非常常用的命令,除了剛才直接用qstat
檢視,還有如下引數比較好用
qstat -f # 檢視使用者任務
qstat -j jobid # 按任務id檢視
qstat -explain a|c|a|e -j jobid # 檢視任務任務並給出解釋
qstat -u user # 按使用者檢視
任務狀態:
任務刪除也比較重要,畢竟偶爾會出現任務投遞出錯的情況
qdel -j 1111 刪除任務號為1111的任務
qacct 從集群日誌中抽取任意賬戶資訊
qalter 更改已提交但正處於暫掛狀態的作業的屬性
qconf 為集群和佇列配置提供使用者介面
qhold 阻止已提交作業的執行
qhost 顯示sge執行主機(即各個計算節點)的狀態資訊
qlogin 啟動telnet或類似的登入會話。
#!/bin/bash
set -e
set -u
set -o pipefail
threads=8
index=index/hg19
fq_dir="analysis/0-raw-data"
align_dir="analysis/2-read-align"
log_dir="analysis/log"
tmp_dir="analysis/tmp"
mkdir -p $
mkdir -p $
mkdir -p $
tail -n+2 download_table.txt | cut -f 6 | while read id;
do echo "
bowtie2 --very-sensitive-local --mm -p $threads -x $index -u $/$id.fastq.gz 2> $/$id.bt2.log | \
samtools sort -@ 2 -m 1g -t $/$ -o $/$.sort.bam" | qsub -v -cwd -pe openmpi $threads -n $_bt2 -q all.q -s /bin/bash
done
集群任務管理系統SGE
網格計算和sge 從概念上講,網格很簡單。它是執行任務的計算資源的集合。對使用者而言,它就是乙個大系統,提供單個切入點,以訪問強大而分散的資源。使用者將網格視作單個計算資源。資源管理軟體 如sun grid engine 接受由使用者提交的作業,並根據資源管理策略將作業安排在網格內適當的系統上執行。...
RMAN簡明教程之六 RMAN的管理
一 report命令 report 命令可以檢測那些檔案需要備份,那些備份能被刪除以及那些檔案能不能獲得的資訊,如 報告資料庫的所有能備份資料檔案物件 report schema 或者 rman report schema at time sysdate 14 rman report schema ...
RMAN簡明教程之六 RMAN的管理
一 report命令 report 命令可以檢測那些檔案需要備份,那些備份能被刪除以及那些檔案能不能獲得的資訊,如 報告資料庫的所有能備份資料檔案物件 report schema 或者 rman report schema at time sysdate 14 rman report schema ...