主要有三部分:
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
增加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是默認的主機列表,根據查看到的修改
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目錄