IT技术

Linux集群rocks的安装和SGE管理调度MS5.5作业

很多人在讨论集群和MS的安装以及作业调度系统的设置。这里给一个实际应用的设置,供参考。
第一部分  集群的安装
推荐大家使用Rocks进行安装。
这是2012年5月9日放出的最新版本(开发代号Mamba,也就是非洲的曼巴蛇)。该集群安装软件基于最新的linux CentOS 6.2,它和RHEL 6.2完全等价,同时也是免费的。
DVD镜像文件大小2.5GB。刻录成DVD就可以了。放入DVD安装盘,启动机器后,在第一个画面键入
build
然后根据提示,进行简单的设置和选择,就可以安装。网上也有很多介绍,可以参阅。
以安装ROCKS 6.0 x86_64为例,安装时至少选择kernel(内核),base(基础)和OS(操作系统,也就是CentOS 6.2) 这三个包(或者称roll,卷)。建议再选上ganglia卷(集群运行状态监控包)和SGE卷(Sun Grid Engine, 也就是SUN公司的任务调度系统,因为SUN已经被甲骨文ORACLE公司收购,现在已经更名为OGE)。
安装过程非常简单,只要按照安装指南(官网有下载的)进行就可以。主节点要求含2个网卡(但是现在这个最新的版本已经不是必须的,可以只有单网卡,个人认为还是双网卡方便),分别链接内网(和计算节点相连)和外网(和你的windows电脑连接),内网的IP地址取默认值(10.1.1.1)就行(随便修改也没有问题),外网地址则和你的windows机器在同一网段,方便登录。
注意到一点就是前端机的机器名必须是合格的全称(类似于互联网上的网址,域名)。
上面是前端机(frontend)的安装,计算节点的安装非常简单,只要在windows机器上使用远程登录方法(推荐使用SSH Client)进入前端机,在根用户下,键入
# insert-ethers
出现一个画面后,再敲一下回车(也就是连续2次回车)。
按后将你需要安装的计算节点,与前端机的内网卡连接到同一个交换机上,这里分2种情况:
1 将计算节点设置成网络启动(PXE,主板自带网卡的机器都支持这个功能),PXE启动机器,然后前端机会自动找到这台机器,然后安装操作系统。
2  如果主板没有内置网卡或者内置的网卡是百兆网卡,则建议使用额外接入的千兆网卡(速度快点总是没错的)。如果是外接的网卡,一般卡上没有ROM块(可以看到绝大多数的网卡电路板上有个很大的插槽,并且绝大多数是空的,我印象中没有看见过不空的),不能做到网络PXE启动,只好设置成cdrom启动(内置或者外置USB光驱都可以),然后将那张rocks DVD放入,光盘启动机器,直接回车也可以,或者不需要敲任何键只是干等也行,机器很快会被前端机发现,然后自动安装操作系统。
更详细的方法,请参考官网的指南(这个指南几乎是手把手地指导如何安装集群)。
安装完成后,可以在你与前端机相连的windows机器的浏览器(IE或者firefox等)上,键入http://IP-address/ganglia/
这里的IP-address就是你安装前端机时给的IP地址(外网地址)。这时候就可以看到你的集群所有节点的运行情况(必须选择ganglia安装卷才有这样的功能哦,非常好的一个功能)。
这时候,集群就已经建立好了。

第二部分 MS的安装
1 上面的rocks 6.0安装完成后,有些安装MS时需要的库文件默认没有安装,因此先将几个库文件安装。(这些库文件的安装在前端机上是必须的,但是在计算节点上,如果不安装,我暂时也没有发现问题)
其中libstdc++.so.6复制到/usr/lib/下,libgcc….rpm(只需要i686版本,而x86-64版本的库文件在前面的系统安装过程中已经默认安装)和compat-libstdc++….rpm(i686和x86_64版本均安装)。
# cp libstdc++.so.6 /usr/lib/
# rpm -ivh libgcc-4.4.6-3.el6.i686.rpm
# rpm -ivh compat-libstdc++-33-3.2.3-69.el6.i686.rpm
# rpm -ivh compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm
以上文件中,第一个文件libstdc++.so.6可以在已经安装过linux的 /usr/lib中找到,后3个rpm文件在ROCKS 6.0安装光盘找到,然后把它们复制出来就可以了(有点奇怪的是它们为啥不会在安装集群时自动安装呢)。
2 hpmpi的安装,注意,它一定要在前端机和每一个计算节点上安装,否则机器肯定出错。在前端机上的安装,必须在安装MS之前完成。
# rpm -ivh hpmpi-2.03.01.00-20090402r.x86_64.rpm
这个文件在MS的安装包中可以找到。
3 MS5.5的安装
登录前端机,添加一个普通用户(和密码),然后键入命令
# rocks sync users
注意,上面这个命令一定要运行一次。
接下来就可以用这个新加的普通用户登录并进行MS的安装。以下是以普通用户身份安装。
可以参考网上的介绍,使用命令:
$ …/UNIX/Install –type cluster
进行安装,基本可以使用默认的设置,如默认的文件夹,和使用SSH等,临时文件地址选择/tmp.
安装的license文件中的机器名也应该是你上面给出的全称(可以用hostname查看你的前端机的机器名)。
修改~/Accelrys/MaterialsStudio55/share/data/下的machine.LINUX文件加上
compute-0-0:n
compute-0-1:n
compute-0-2:n

这里的compute-0-0就是计算节点名,n是每个节点可以提供的cpu(线程)数(现在一般为4或者8)。
修改../../Gateway/root_default/dsd/conf/下的2个文件gw-info.sbd和gwparams.cfg文件中的cputotal数,注意这个数要不大于machine.LINUX文件中给的CPU线程总数。
这时候集群已经可以运行MS了。但是如果需要作业调度,则进行SGE设置。

第三部分SGE的设置

注意SGE必须在安装前端机的同时选择安装。如果安装好前端机后,再安装SGE,ROCKS的官方手册上明确指出是不行的。SGE在各个计算节点的配置,已经随着节点的安装就完成了。
SGE可以用于MS5.5的作业调度,默认在安装rocks的时候已经建立一个名为all.q的队列。
设置SGE一定是根用户,或者先以根用户指定一个普通用户为管理员才有资格。首先修改all.q中的shell相关的参数,将其中的第一个sh改成bash (因为rocks默认使用bash,但是SGE默认使用csh),使用命令:
# qconf –mq all.q
然后用上下键找一下,和一般的LINUX文本编辑vi一样操作,按一下小写字母i即可开始编辑了。All.q的配置内容很丰富,可以用上面的命令运行后,编辑修改很多参数,例如可以指定提交的用户,cpu数包括每个计算节点供应的cpu数等。
当然,我们也可以建立另外的队列,用户组和用户,然后进行配置。还是不要自找麻烦吧,就用这个默认的就行了。
然后修改SGE的默认配置文件conf
# qconf –mconf (同上操作)
也将其中的shell从默认的csh改成bash
如果直接将安装MS的用户的shell改成csh(修改/etc/passwd文件中的相应用户参数),估计就不用修改这里的shell了,但是我没有测试。
至此配置完成,可以使用qstat/qstat -Q/qstat -q/qstat -f等命令查看队列状态。(和torque差不多)
配置MS网关
假设MS安装在默认位置,设置使用SGE管理作业:
$ cd ~/Accelrys/MaterialsStudio55/etc/Gateway/config/
./configure queue -queuepath SGE/dsd_sge –activate
运行成功后,我们发现在../../Gateway/root_default/dsd/conf/下的文件gw-info.sbd中的原来的queuingsystem=
已经自动修改成
Queuingsystem=Sun Grid Engine 6.2u5
在gwparams.cfg文件中,可以设置参数
gw_queuingsystem=SGE
不过如果不设置,好像也没有什么问题。
然后重启网关
$ cd ~/Accelrys/MaterialsStudio55/etc/Gateway
$ ./msgateway_control_18888 restart

Windows下的设置:
在Sever Console下刷新服务器,确认服务器属性中的queue里有all.q队列。在提交计算任务里的queue选上all.q,就可以运行或者排队等待了.

因为SGE是按照均衡负载的原则安排cpu的使用的。假如,集群中有10个节点(每一个节点提供8个线程)可以供MS使用,而提交作业选中20个cpu(线程),则每个节点将分担2个cpu(线程)的计算任务(按照公平原则),如果选中25个CPU,则将是5个节点各承担3个CPU,另外5个节点承担2个CPU,以此类推。如果需要的CPU数小于可用数,则这个作业挂起(称为queued and waiting, 使用命令qstat –f,可以看到该作业的状态是 qw),排队等待前面的任务完成后,腾出足够使用的CPU,才能进入运行状态。因此,这里要求机器是均构的,也就是每个节点的cpu和内存等是一样的(大家跑得一样快),否则所有机器的运行速度都和最慢的那台一样,造成资源浪费。
通过SGE提交用于计算的节点可以和MS的机器配置文件machine.LINUX文件中的机器列表没有任何关系,仅仅要求线程数不大于machine.LINUX中给的总线程数。
在rocks的安装包还有一个condor卷,具有可以配合SGE进行高级配置的功能(类似于PBS中的toruqe + maui),后面有机会再介绍。

我们使用rocks,可以非常方便地完成集群的建立,同时SGE的设置也跟随建立集群的过程中,直接完成配置,我们做的就是稍微修改几行配置文件(增减了几个字母而已)。而对于计算节点,除了安装hpmpi以外,也可以不需要进行其他设置了。

这里也可以看到,SGE的作业调度设置要远比PBS(torque)的设置简单。更重要的是,有帖子指出,新版本的MS不支持torque了。Accelrys公司官网指出:There is no official support for TORQUE in Materials Studio。从MS的帮助文件中可以看到,MS5.5是支持SGE的(好像只支持PBS pro, LSF和SGE三种),因此使用SGE,就是和MS官方保持一致了。而对于torque的安装,Accelrys公司官方给了一个补丁:https://community.accelrys.com/message/6992#6992。因此,想继续使用torque的网友也没有问题了,参照着设置一下,而且这个设置支持最新的MS5.5和MS6.0。

还有一点,安装MS4.3好像另外需要libstdc++.so.5库文件,我试验了一次,没有成功安装MS4.3。也许是因为我们的LINUX版本太高了,呵呵。centos6.2的内核版本号:2.6.32-220.13.1.e16.x86_64, 2011年12月才出,目前没有更新的版本放出。如有需要,可以到www.centos.org上免费下载几乎所有版本的LINUX,它和RHEL的各种版本是一一对应的,例如centos 6.2等于RHEL 6.2。而MS 6.0版本的RHEL最高支持到6.1版本。

发表评论