由于最近工作失誤拣技,錯誤運行了兩次Hic-Pro,由于其中Bowtie2的運行相當(dāng)耗時,耽誤了大量的時間焕议,于是決定安裝一個SLURM集群系統(tǒng)挠日,并行運行Hic-Pro疮绷,來減少工作時間。下面對其中遇到的問題進行總結(jié)嚣潜,記錄各個流程中遇到的問題冬骚。
安裝SLURM
安裝流程主要參照網(wǎng)上和師兄的教程,SLURM最常遇到的問題就是解決同步問題:Munge的時間同步和多機器之間的UID同步懂算。
1只冻、添加用戶jfh
# user add jfh
然后添加sudo權(quán)限
# chmod -v u+w /etc/sudoers
# yum install vim git -y
# vim /etc/sudoers
模仿root用戶的權(quán)限控制加入jfh ALL=(ALL) ALL
然后恢復(fù)sudoers文件的權(quán)限 # chmod -v u-w /etc/sudoers
然后使用用戶jfh進行操作 su jfh
2、安裝munge(用于機器間的通信)
這次安裝還是使用yum install munge munge-devel
進行安裝的计技,安裝過程中沒遇到什么問題喜德。以往都是使用編譯安裝包安裝,下載編譯安裝包:
安裝依賴 # yum install -y rpm-build rpmdevtools bzip2-devel openssl-devel zlib-devel
然后下載好編譯安裝包后垮媒,運行:
# rpmbuild -tb --clean munge-0.5.11.tar.bz2
# cd /root/rpmbuild/RPMS/x86_64
# rpm --install munge*.rpm
創(chuàng)建文件夾并修改所有者舍悯,這些文件夾大都已經(jīng)創(chuàng)建,可以確認一下涣澡,
# mkdir /etc/munge
# mkdir /var/run/munge
# mkdir /var/lib/munge
# mkdir /var/log/munge
# chown jfh:jfh /etc/munge
# chown jfh:jfh /var/run/munge
# chown jfh:jfh /var/lib/munge
# chown jfh:jfh /var/log/munge
使用create-munge-key
創(chuàng)建密鑰并修改所有者# chown jfh:jfh /etc/munge/munge.key
這個密鑰要拷貝到其它機器上贱呐,各機器上的秘鑰要同步。
通過ssh-copy-id實現(xiàn)各機器之間的免密登錄入桂,另外奄薇,一定要設(shè)置各機器之間的時間同步。
檢測munge使用如下命令
munge -n
munge -n | unmunge
munge -n | ssh 10.12 unmunge
3.安裝Slurm
下載編譯安裝包抗愁,安裝依賴 # yum install -y readline-devel pam-devel perl-DBI perl-ExtUtils-MakeMaker
之后編譯安裝
# rpmbuild -ta --clean slurm-15.08.13.tar.bz2
# cd /root/rpmbuild/RPMS/x86_64
# rpm --install slurm*.rpm
修改Slurm配置文件
# cp /etc/slurm/slurm.conf.example /etc/slurm.conf
# vim /etc/slurm/slurm.conf
參考配置:
#
# Example slurm.conf file. Please run configurator.html
# (in doc/html) to build a configuration file customized
# for your environment.
#
#
# slurm.conf file generated by configurator.html.
#
# See the slurm.conf man page for more information.
#
ClusterName=SlurmXia
ControlMachine=dell-r730-1
ControlAddr=10.0.0.11
#BackupController=
#BackupAddr=
#
SlurmUser=jfh
#SlurmdUser=root
SlurmctldPort=6817
SlurmdPort=6818
AuthType=auth/munge
#JobCredentialPrivateKey=
#JobCredentialPublicCertificate=
StateSaveLocation=/var/spool/slurm/ctld
SlurmdSpoolDir=/var/spool/slurm/d
SwitchType=switch/none
MpiDefault=none
SlurmctldPidFile=/var/run/slurmctld.pid
SlurmdPidFile=/var/run/slurmd.pid
ProctrackType=proctrack/pgid
#PluginDir=
#FirstJobId=
ReturnToService=0
#MaxJobCount=
#PlugStackConfig=
#PropagatePrioProcess=
#PropagateResourceLimits=
#PropagateResourceLimitsExcept=
#Prolog=
#Epilog=
#SrunProlog=
#SrunEpilog=
#TaskProlog=
#TaskEpilog=
#TaskPlugin=
#TrackWCKey=no
#TreeWidth=50
#TmpFS=
#UsePAM=
# TIMERS
SlurmctldTimeout=300
SlurmdTimeout=300
InactiveLimit=0
MinJobAge=300
KillWait=30
Waittime=0
#
# SCHEDULING
SchedulerType=sched/backfill
#SchedulerAuth=
#SelectType=select/linear
FastSchedule=1
#PriorityType=priority/multifactor
#PriorityDecayHalfLife=14-0
#PriorityUsageResetPeriod=14-0
#PriorityWeightFairshare=100000
#PriorityWeightAge=1000
#PriorityWeightPartition=10000
#PriorityWeightJobSize=1000
#PriorityMaxAge=1-0
#
# LOGGING
SlurmctldDebug=3
SlurmctldLogFile=/var/log/slurmctld.log
SlurmdDebug=3
SlurmdLogFile=/var/log/slurmd.log
JobCompType=jobcomp/none
#JobCompLoc=
#
# ACCOUNTING
JobAcctGatherType=jobacct_gather/linux
JobAcctGatherFrequency=30
#
AccountingStorageType=accounting_storage/filetxt
AccountingStorageHost=dell-r730-1
AccountingStorageLoc=/opt/slurm/acct
AccountingStoragePass=elwg324
AccountingStorageUser=root
#
# COMPUTE NODES
NodeName=dell-r730-1 NodeAddr=10.0.0.11 CPUs=64 RealMemory=378000 State=UNKNOWN
NodeName=dell-r730-2 NodeAddr=10.0.0.12 CPUs=64 RealMemory=378000 State=UNKNOWN
NodeName=dell-r730-3 NodeAddr=10.0.0.13 CPUs=64 RealMemory=252000 State=UNKNOWN
PartitionName=control Nodes=dell-r730-1 Default=NO MaxTime=INFINITE State=UP
PartitionName=compute Nodes=dell-r730-[1-3] Default=YES MaxTime=INFINITE State=UP
這里面需要注意的就是更改主機名和各臺機器的配置馁蒂,另外需要打開ACCOUNTING
中的日志采集,設(shè)置日志存儲為'filetxt'并創(chuàng)建/opt/slurm/acct
這個文件蜘腌,這樣之后才可以用sacct
查看任務(wù)沫屡。
運行時控制節(jié)點運行
systemctl enable slurmctld
systemctl start slurmctld
systemctl enable slurmd
systemctl start slurmd
計算節(jié)點運行以下即可
systemctl enable slurmd
systemctl start slurmd
4、查錯排除問題
使用sinfo查看各機器是否啟動成功撮珠,如果出現(xiàn)問題就查看日志文件
/var/log/slurmctld.log
/var/log/slurmd.log
5沮脖、SLURM常見命令
sinfo ##查看各機器狀態(tài)
scancel ##取消(刪除)任務(wù)
squeue ##查看隊列中的任務(wù)
sacct ##查看日志文件
sbatch ##提交batch腳本
在此次安裝中,出現(xiàn)的問題是uid在各臺機器之間不一致,需要更改為一個共同的uid勺届,我順帶修改了一個gid驶俊,雖然過程十分的繁瑣,但也很無奈~免姿。
修改之后出現(xiàn)之前用戶不存在了饼酿,也就無法取消其已經(jīng)提交的任務(wù),任務(wù)處于CG狀態(tài)胚膊,這時候運行下列命令重新啟動SLURM
scontrol update nodename=dell-r730-[1-3] state=down reason=hang
scontrol update nodename=dell-r730-[1-3] state=resume
安裝HiC-Pro并運行
使用SLURM運行HiC-Pro的主要注意點是
1故俐、各機器之間的numpy和scipy包的版本要完全一致
2、需要將FASTAQ文件切割為多個紊婉,HiC-Pro提供了組件供我們切割序列文件
3药版、在正常的運行后面加上`-p`參數(shù)即可,然后運行生成目錄下的兩個`sbatch`腳本(需要修改一下其中的內(nèi)存和時間配置)
參考鏈接
http://liujiayi771.github.io/2017/07/21/slurm分布式調(diào)度系統(tǒng)搭建/
https://blog.csdn.net/amaowolf/article/details/8488132
https://slurm.schedmd.com/
https://nservant.github.io/HiC-Pro/