主要有三部分:
安装:服务器端搭建,一般服务端只需要搭一次
配置:服务端和节点,后续主要是新增节点才需配置
使用:一般使用者可以忽略前两个,直接看使用说明
安装
##for help 一些参考网站
http://linoxide.com/ubuntu-how-to/setup-open-grid-engine-cluster-ubuntu
http://www.yinqisen.cn/blog-212.html
https://informatics.malariagen.net/2011/06/01/gridengine-the-ubuntu-debian-way/
http://m.blog.csdn.net/article/details?id=42707901
#server服务端主机需要一下配置
apt-get update
adduser gsadmin --uid 500 #pass cool
wget http://downloads.sourceforge.net/project/gridscheduler/GE2011.11p1/GE2011.11p1.tar.gz
tar -zxvf GE2011.11p1.tar.gz
mv GE2011.11p1 /home/gsadmin/
chown -R gsadmin:gsadmin /home/gsadmin/
##Setup NFS Server on Master Host
apt-get install nfs-kernel-server
##may be /etc/exports: Permission denied
echo "/home/gsadmin *(rw,sync,no_subtree_check)" >> /etc/exports
exportfs -a
service nfs-kernel-server restart
##Setup OpenJDK-8 On Master Node
apt-get install openjdk-8-jdk
##setting jdk
echo "export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/" >> ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
echo "export PATH=$PATH:/usr/lib/jvm/java-8-openjdk-amd64/bin" >> ~/.bashrc
export PATH=$PATH:/usr/lib/jvm/java-8-openjdk-amd64/bin
echo "export SGE_ROOT=/home/gsadmin/GE2011.11p1" >>~/.bashrc
export SGE_ROOT=/home/gsadmin/GE2011.11p1/
export PATH=$PATH:~/GE2011.11p1/bin/linux-x64:$SGE_ROOT
##server
ssh-keygen
##if no ssh install openssh-server
####Open Grid Scheduler/Grid Engine Installation
#Server
cd /home/gsadmin/GE2011.11p1/source/clients/gui-installer/templates/
./start_gui_installer.sh
##OR
##delete package and config: sudo apt-get --purge remove gridengine-master
##or sudo aptitude purge gridengine-master
apt-get install gridengine-master
配置
服务端master 初次配置:
#假设主机是 master01; 第一句的两个gsadmin 分别代表是用户和用户组,为了方便起了一样的名字
#把用户gsadmin加到组gsadmin里面
qconf -au gsadmin gsadmin
#把主机加到提交主机里面
qconf -as master01
qconf -ahgrp @allhosts # just save the file without modifying it
#Add an execution host:把主机加到执行主机里面
qconf -aattr hostgroup hostlist master01 @allhosts
qconf -aq main.q # just save the file without modifying it
#Add the host group to the queue:把主机组加到队列里面
qconf -aattr queue hostlist @allhosts main.q
# 4 by default for all nodes, 3 specifically for master01, which leaves 1 of the 4 cpus free for the master process
qconf -aattr queue slots "4, [master01=3]" main.q
配置hosts通过名字访问
增加hosts
sudo vim /etc/hosts
#例如如下 其中 slave01 是主机master,其他是client
202.116.161.103 slave01
114.113.126.41 coolb-PowerEdge-R730
192.168.68.33 hp2
192.168.68.34 gcxyb
192.168.68.35 hp1
子节点:
先设置 /etc/hosts,把master写进里面,这样子节点就可以获取到master的对应信息
客户端安装:
apt-get install gridengine-client gridengine-qmon gridengine-exec #gridengine-master
会弹出框需要填写一些信息
注意填写master为对应的master主机即可,其他可以默认。
填写完之后需要重新启动exec
ps aux |grep sge
sudo /etc/init.d/gridengine-exec restart
#主机配置,这个可以在节点机器上配置,如下面介绍的 客户端配置
#加入主机队列 hp1是client,假设为当前配置的机器
qconf -ah hp1 cool3-PowerEdge-T130
#加入提交队列
qconf -as hp1
# 把客户端节点加进去到hostlist里面
qconf -aattr hostgroup hostlist hp1 @allhosts
#或者直接编辑配置
qconf -shgrpl #显示已存在的主机组
qconf -mhgrp @allhosts #配置(修改)一个主机组,@allhosts是默认的主机列表,根据查看到的修改
#客户端配置
#加入提交队列master01是服务器主机master,hp1是client node,@allhosts是默认主机组,可以修改
qconf -as hp1
#加入主机队列
qconf -ah hp1
qconf -ae # change the hostname entry to hp1
#重启exec
##client配置NFS,master_ip需要替换成对用的服务端主机ip
##Setup Open Grid Engine Client Node
sudo apt-get install nfs-common
##Mount Share from server 挂载主机的目录到本地
mount master_ip:/home/gsadmin /home/gsadmin
echo "master_ip:/home/gsadmin /home/gsadmin nfs" >> /etc/fstab
echo "export SGE_ROOT=/home/gseadmin/GE2011.11p1" >>~/.bashrc
export SGE_ROOT=/home/gsadmin/GE2011.11p1/
#要使用sge,必须在每个节点上都建立同一个帐号,相同的uid和gid
adduser gsadmin --uid 500 #pass cool
#ssh 配置
ssh-keygen
ssh-copy-id 202.116.161.103(master_ip,需要替换为对应的master)
#配置后需要重启客户端,如果已经存在进程,需要先结束,结束进程:
sudo kill -9 `ps -A |grep sge_execd | cut -d' ' -f2` #或者需要改为 -f1
sudo /etc/init.d/gridengine-exec restart
使用方法
查看主机列表
qhost
查看队列和工作状态
qstat
#执行主机启动,主机列表中没有相应执行主机名称,执行qstat命令就不会看到有任何输出。
qstat -f -u '*'
查看已有队列
qconf -sql 显示已存在的队列
提交任务(用户主要关注)
#切换到gsadmin用户
su gsadmin
# password:cool
#可以指定参数.其中main.q是队列,hp1是节点主机,uname.sh是任务运行脚本。
#这里把uname.sh加入到main.q队列,并指定节点hp1执行这个任务
coolb-PowerEdge-R730
qsub -cwd -l vf=5G -q main.q -l h=hp1 uname.sh
# 简单不指定参数
qsub uname.sh
资源共享问题
由于在不同主机执行任务,所以环境也是不同的,提交任务应确保有执行任务的机器有对应的资源,
例如需要特定的文件。这里推荐 节点 挂载 master的 /home/gsadmin 到本地的 /home/gsadmin目录,
这样节点就可以访问服务器的资源输出也是输出到服务器,节点共享的是主机的文件。
而且,所用到的文件应确保 gsadmin 用户有相关操作权限。
mount命令:
mount 202.116.161.103:/home/gsadmin /home/gsadmin ##202.116.161.103是master_ip
可选配置
qconf #可选参数很多
队列配置:
qconf -aq all.q 新增加一个队列
qconf -mq all.q 配置(修改)一个队列
qconf -dq all.q 删除一个队列
qconf -sql 显示已存在的队列
主机组配置:
qconf -ahgrp @allhosts 新增加一个主机组
qconf -mhgrp @allhosts 配置(修改)一个主机组
qconf -dhgrp @allhosts 删除一个主机组
qconf -shgrpl 显示已存在的主机组
用户组配置:
qconf -au opusers 新增加一个用户组
qconf -mu opusers 配置(修改)一个用户组
qconf -du opusers 删除一个用户组
qconf -sul 显示已存在的用户组
#修改主机组,这个一般master已经修改了就可以了
#安装的时候使用默认的配置@allhosts,主机组命名也是默认的。
如果要使用这个名称,就必须编辑它,将主机名称加入主机组名称“@allhosts”
qconf -mhgrp @allhosts
输出
在对应节点主机的用户目录会有输出结果,例如我们的目录是/home/gsadmin下
输出文件名: 脚本名称 +“.o.”+ 任务编号
错误输出文件:脚本名称 +“.e.”+ 任务编号
job.sh.o.20
job.sh.e.20
图形界面
ssh -X hostname
qmon