最近接触到一个服务器,这个服务器的管理形式是集群形式的(Sun Grid Engine管理的),跟平时外面租的Tencent服务器权限和作业调度完全不一样,平时跑数据需要像在超算上那样提交脚本才可以运行,并且还要申请节点和使用内存。但我网上找了很多怎么在集群下使用anaconda,愣是没找着。在此我记录一下我在集群下跑数据的实况。也对请教过的师兄和朋友表示致谢!
1、软件的安装
anaconda在集群下安装的教程 一句总结跟平时的安装没有什么区别,但是需要根据linux集群管理员给我们的能够安装软件的位置。举个例子如果给到我们能够安装软件和放文件的位置是在
/Share/User/My_Work_Dir
那么在安装anacoda时conda会默认把它自己安装在/home/my_work_dir的目录下,因此需要提前在安装的时候把安装目录写到/Share/User/My_Work_Dir
中。conda的安装直接还是使用
conda install -c channel software_name
即可,同理可得其他conda
管理的命令。非conda安装的需要用-prefix
指定安装的路径。
服务器上预装有软件查看
-
可以自行选择要不要使用服务器上的软件
2、作业提交脚本例子
- 我收到的用户指南中有相对应的提交作业模版,在此放个例子提供参考(
涉及虚拟环境的调度、CPU数、线程的调度
)。在此放上我在集群上跑进化树的bash脚本kalign_tree.sh:
使用conda
conda activate kalign #首先激活一下环境
kalign -i input.fa -f clu -o output.fa #这是软件的基础使用命令行
- 提交作业的命令我的样品需要跑蛮久的。根据电脑的使用要求,最长只能用96个小时,这种模式下只能用32个核并行跑,因此根据手册选择
long.q
。
qsh -q long.q -pe smp 32 -l "h_vmem=192G,h=compute-0-4,h_rt= 96:00:00,high" kalign_tree.sh #加上刚刚的那个写好的脚本
最近尝试了一下云计算的服务,发现跟集群是一样的并且有可视化界面,因此将脚本和可视化界面上的参数进行对比,方便理解
3、集群管理下提交作业需要
需要把文件上传到分配的工作文件中
登陆的节点是没有多少CPU的,因此需要选择其他节点进行大数据的运算
4、与不使用集群管理的区别在哪,有什么好处
最大的区别:平时在租用阿某云或者是自己拥有一台小型的服务器,自由度是很高的,跑什么程序直接在屏幕上跑软件的命令和线程就够了。而使用集群管理的时候,软件的命令执行需要通过脚本实现。前者不需要脚本作业,后者需要用文件把跑的命令写在脚本上。
好处:可以合理地利用计算机的资源。计算机中没有这种管理可能会导致过多地使用内存而造成宕机等问题。
好好处:原来真的可以算得很快,开心!
5、 遇到的问题
某些软件可能需要更高级的gcc版本,但网上大部分的解决办法都是通过yum或者apt-get去升级gcc的版本,然后又是需要root权限的建立软链接ln -s的方法,但是集群的管理员大部分情况99%的可能是不会放root权限的,那此时我们改怎么解决呢?
-
遇到的问题是:
/lib64/libstdc++.so.6: version
GLIBCXX_3.4.21' not found`解决办法:http://t.zoukankan.com/emanlee-p-14374988.html
-
发现在miniconda或者是anaconda的环境中有libstdc++.so.6的最新版本,采取export的方式将库所在的路径导入来实现使用高级gcc编译的方式。将下面的那一个直接写在~/.bashrc中,就可以覆盖原来优先搜索/usr/lib64的目录了
export LD_LIBRARY_PATH=~/miniconda3/lib/:$LD_LIBRARY_PATH
参考
- 这里推荐了一个华中科技的视频教程分上下,大家拿去参考参考吧。 类似集群的提交作业脚本编写教程
高性能集群的HPC超算使用教程上
高性能集群的HPC超算使用教程下
Sun grid Engine集群用户手册
笔者话:最大的感受就是使用起来真的不是太自由,因为是第一次用有很多东西都不会也不敢乱动,还有种刘姥姥进大观园的感受。以后有机会也要到有集群管理的服务器实验室多多学习。这篇以后还会更新的。
- 深深感到还有很多领域是未知和新奇的哈哈哈。