PBS作业提交系统集群搭建(以Torque4.2.3为例)

简介: PBS简介        PBS是一个批处理作业和计算机系统资源管理软件包,它就可以接受批处理作业、shell脚本和控制属性,作业运行前对其储存并保护,然后运行作业,并且把输出转发回提交者。

PBS简介  

     PBS是一个批处理作业和计算机系统资源管理软件包,它就可以接受批处理作业、shell脚本和控制属性,作业运行前对其储存并保护,然后运行作业,并且把输出转发回提交者。PBS可以被安装并配置运行在单机系统或多个系统组来支持作业处理。由于PBS的灵活性,多个系统可以以多种方式组合。


PBS安装环境及所需安装包

   本文以Red Hat Enterprise Linux 6.3为例,在VM上运行iso镜像,安装Torque4.2.3,首先需要安装gcc编译器,否则在安装torque时会提示你不能make,需要安装一些安装包。系统提示的安装包可以在iso镜像中找到,在虚拟机设置中可以选择显示,打开光盘Red Hat Enterprise Linux 6中会发现packages文件夹,在文件夹中可以找到你所需的安装包,在安装过程中可能会提示你安装其他安装包,比如安装openssl-devel时会提示你安装krb5-devel以及其他安装包,找到你的系统所需要的安装包(32位为i586,64位为x86_64)递归进行安装,并安装gcc编译器(也可在光盘中找到)。


PBS安装前配置


  1. 配置基于非root账号的管理头节点到各个通用计算服务节点的ssh无密码互联,方法见我的另一篇博客:点击这儿
    • TORQUE提交作业的命令qsub不能以root帐号运行,故此非root帐号将用作提交任务
    • 同时TORQUE作业队列是和非root帐号做一对一绑定的,创建队列时也需要该非root帐号
  2. 配置集群中的 hosts 解析关系(具体的配置方法见这个专题中的第一篇博客:点击这儿),这儿不配的话不再是速度快慢的问题了,而是pbs管理头节点根本无法发现集群中的通用计算服务节点,总会报如下错误:
    • pbsnodes: Server has no node list MSG=node list is empty - check 'server_priv/nodes' file
  3. 在管理头节点上安装torque-4.2.3.1
    • ./configure --prefix=/usr/local/torque-4.2.3.1
      make
      make install
    • 产生需要安装到通用计算服务节点上的包(这一步具体产生哪些包,分别是什么作用等我完全搞明白了再来补充),具体的安装过程放在后面配置通用计算服务节点的时候讲解
      • make packages
  4. 添加 torque 的可执行文件目录到环境变量 $PATH(管理头节点、所有通用计算服务节点都添加):
    • 修改文件 /etc/profile 在最后添加如下内容:
    • #Add by myself
      export TORQUE=/usr/local/torque-4.2.3.1
      export LD_LIBRARY_PATH=$TORQUE/lib
      export PATH=$TORQUE/bin:$TORQUE/sbin:$PATH
      
  5. 添加 trqauthd 和 pbs_sched 和 pbs_server 和 pbs_mom(这个是可选的)( 目录 /torque-4.2.3.1/contrib/init.d/ 下)为系统服务
    • head node可以有双重身份,也可以通过运行pbs_mom参与计算,在大型集群中最好不要让head node 参与执行计算任务,这样会导致该节点CPU利用率过高影响用户操作该节点的响应速度
    • cp trqauthd pbs_sched pbs_server /etc/init.d/
      cd /etc/init.d
      chkconfig --add trqauthd
      chkconfig --add pbs_sched
      chkconfig --add pbs_server
  6. 指定主节点 IP 对应的 主机名称
    • vi /etc/hosts
    • 换行添加如下内容:
      • 192.168.1.100 sdu.master
        当然IP要根据你的IP变了,应该用的是集群的内网IP,等我来验证
    • 这一步是用来解决当用命令 ./torque.setup boatman 初始化PBS时候时出现下错误的:
      • PBS_Server: LOG_ERROR::pbsd_main, unable to determine local server hostname - getaddrinfo(sdu.master) failed, h_errno=1
        
  7. torque server db 初始化
    • cd /usr/local/src/torque-4.2.3.1
      ./torque.setup root
    • 初始化完成后重启 pbs server:
      • 停用pbs server
        • qterm
      • 重新启用pbs server
        • service pbs_server start
      • 重新启用pbs sched
        • service pbs_sched restart
  8. 修订pbs server的nodes文件
    • 设定 server 自动检测通用计算服务节点的 cpu 核心数目
      • qmgr -c "set server auto_node_np = True"
    • nodes 文件位于目录 /var/spool/torque/server_priv 下,我最开始还是看到的着,但等到想编辑的时候就找不到了,不知什么时候丢了(有帖子说执行命令pbs_server -t create会冲掉 nodes 文件,根据我的经历貌似是这样的,其实 server db 的初始化是包含在./torque.setup root 这一步骤中的,所有完全没有必要单独执行那个create 命令,至少在初始化的时候是不需要的)。如果没有的话,自己新建,添加如下内容:
      • sdu.01
        sdu.02
        sdu.03
        sdu.04
        sdu.11
        sdu.12
        sdu.13
        sdu.14
      • 当然,主机名根据你的主机名做相应更改了
  9. 相关目录权限的修改
    • “各个通用计算服务节点上所要做的配置” 部分的步骤7
  • 各个通用计算服务节点上所要做的配置
  1. scp 文件 torque-package-clients-linux-x86_64.sh 和 torque-package-mom-linux-x86_64.sh 到各个通用计算服务节点上(这几个文件就是第二步中那个 make packages 命令生成的)
  2. 在各个通用计算服务节点上直接执行安装上述两个包
    • ./torque-package-clients-linux-x86_64.sh --install
      ./torque-package-mom-linux-x86_64.sh --install
  3. 在各个通用计算服务节点上添加 pbs_mom 为系统服务:
    • 首先从torque-4.2.3.1源码目录 /torque-4.2.3.1/contrib/init.d/ 下 scp 文件pbs_mom 到各个通用计算服务节点的 /etc/init.d/pbs_mom
      • scp contrib/init.d/pbs_mom root@192.168.1.1:/etc/init.d/pbs_mom
    • 添加pbs_mom为系统服务
      • chkconfig --add pbs_mom
  4. 同样的操作添加 trqauthd 为系统服务:
    • 首先 scp
    • 接着 chkconfig
  5. 配置守护进程信任关系
    • Head node要管理到集群中受控的Compute node,一方面在head node上要修改nodes文件,添Compute node 主机名,另一方面还要在Compute node上修改server_name文件,以建立pbs_mom和pbs_server进程的信任关系。该文件初始化内容是本机的hostname,只需修改成head node的主机名即可
    • vi /var/spool/torque/server_name
    • 修改为如下内容:
      • sdu.master
        #当然主机名称要改成你的了
  6. 在通用计算服务节点上启动服务 trqauthd 和 pbs_mom
    • service trqauthd start
      service pbs_mom start
  7. 修订相关目录的权限
    • 在各个通用计算服务节点上修改目录 /var/spool/torque/spool/ 的权限为 1777
      • Head node 分发过来的作业执行过程中在每个节点都会生成运行结果和错误的日志文件(等我 PBS 脚本调试好了再贴过来),该临时文件最终会被compute node 以scp的方式回传到head node,由于提交作业时用的是非root帐号,会出现因帐号权限不足而无法访问目标目录或文件的情形,被调用暂存这些文件的目录是/var/spool/torque/spool/,需将其权限修改为1777
      • chmod 1777 /var/spool/torque/spool
    • 在管理头节点上修改各个通用计算服务节点 scp 回传文件所到目录(/var/spool/torque/server_priv/jobs)的权限为 1777(这一步骤暂时还是有疑问的),等我理解了再来补充解释
      • compute node 在任务执行结束时scp回传文件到head node上提交作业的工作路径时同样会遇到非root帐号访问权限不够的问题,在head node上要把提交作业的工作目录(这儿就是 /var/spool/torque/server_priv/jobs)权限修改成1777。(若head node 和compute node不能无密码互访也会失败)
      • mkdir sched_jobs
        chmod 1777 sched_jobs/
  • 整个集群配置的验证
  1. 通过下命令可以查看各个通用计算服务节点的状态:
    • pbsnodes -a
    • 如果一切正常的话就可以看见类似下面的内容:
      • sdu.01
             state = free
             np = 32
             ntype = cluster
             status = rectime=1372722492,varattr=,jobs=,state=free,netload=415055,gres=,loadave=0.00,ncpus=32,physmem=32858136kb,availmem=66923828kb,totmem=67952656kb,idletime=1673,nusers=1,nsessions=6,sessions=3516 3520 3522 3548 3550 3575,uname=Linux sdu.01 2.6.32-131.0.15.el6.x86_64 #1 SMP Tue May 10 15:42:40 EDT 2011 x86_64,opsys=linux
             mom_service_port = 15002
             mom_manager_port = 15003
        
        sdu.02
             state = free
             np = 32
             ntype = cluster
             status = rectime=1372722471,varattr=,jobs=,state=free,netload=1004261,gres=,loadave=0.00,ncpus=32,physmem=32858136kb,availmem=66920092kb,totmem=67952656kb,idletime=1651,nusers=1,nsessions=6,sessions=3521 3525 3527 3554 3556 3582,uname=Linux sdu.02 2.6.32-131.0.15.el6.x86_64 #1 SMP Tue May 10 15:42:40 EDT 2011 x86_64,opsys=linux
             mom_service_port = 15002
             mom_manager_port = 15003
        
        sdu.03
             state = free
             np = 32
             ntype = cluster
             status = rectime=1372722480,varattr=,jobs=,state=free,netload=1033615,gres=,loadave=0.00,ncpus=32,physmem=32858140kb,availmem=66919464kb,totmem=67952660kb,idletime=1637,nusers=1,nsessions=6,sessions=3482 3486 3488 3513 3516 3539,uname=Linux sdu.03 2.6.32-131.0.15.el6.x86_64 #1 SMP Tue May 10 15:42:40 EDT 2011 x86_64,opsys=linux
             mom_service_port = 15002
             mom_manager_port = 15003
        
        sdu.04
             state = free
             np = 32
             ntype = cluster
             status = rectime=1372722499,varattr=,jobs=,state=free,netload=1075188,gres=,loadave=0.00,ncpus=32,physmem=32858136kb,availmem=66916928kb,totmem=67952656kb,idletime=1679,nusers=1,nsessions=6,sessions=3487 3491 3493 3519 3521 3546,uname=Linux sdu.04 2.6.32-131.0.15.el6.x86_64 #1 SMP Tue May 10 15:42:40 EDT 2011 x86_64,opsys=linux
             mom_service_port = 15002
             mom_manager_port = 15003
        
        sdu.11
             state = free
             np = 32
             ntype = cluster
             status = rectime=1372722498,varattr=,jobs=,state=free,netload=1052504,gres=,loadave=0.00,ncpus=32,physmem=32858136kb,availmem=66920564kb,totmem=67952656kb,idletime=1679,nusers=1,nsessions=6,sessions=3481 3485 3487 3514 3516 3541,uname=Linux sdu.11 2.6.32-131.0.15.el6.x86_64 #1 SMP Tue May 10 15:42:40 EDT 2011 x86_64,opsys=linux
             mom_service_port = 15002
             mom_manager_port = 15003
        
        sdu.12
             state = free
             np = 32
             ntype = cluster
             status = rectime=1372722459,varattr=,jobs=,state=free,netload=977840,gres=,loadave=0.00,ncpus=32,physmem=32858136kb,availmem=66916144kb,totmem=67952656kb,idletime=1637,nusers=1,nsessions=6,sessions=3617 3621 3623 3648 3651 3677,uname=Linux sdu.12 2.6.32-131.0.15.el6.x86_64 #1 SMP Tue May 10 15:42:40 EDT 2011 x86_64,opsys=linux
             mom_service_port = 15002
             mom_manager_port = 15003
        
        sdu.13
             state = free
             np = 32
             ntype = cluster
             status = rectime=1372722501,varattr=,jobs=,state=free,netload=1083084,gres=,loadave=0.00,ncpus=32,physmem=32858136kb,availmem=66922812kb,totmem=67952656kb,idletime=1682,nusers=1,nsessions=6,sessions=3501 3505 3507 3533 3538 3560,uname=Linux sdu.13 2.6.32-131.0.15.el6.x86_64 #1 SMP Tue May 10 15:42:40 EDT 2011 x86_64,opsys=linux
             mom_service_port = 15002
             mom_manager_port = 15003
        
        sdu.14
             state = free
             np = 32
             ntype = cluster
             status = rectime=1372722502,varattr=,jobs=,state=free,netload=1115089,gres=,loadave=0.00,ncpus=32,physmem=32858136kb,availmem=66922072kb,totmem=67952656kb,idletime=1682,nusers=1,nsessions=6,sessions=3496 3500 3502 3527 3530 3555,uname=Linux sdu.14 2.6.32-131.0.15.el6.x86_64 #1 SMP Tue May 10 15:42:40 EDT 2011 x86_64,opsys=linux
             mom_service_port = 15002
             mom_manager_port = 15003
  2. 至此配置方面应该不会有什么大的问题了,可能的问题我会在后期的测试中在 “PBS集群搭建” 这个专题中陆续给出,望有兴趣、需要的朋友多多关注,多多指点
  3. 这儿再记录一个比较奇怪的问题,按照上面的配置做了应该是不会有问题的,但是某次我 “pbsnodes -a” 的时候,还是报了“pbsnodes: Server has no node list MSG=node list is empty - check 'server_priv/nodes' file”的错误,索性重启了一遍集群,就OK了,不知道到底为什么


目录
相关文章
|
6月前
|
分布式计算 DataWorks 关系型数据库
DataWorks操作报错合集之在DataWorks中设置了一个任务节点的调度时间,并将其发布到生产环境,但到了指定时间(例如17:30)却没有产生运行实例和相关日志如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
102 0
|
3月前
|
Kubernetes Java 数据库连接
实时计算 Flink版产品使用问题之部署到 Kubernetes 集群时,任务过一会儿自动被取消,该如何排查
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
NoSQL Oracle 关系型数据库
实时计算 Flink版产品使用问题之应用程序模式的作业如何从检查点保存的地方启动
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
分布式计算 大数据 关系型数据库
MaxCompute产品使用问题之如何确保上游作业完成后再运行下游作业
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
4月前
|
SQL API 数据处理
实时计算 Flink版产品使用问题之如何避免集群重启后job信息和运行状态丢失
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
存储 SQL Java
实时计算 Flink版产品使用问题之使用状态后端存储和恢复作业的状态时,如何配置状态后端
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
SQL Java 数据处理
实时计算 Flink版产品使用合集之Session集群启动后一直不可用时如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
SQL Java 数据处理
实时计算 Flink版产品使用合集之在原先的5个表中增加1个表,并且希望在重新启动时能够保留之前的状态,应该选择怎么启动
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
Kubernetes 网络协议 容器
k8s搭建集群报错汇总—202302【更新】
k8s搭建集群报错汇总—202302【更新】
137 0
|
6月前
|
SQL 关系型数据库 MySQL
Flink CDC产品常见问题之CDC首次启动跑数据后再次启动就报错如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
下一篇
无影云桌面