集群搭建——SGE与PBS
集群搭建——SGE与PBS
作业调度系统这大概卡了一周时间
具体的问题非常多,主要就是版本冲突问题
所以还是决定不使用ubuntu18还是去用centos7系统了
ubuntu最新的系统坑比较多,
比如在使用过程中,SSH服务崩了,发现是在安装与配置过程中系统可能自动删除了一个文件导致SSH服务无法启动,用了好长时间去解决这个问题(手动创建sshd文件)
用apt-get工具进行安装或卸载时提示“dpkg: error processing package openssh-server (--configure)”错误。
cd /run/mkdir sshd/usr/sbin/sshd
centos7安装torque
1 简介
PBS(Portable Batch System)最初由NASA的Ames研究中心开发,主要为了提供一个能满足异构计算网络需要的软件包,用于灵活的批处理,特别是满足高性能计算的需 要,如集群系统、超级计算机和大规模并行系统。
PBS的目前包括openPBS, PBS Pro和Torque三个主要分支. 其中OpenPBS是最早的PBS系统, 目前已经没有太多后续开发,PBS pro是PBS的商业版本, 功能最为丰富. Torque是Clustering公司接过了OpenPBS, 并给与后续支持的一个开源版本.
应用PBS提交任务则会形成任务队列,依次执行,有效分配资源,避免资源竞争。否则CPU时间片会轮流分配给各个人的任务,从而影响所有人的正常作业。
torque主要由三个主要部件组成:
PBS服务守护进程: pbs_server 负责接收作业提交,位于服务节点
PBS调度守护进程: pbs_sched 负责调度作业,位于服务节点
PBS MOM守护进程: pbs_mom 负责监控本机并执行作业,位于所有计算节点
更多请看官网:adaptivecomputing.,源码
2 建立SSH无密码访问
因为节点之间要进行数据传输和任务分发,所以要各个节点之间要建立ssh无密码访问。
3 安装
安装信息
名称 | 版本 | 下载 |
---|---|---|
系统 | CentOS-7-x86_64-DVD-1708 | 点击这里 |
Torque | torque-6.1.1.1.tar | 点击这里 |
节点信息
主机名 | IP |
---|---|
master | 192.168.1.1 |
salve1 | 192.168.1.10 |
salve2 | 192.168.1.11 |
在master安装所有组建,作为主节点,所有计算节点上安装pbs_mom和PBS客户端trqauthd,这里添加了一个计算节点salve1和salve2,可以自行添加多个计算节点,安装3.2 安装salves节点
进行添加
3.1 安装master节点
安装
#解压
$tar -zxvf torque-6.1.1.1.tar
#下载依赖环境和相关库文件
$yum install libxml2-devel openssl-devel gcc gcc-c++ boost-devel libtool-y
$cd torque-6.1.1.1
#设置安装配置信息
$./configure --prefix=/usr/local/torque --with-scp --with-default-server=master
#编译、安装,打包
$make && make install && make packages
#将contrib/init.d/目录下的pbs_server、pbs_sched、pbs_mom、trqauthd添加到系统初始化简脚本/etc/init.d/中,并设置为开机启动。
$cp contrib/init.d/{pbs_{server,sched,mom},trqauthd} /etc/init.d/
$for i in pbs_server pbs_sched pbs_mom trqauthd; do chkconfig --add $i; chkconfig $ion; done
#设置环境变量
$TORQUE=/usr/local/torque
$echo "TORQUE=$TORQUE" >>/etc/profile
$echo "export PATH=\$PATH:$TORQUE/bin:$TORQUE/sbin" >>/etc/profile
$source /etc/profile
#设置TORQUE的管理用户,设置为非root用户
$./torque.setup user1
#启动pbs_server、pbs_sched、pbs_mom、trqauthd几个服务
$qterm
$for i in pbs_server pbs_sched pbs_mom trqauthd; do service $i start; done
开启pbs服务
备注:**pbs开启、停止、重启和查看状态
$for i in pbs_server pbs_sched pbs_mom trqauthd; do service $i start; done
$for i in pbs_server pbs_sched pbs_mom trqauthd; do service $i stop; done
$for i in pbs_server pbs_sched pbs_mom trqauthd; do service $i status; done
或者
$ /etc/init.d/pbs_server start|stop|status
$ /etc/init.d/pbs_sched start|stop|status
$ /etc/init.d/pbs_mom start|stop|status
$ /etc/init.d/trqauthd start|stop|status
配置
#添加计算节点,创建/var/spool/torque/server_priv/nodes,写入master,设置每个节点的cpu个数
$vi /var/spool/torque/server_priv/nodes
master np=4
#添加计算节点,master也可以作为计算节点
#创建/var/spool/torque/mom_priv/config文件
$vi /var/spool/torque/mom_priv/config
#并写入如下内容:$pbsserver master $logevent 255
$pbsserver master
$logevent 255
查看启动信息
#启动torque,查看torque启动状态
$ps -e | grep pbs
$for i in pbs_server pbs_sched pbs_mom trqauthd; do service $i restart; done
$查看节点状况,状态为free则正常
$qnodes #或者是pbsnodes –a
查看启动信息
测试
#新建user1用户
$adduser user1
$su user1
$echo sleep 7 | qsub
#查看作业分配和状态
$qstat –a –n
在master上提交运行作业
3.2 安装salves节点
添加计算节点salve1
建立masterhe salve1的ssh无密码访问
#将master节点下torque-6.1.1.1的torque-package*文件copy到salve1节点torque6中
$scp torque-package-{mom,clients}-linux-x86_64.sh salve1:torque6
#将master节点下torque-6.1.1.1的contrib/init.d/{pbs_mom,trqauthd}文件copy到salve1节点/etc/init.d/
$scp contrib/init.d/{pbs_mom,trqauthd} salve1:/etc/init.d/
#安装拷贝文件
$./torque-package-clients-linux-x86_64.sh --install
$./torque-package-mom-linux-x86_64.sh --install
#创建/var/spool/torque/mom_priv/config文件
$vi /var/spool/torque/mom_priv/config
#并写入如下内容: $pbsserver master $logevent 225
$pbsserver master
$logevent 255
#将pbs_mom和trqauthd设置开机启动
$for i in pbs_mom trqauthd; do chkconfig --add $i; chkconfig $ion; done
#将计算节点加入到服务节点master中,切换到master节点
#编辑/var/spool/torque/server_priv/nodes文件并写入如下内容
salve1 np=4
#启动salve1节点的pbs_mom
$for i in pbs_mom trqauthd; do service $i start; done
#查看新增计算节点salve1
$qnodes
查看新增计算节点salve1
至此,计算节点salve1添加完毕!
测试salve1
#在计算节点salve1添加非root用户,和master节点要提交作业的用户一致,保持UID和GID相同,因为torque调度不允许root用户,在各节点上建立相同用户名及uid帐号
$adduser user1
#切换都master,使用非root用户user1测试提交作业
$ssh master
$su user1
$echo sleep 7 | qsub
#查看作业分配和状态
$qstat –a –n
添加计算节点salve2
和添加计算节点salve1一样,建立ssh互信,安装pbs_mom和trqauthd服务,设置开机启动,并添加到master的调度计算node配置文件中,开启其服务,创建提交用户和master、salve1一致
测试
$ssh master
$su user1
$echo sleep 7 | qsub
$qstat -an
#追踪某个作业
$tracejob 47.master
测试
追踪作业47.master
3.3 安装maui
torque默认情况下使用pbs_sched管理,但对于用户权限的设置,可以使用Maui辅助
#官网注册下载maui,解压
$tar -zxvf maui-3.3.1.tar.gz
$cd maui-3.3.1
$./configure --prefix=/usr/local/maui --with-pbs=/usr/local/torque
#修改/src/moab/MPBSI.c
---将
< extern int get_svrport(const char *,char *,int);
< extern int openrm(char*,int);
---改成
> extern unsigned int get_svrport(char *,char*,unsigned int);
> extern int openrm(char *,unsigned int);
#编译安装
$make && make install
#服务节点上配置 Maui
#修改/usr/local/maui/maui.cfg,修改后如下所示SERVERHOST master
# primary admin must be first in list
ADMIN1 root
# Resource Manager Definition
RMCFG[MASTER] TYPE=PBS@RMNMHOST@RMTYPE[0] PBS#Maui启动设置
#在Maui的解压目录里,修改/contrib/service-scripts/redhat.maui.d
MAUI_PREFIX=/usr/local/maui #将其改为了Maui的安装目录
daemon --user root $MAUI_PREFIX/sbin/maui #将用户名改为root
#保存退出,将其拷贝到/etc/init.d/目录中,并改名和加可执行权限
$cp /contrib/service-scripts/redhat.maui.d /etc/init.d/maui
$chmod +x /etc/init.d/maui
#之后就可以通过这个脚本启动、停止maui了
$/etc/init.d/maui start #启动maui
$/etc/init.d/maui status #查看maui开启状态
$/etc/init.d/maui restart #重启maui
$/etc/init.d/maui stop #停止maui
#将maui加入开机自启动
$echo “/etc/init.d/maui start” >> /etc/rc.local
启动maui
4 安装可能遇到的问题
1 在查看pbsnodes时出现MSG=node
pbsnodes: Server has no node list MSG=node list is empty - check 'server_priv/nodes' file
执行:qterm ,再重新启动pbs服务
2 节点down或者unavailable
查看节点时,节点一直是down或者unavailable,关闭防火墙,检查添加对于计算节点的配置,确保可以ssh切换,还有就是确保各个节点的服务都启动。
3 Bad UID for job execution MSG=Mom rejected the job.
在提交作业是,计算节点salve1和salve1添加后显示为free,但是提交作业时,作业只在master上执行,查看日志,显示提交给salve1的作业一直为“unable to run job, send to MOM '192.168.64.52' failed”,在追溯到server的日志,说是“unable to run job, MOM rejected/timeout,Reject reply code=15025(Bad UID for job execution MSG=Mom rejected the job.)”,一开始以为需要添加非root用户ssh互联,各个节点的时区和时间要一致,但问题还是没有解决。
过了一两天看到有人在提到,需要在计算节点添加一致的非root用户,使其有一样的uid和gid,结合日志的错误信息Bad UID,然后分别在不同的计算节点添加一致的user后,执行提交作业,作业可以顺利提交到不同的节点上执行了。我觉得是原因是:pbs提交任务要在master的非root用户下,不同节点直接已经ssh互联,用master上的user1提交后,作业分发只分发到节点中相同用户,没有从用户的话,mom就无法执行此作业。
主要的基础配置和应用配置到此一个小阶段就结束了
现在需要把所有的命令写成自动化脚本形式
需求1:
新增一个空白的初始节点,怎么把它添加到集群中并具有之前所有计算节点的相关配置
需求2:
把现在的所有节点删除,使用自动化脚本建立登录节点和计算节点,做好所有的相关配置
需求3:
经过验收之后,把这套东西部署到物理机
集群搭建——SGE与PBS相关推荐
- 大数据调度平台Airflow(八):Airflow分布式集群搭建及测试
目录 Airflow分布式集群搭建及测试 一.节点规划 二.airflow集群搭建步骤 1.在所有节点安装python3.7 2.在所有节点上安装airflow 三.初始化Airflow 1.每台节点 ...
- 2021年大数据Kafka(三):❤️Kafka的集群搭建以及shell启动命令脚本编写❤️
全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka的集群搭建以及shell启动命令脚本编写 一.搭建 ...
- 2021年大数据ZooKeeper(二):ZooKeeper集群搭建
目录 ZooKeeper集群搭建 第一步:下载zookeeeper的压缩包,下载网址如下 第二步:解压 第三步:修改配置文件 第四步:添加myid配置 第五步:安装包分发并修改myid的 ...
- 基于zookeeper的solrCloud集群搭建
转自:https://blog.csdn.net/yougoule/article/details/78445759 基于原文对实践遇到的问题稍作补充 1.安装及搭建相关环境 1.1环境准备 cen ...
- Hbase基础(特点、架构、应用场景、集群搭建、HA设计)这一篇就够了
Hbase基础(特点.架构.应用场景.集群搭建.HA设计)这一篇就够了 1. Hbase特点 2. Hbase VS RDBMS 3. Hbase架构及版本选择 4. Hbase应用场景 5. Ntp ...
- java kafka 集群消费_kafka集群搭建和使用Java写kafka生产者消费者
转自:http://chengjianxiaoxue.iteye.com/blog/2190488 1 kafka集群搭建 1.zookeeper集群 搭建在110, 111,112 2.kafka使 ...
- Spark集群搭建【Spark+Hadoop+Scala+Zookeeper】
1.安装Linux 需要:3台CentOS7虚拟机 IP:192.168.245.130,192.168.245.131,192.168.245.132(类似,尽量保持连续,方便记忆) 注意: 3台虚 ...
- 正式环境docker部署hyperf_应用部署 - Docker Swarm 集群搭建 - 《Hyperf v1.1.1 开发文档》 - 书栈网 · BookStack...
Docker Swarm 集群搭建 现阶段,Docker容器技术已经相当成熟,就算是中小型公司也可以基于 Gitlab.Aliyun镜像服务.Docker Swarm 轻松搭建自己的 Docker集群 ...
- 大数据分布式集群搭建(1)
在学习了几天的hadoop分布式集群搭建之后想写写文章记录一下一路以来遇到的困难和解决方案. 闲话不多说,进入正题. 一.环境及准备 因为只有一台电脑,所以需要用虚拟机来模拟环境. 本地机器用到软件: ...
- Eureka集群搭建,unavailable-replicas服务节点不可用解決方案
最近由于项目需要搭建了eureka集群,集群搭建完成后,发现服务节点均在unavailable-replicas下,即说明集群搭建失败,各节点之间不能互相通信,网上查找了各种资料,终于解决,现将问题处 ...
最新文章
- [C#]委托和事件(讲解的非常不错)
- 寻找U2OS中表达的基因及其promoter并用于后续annotation
- Java嵌套类的使用
- 22. Leetcode 237. 删除链表中的节点 (链表-基础操作类-删除链表的节点)
- wxWidgets:wxColourPickerEvent类用法
- (九)深入浅出TCPIP之网络同步异步
- python中的作用域_python 模块的作用域
- 和catch的区别_面试刷题2:Exception和Error的区别?
- anguarjs 图片预览_第865期【软件】最新图片排版神器 轻松打造完美排版!
- [NOIP2017 普及组] 成绩
- windows10远程桌面 删除IP记录
- Weka的下载与安装
- 软件工程(成本/效益分析)
- GPIO输入输出模式原理(八种工作方式附电路图详解)
- 缠中说禅:缠非缠、禅非禅,枯木龙吟照大千(整理版)
- 彼得林奇的成功投资三——回购+提高股息+无多元化
- autosar—com模块
- [系统控件重绘教程(一)]重绘NSWindow
- 农村信用社计算机岗位考什么条件,说说农村信用社考试考什么
- Spring框架快速入门
热门文章
- java中bean是什么_java中bean是什么意思?
- 来了,掏心窝的最重要3条建议
- Kubernetes 如何重塑虚拟机
- android的终端模拟器,安卓开发者必备的 5 款 App:终端模拟器、颜色萃取、移动 IDE 等...
- HDU6438(优先队列+思维)
- fopen用java代码实现_C语言基础(20)-文件操作(fopen,getc,fclose)
- rasterization(栅格化)
- 苹果手机自带表格软件_手机自带的软件无法卸载?教你一招”!
- 如何正确地在Spring Data JPA和Jackson中用上Java 8的时间相关API(即JSR 310也即java.time包下的众神器)...
- java swing 文本域_java文本域