SGE:作業調度系統安裝和使用簡要說明

主要有三部分:

安裝:服務器端搭建,一般服務端只需要搭一次
配置:服務端和節點,後續主要是新增節點才需配置
使用:一般使用者可以忽略前兩個,直接看使用說明

安裝
 一些參考網站
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
配置
服務器端初次配置
#假設主機是 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 

配置host 通過名字來訪問結點
增加hosts
sudo vim /etc/hosts

#例如如下 其中 slave01 是主機master,其他是client
202.116.161.100 slave01
114.113.126.32 coolb-PowerEdge-R730
192.168.68.39  hp2
192.168.68.40 gcxyb
192.168.68.42  hp1
結點配置
客戶端安裝:
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是默認的主機列表,根據查看到的修改

使用:
常用的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

 
發佈了109 篇原創文章 · 獲贊 168 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章