IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Jupyterhub batchspawner on PBS -> 正文阅读

[开发工具]Jupyterhub batchspawner on PBS

目标:

利用 jupyterhub 自定义 spawner batchspawner 在PBS批量集群上运行Notebook。

架构图

请添加图片描述

运行截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

软件版本

软件版本下载地址
pbspbspro_19.1.3.centos_7https://github.com/openpbs/openpbs/releases/
jupyterhub1.2.2pip install jupyterhub==1.2.2
batchspawner1.1.0pip install batchspawner==1.1.0
Miniconda3conda 4.9.2
Python3.8.13miniconda创建生成:conda create -n jupyterhub_env python=3.8.13

batchspawner 1.1.0版本 只支持 jupyterhub的版本 在 0.9 - 1.2.2 之间,其余版本会报各种 404,503的错误。

安装PBS

前置

hostname、hosts、firewalld都需要进行设置

下载解压安装

unzip pbspro_19.1.3.centos_7.zip

server 服务器主节点需安装: pbspro-server-19.1.3-0.x86_64.rpm
execution 计算节点需安装:pbspro-execution-19.1.3-0.x86_64.rpm

最小化安装只需安装 配置 server和execution即可。

server 执行:

yum install pbspro-server-19.1.3-0.x86_64.rpm

yum自动安装依赖

execution 执行:

设置一个环境变量,PBS_SERVER,即在安装之前需要指明我们使用哪个节点作为pbs 的server node,

这里运行如下命令进行设置:export PBS_SERVER=cdh2

或者可以跳过设置环境变量先安装,之间修改计算节点的配置文件也可。配置文件路径:/var/spool/pbs/mom_priv/config

yum install pbspro-execution-19.1.3-0.x86_64.rpm

配置

可选项
vim /etc/pbs.conf
PBS_EXEC=/opt/pbs
PBS_SERVER=cdh2
PBS_START_SERVER=1
PBS_START_SCHED=1
PBS_START_COMM=1
# server端也可以运行MOM(执行任务的模块)
PBS_START_MOM=1
PBS_HOME=/var/spool/pbs
PBS_CORE_LIMIT=unlimited
PBS_SCP=/bin/scp

启动:

systemctl start pbs 

状态:

/etc/init.d/pbs status

返回信息:

pbs_server is pid 21415
pbs_mom is pid 21121
pbs_sched is pid 21133
pbs_comm is 21100

常见问题

Q:qsub: Bad UID for job execution
A:
qmgr -c "set server flatuid=true"
qmgr -c "set server scheduling=true"
qmgr -c "s s job_history_enable=1"
qmgr -c "set server acl_roots+=root@*"
qmgr -c "set server operators+=root@*"


Q:sudo: qsub: command not found
A:ln -s /opt/pbs/bin/qsub /usr/bin/qsub

Q:sudo: qstat: command not found
A:ln -s /opt/pbs/bin/qstat /usr/bin/qstat

Q:sudo: qdel: command not found
A:ln -s /opt/pbs/bin/qdel /usr/bin/qdel

常用命令

https://segmentfault.com/a/1190000040054812

节点详情:

# qmgr -c "list server"

# pbsnodes -aSj

添加计算节点:

qmgr -c "create node cdh3"

删除节点:

qmgr -c "delete node cdh3" 

用于提交作业脚本 命令行格式

echo "sleep 60" | qsub

即提交一个 sleep 60的任务,如果一切正常的话,

使用 qstat -a 检查所有任务状态:

(jupyterhub_env) [root@cdh2 ~]# qstat -a
cdh2:
                                                            Req'd  Req'd   Elap
Job ID          Username Queue    Jobname    SessID NDS TSK Memory Time  S Time
--------------- -------- -------- ---------- ------ --- --- ------ ----- - -----
6.cdh2          root     workq    STDIN        4085   1   1    --    --  R 00:00

任务详细信息:

qstat -f 55

主要会包括以下几个方面信息:
Job ID 任务ID号
Name 任务脚本名称
User 用户名
Time Use 任务运行时间
S State 任务状态
* B 只用于任务向量,表示任务向量已经开始执行
* E 任务在运行后退出
* H 任务被服务器或用户或者管理员阻塞
* Q 任务正在排队中,等待被调度运行
* R 任务正在运行
* S 任务被服务器挂起,由于一个更高优先级的任务需要当前任务的资源
* T 任务被转移到其它执行节点了
* U 由于服务器繁忙,任务被挂起
* W 任务在等待它所请求的执行时间的到来(qsub -a)
* X 只用于子任务,表示子任务完成
* C 表示程序正在被关闭,一般是程序运行错误,报错

安装Miniconda3

执行安装脚本即可,需要安装到NFS上,本示例没给出部署NFS过程

# sh Miniconda3-latest-Linux-x86_64.sh

安装配置 Jupyterhub、batchspawner

安装nodejs、configurable-http-proxy

nodejs 略

npm install -g configurable-http-proxy

安装

#生成py环境
conda create -n jupyterhub_env python=3.8.13 
#切换到py环境
source /opt/miniconda3/bin/activate jupyterhub_env
#安装jupyterhub
pip install jupyterhub==1.2.2
pip install batchspawner==1.1.0
# 可选(建议安装)
pip install jupyterlab notebook

Jupyterhub配置(重要)

c.JupyterHub.allow_named_servers = True
c.JupyterHub.named_server_limit_per_user = 5

# Same initial setup as the previous example
import batchspawner
c.JupyterHub.spawner_class = 'wrapspawner.ProfilesSpawner'
c.Spawner.http_timeout = 120
#------------------------------------------------------------------------------
# BatchSpawnerBase configuration
#   Providing default values that we may omit in the profiles
#------------------------------------------------------------------------------
c.BatchSpawnerBase.req_host = 'cdh2'
c.BatchSpawnerBase.req_runtime = '12:00:00'

c.TorqueSpawner.batch_query_cmd = 'qstat -fx {job_id}'
c.TorqueSpawner.state_pending_re = r'job_state = [QH]'
c.TorqueSpawner.state_running_re = r'job_state = R'
c.TorqueSpawner.state_exechost_re = r'exec_host = ([\w_-]+)/'

c.TorqueSpawner.batch_script = '''#!/bin/sh
#PBS -q {queue}@{host}
#PBS -l walltime={runtime}
#PBS -l nodes=1:ppn={nprocs}
#PBS -l mem={memory}
#PBS -N jupyterhub-singleuser
#PBS -v {keepvars}
set -eu
source /opt/miniconda3/bin/activate  jupyterhub_env
{cmd}
'''


#------------------------------------------------------------------------------
# ProfilesSpawner configuration
#------------------------------------------------------------------------------
# List of profiles to offer for selection. Signature is:
#   List(Tuple( Unicode, Unicode, Type(Spawner), Dict ))
# corresponding to profile display name, unique key, Spawner class,
# dictionary of spawner config options.
#
# The first three values will be exposed in the input_template as {display},
# {key}, and {type}
#

c.ProfilesSpawner.profiles = [
   ( "Local server", 'local', 'jupyterhub.spawner.LocalProcessSpawner', {'ip':'0.0.0.0'} ),
   ('常规 1 cores, 1 GB, 8 hours', '1c1g8h', 'batchspawner.TorqueSpawner',
      dict(req_nprocs='1', req_queue='workq', req_runtime='8:00:00', req_memory='1gb', req_host='cdh2')),
   ('Interactive Cluster - 2 cores, 4 GB, 8 hours', 'lab', 'batchspawner.TorqueSpawner',
      dict(req_nprocs='2', req_host='cdh2', req_queue='workq',
          req_runtime='8:00:00', req_memory='4gb', state_exechost_exp='exec_host = ([\w_-]+)/')),
   ]

#c.CondorSpawner.exec_prefix = 'sudo -i -u root'
c.ProfilesSpawner.ip = '0.0.0.0'

不懂的配置可以从github检索

参考

https://www.altair.com/pbs-works-documentation/
https://github.com/openpbs/openpbs
http://thisis.yorven.site/blog/index.php/2020/12/06/openpbs-install-instructions/

https://github.com/jupyterhub/batchspawner

https://github.com/jupyterhub

https://jupyterhub.readthedocs.io/en/stable/quickstart.html#prerequisites

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-05-02 13:29:48  更:2022-05-02 13:29:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 1:55:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码