准备环境:系统环境:selinux and iptables disabled
http://hi.baidu.com/lovetolinux/blog/item/2e11638eb0eb56f7513d924d.html
http://blog.csdn.net/educast/article/details/7168467(整理挺好,可做参考)/2e11638eb0eb56f7513d924d.html
以上次实验为基础:
desktop2.example.com(在这里是调度的主机)
desktop99.example.com
desktop80.example.com(这两个节点是计算节点)
步骤(1)为使各个节点之间(包括调度的主机和两个计算节点)
在主调度节点desktop2.example.com上:
useradd -u 600 sushan
mount 192.168.0.99:/home/sushan /home/sushan
(如果在cd /home/sushan ll 后发现所属组或者所属者为nobody或者是其他的非sushan的话,那么你可
以尝试重启,然后查看!)
在所有节点上:
vi /etc/hosts (所有节点192.168.0.2 192.168.0.99 192.168.0.80)
- #127.0.0.1 localhost.localdomain localhost
(注意,这行必须注释,否则连不上计算节点)- desktop2.example.com 192.168.0.2
- desktop99.example.com 192.168.0.99
- desktop80.example.com 192.168.0.80
vi /etc/hosts.equiv (服务节点: desktop2.example.com)
- desktop99.example.com
- desktop80.example.com
vi /etc/hosts.equiv (计算节点:desktop99.example.com.desktop80.example.com)
- desktop2.example.com
(2)为了在这三个节点之间建立信任的连接:
在主调度节点上:ssh desktop99.example.com
ssh desktop80.example.com
在计算节点desktop99.example.com上:
ssh desktop2.example.com
在计算节点desktop80.example.com上:
ssh desktop2.example.com
(3)在主调度节点上:
get torque-3.0.0.tar.gz
tar zxf torque-3.0.0.tar.gz
cd torque-3.0.0
./configure --with-scp --with-default-server=desktop2.example.com
make
make install
make packages
(4)在主调度节点desktop2.example.com上:
cd torque-3.0.0
scp torque-package-clients-linux-x86_64.sh torque-package-mom-linux-x86_64.sh deskt
op99:
scp torque-package-clients-linux-x86_64.sh torque-package-mom-linux-x86_64.sh deskt
op99:
cd torque-3.0.0/contrib/init.d/
cp pbs_sched /etc/init.d/
cp pbs_server /etc/init.d/
scp pbs_mom desktop99:/etc/init.d/
scp pbs_mom desktop80:/etc/init.d/(这些都得用root身份才可以的。)
(5)在2个计算节点desktop99.example.com上:
root
cd ~
./torque-package-clients-linux-x86_64.sh --install
./torque-package-mom-linux-x86_64.sh --install
(6)在主调度节点desktop2.example.com上:
cd torque-3.0.0
./torque.setup root (设置torque的管理帐户)
(7)在主调度节点desktop2.example.com
cd /var/spool/torque
cat server_name
显示:
desktop2.example.com
cd /var/spool/torque/server_priv
vi nodes
- desktop99.example.com
- desktop80.example.com
qterm -t quick (停止torque)
service pbs_server start (启动torque)
service pbs_sched start (此为torque的调度进程)
(8)在计算节点desktop99.example.com和desktop80.example.com上
vi /var/spool/torque/mom_priv/config (所有计算节点执行此配置)
- $pbsserver desktop2.example.com(注意写的是服务节点主机哦!)
- $logevent 255
ll /var/spool/torque/mom_priv
可以看到:jobs
在2个计算节点上:
/etc/init.d/pbs_mom start
在计算节点假设在desktop99.example.com上:
cd ~
mpdboot -n 2 -f mpd.hosts
mpdtrace
显示2个主机!
desktop99.example.com
desktop99.example.com
(9)在主调度节点desktop2.example.com上:
su - sushan(torque的调度需要使用非root用户,torque是集群节点调度器)
vi job1.pbs
vi job1.pbs (串行作业,指的是在一个单用户,单机上运行的。不使用集群)
- #!/bin/bash
- #PBS -N job1
- #PBS -o job1.log
- #PBS -e job1.err
- #PBS -q batch
- cd /home/sushan
- echo Running on hosts `hostname`
- echo Time is `date`
- echo Directory is $PWD
- echo This job runs on the following nodes:
- cat $PBS_NODEFILE
- echo This job has allocated 1 node
./prog(/home/sushan/prog)
qsub job1.pbs(提交作业)
qstat (查看作业)
pbsnodes (查看节点)
从中你可以看到jobs = 0/12.desktop2.example.com 类似的东西.
在desktop99.example.com和desktop80.example.com上:
top查看后台运行情况!
vi job2.pbs (并行作业)
- #!/bin/bash
- #PBS -N job2.psb
- #PBS -o job2.log
- #PBS -e job2.err
- #PBS -q batch
- #PBS -l nodes=2
- cd /home/sushanecho Time is `date`
- echo Directory is $PWD
- echo This job runs on the following nodes:
- cat $PBS_NODEFILE
- NPROCS=`wc -l < $PBS_NODEFILE`
- echo This job has allocated $NPROCS nodes
- mpiexec -np 8 /home/sushan/prog
vi prog
- #!/bin/bash
- echo 1000000000 | ./icpi
(icpi程序是mpi自带的,拷贝过来即可,在软件的安装包里有圆周率计算的原代码icpi.c,而此时的icpi是已经编译好的可执行文件。输入的数字intervals指的是精确度。也就是说精确度越大使用的时间越长。主要搭建的是多个计算节点并行计算,能够实现比单台机子节省时间的效果。)
chmod +x prog
测试结果如下:
[sushan@desktop2 ~]$ qsub job1.pbs(注意在服务节点上提交的哦!)
7.desktop2.example.com
[sushan@desktop2 ~]$ qstat
Job id Name User Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
7.desktop2 job1 sushan 0 R batch
[sushan@desktop2 ~]$ pbsnodes
desktop99.example.com
state = job-exclusive (只有一个节点在计算) 。。。。。。。。。。。。
desktop80.example.com
state = free
在集群节点的情况下,2个节点一起计算的时候:
[sushan@desktop2 ~]$qsub job2.pbs(注意实在服务节点提交的哦!)
[sushan@desktop2 ~]$qstat
[sushan@desktop2 ~]$pbsnodes
desktop99.example.com
state = job-exclusive (两个节点都在计算)
np = 1
ntype = cluster
jobs = 0/8.server1.example.com
status =
desktop80.example.com
state = job-exclusive (两个节点都在计算)
np = 1
ntype = cluster
jobs = 0/8.server1.example.com
status =
如下图:
注:1. 以上测试我是以sushan用户测试,确保所有节点上有此用户,并且在计算节点上
的sushan 用户目录中有 prog 和 icpi 两个可执行程序
2. 启动mpd程序时要使用sushan 用户 因为在调度时会连接计算节点上/tmp/
mpd2.console_sushan
本文出自 “资料小结” 博客,谢绝转载!