SGE:作业调度系统安装和使用简要说明

来源:互联网 发布:网络创业项目 编辑:程序博客网 时间:2024/06/07 05:26

主要有三部分:

安装:服务器端搭建,一般服务端只需要搭一次
配置:服务端和节点,后续主要是新增节点才需配置
使用:一般使用者可以忽略前两个,直接看使用说明

安装
 一些参考网站
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 updateadduser gsadmin --uid 500  #pass coolwget http://downloads.sourceforge.net/project/gridscheduler/GE2011.11p1/GE2011.11p1.tar.gztar -zxvf GE2011.11p1.tar.gzmv GE2011.11p1 /home/gsadmin/chown -R gsadmin:gsadmin /home/gsadmin/ ##Setup NFS Server on Master Hostapt-get install nfs-kernel-server ##may be /etc/exports: Permission deniedecho "/home/gsadmin *(rw,sync,no_subtree_check)" >> /etc/exportsexportfs -aservice nfs-kernel-server restart##Setup OpenJDK-8 On Master Nodeapt-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##serverssh-keygen##if no ssh  install  openssh-server####Open Grid Scheduler/Grid Engine Installation#Servercd /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-masterapt-get install gridengine-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 processqconf -aattr queue slots "4, [master01=3]" main.q 

配置host 通过名字来访问结点
增加hostssudo vim /etc/hosts#例如如下 其中 slave01 是主机master,其他是client202.116.161.100 slave01114.113.126.32 coolb-PowerEdge-R730192.168.68.39  hp2192.168.68.40 gcxyb192.168.68.42  hp1
结点配置
客户端安装:
apt-get install gridengine-client gridengine-qmon gridengine-exec #gridengine-master会弹出框需要填写一些信息注意填写master为对应的master主机即可,其他可以默认。填写完之后需要重新启动exec#重启服务ps aux |grep sgesudo /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是默认的主机列表,根据查看到的修改

使用:
常用的SGE命令:
1. 投递任务到指定队列main.q
    方法一: qsub -cwd -l vf=*G -q main.q *.sh
    方法二: qsub -cwd -S /bin/bash -l vf=*G -q main.q *.sh
    -cwd 表示在当前路径下投递,sge的日志会输出到当前路径。
    -l vf=*G 任务的预估内存,内存估计的值应稍微大于真实的内存,内存预估偏小可能会导致节点跑挂。
    -q 指定要投递到的队列,如果不指定的话,SGE会在用户可使用的队列中选择一个满足要求的队列。
    注: 方法一和方法二都可以投递任务到指定队列,但是方法一可能会输出警告信息“Warning: no access to tty (Bad file descriptor). Thus no job control in this shell.” 这是因为SGE默认使用的是tcsh,而*.sh使用的是bash,所以应该在投递的时候指明命令解释器。若非要使用方法一的话,可以在脚本*.sh的开头加上#$ -S /bin/bash。
 
2. 投递任务到指定节点
    qsub -cwd -l vf=*G -l h=node1 *.sh
    qsub -cwd -l vf=*G -l h=node1 -P project -q main.q *.sh
    -P 参数指明任务所属的项目
 
3. 查询任务
    qstat -f /qstat      查看所有任务
    qstat -j jobId           按任务id查看
    qstat -u user            按用户查看
    任务状态:
    
    qw    表示等待状态
    Eqw     投递任务出错
    r     表示任务正在运行
    dr     节点挂了之后,删除任务就会出现这个状态,只有节点重启之后,任务才会消失
 
4. 删除任务
    qdel -j 1111   删除任务号为1111的任务
 
5. 其他命令
    qrsh  与qsub相比,是交互式的投递任务,注意参数:
    -now yes|no   默认设置为yes 
    若设置为yes,立即调度作业,如果没有可用资源,则拒绝作业,任务投递失败,任务状态为Eqw。
    若设置为no,调度时如果没有可用资源,则将作业排入队列,等待调度。
    例子: qrsh -l vf=*G -q all.q -now no -w n *sh
    qacct  从集群日志中抽取任意账户信息
    qalter   更改已提交但正处于暂挂状态的作业的属性
    qconf   为集群和队列配置提供用户界面
    qhold   阻止已提交作业的执行
    qhost   显示SGE执行主机(即各个计算节点)的状态信息
    qlogin  启动telnet或类似的登录会话。
 
6. bash脚本与Linux环境变量
    为了防止脚本运行时找不到环境变量,在投递的bash脚本的前面最好加上以下两句话:(原因见1)
    #! /bin/bash
#$ -S /bin/bash
 
7.使用grid最好切换到gsadmin用户下,因为集群里每一台服务器的gsadmin目录都通过nfs挂载了master的gsadmin。所有服务器都共享master(cool4)的gsadmin目录

挂载远程服务器网络硬盘的方法:
  见参考文献:挂载网络硬盘

加上下面这一句  服务器重启之后就不需要重新挂载一遍
echo "master_ip:/home/gsadmin /home/gsadmin nfs" >> /etc/fstab

 
2 0
原创粉丝点击