一种将Jupyter资源从统一配比变为动态分配的方法与流程

文档序号:31942023发布日期:2022-10-26 03:18阅读:79来源:国知局
一种将Jupyter资源从统一配比变为动态分配的方法与流程
一种将jupyter资源从统一配比变为动态分配的方法
技术领域
1.本发明涉及jupyter资源分配技术领域,具体涉及一种将jupyter资源从统一配比变为动态分配的方法。


背景技术:

2.jupyter是最新的基于web浏览器的笔记本、代码和数据交互式的开发环境。其灵活的界面支持用户通过浏览器即可配置和安排数据科学、科学计算、数据分析和机器学习等方面的工作。
3.现有的jupyter使用方案可以概括为以下两类:(1)用户计算机本地启动jupyter环境的方法;(2)基于服务器集群进行启动jupyter环境的方法。在这两种方案的具体原理:
4.方案一:用户通过计算机进行搭建jupyter环境,主要原理是在计算机本地启用web服务,利用本地计算机资源,用户通过浏览器访问本地的web服务进行工作。
5.方案二:使用服务器集群进行启动jupyter环境,主要原理是对服务器集群根据用户数量进行资源划分,为所有用户分配统一的资源配比,使用户通过统一的入口来使用jupyter开发环境。
6.用户在使用jupyter时,资源均受本地计算机资源或统一资源配比的限制,当在使用jupyter进行科学计算、数据分析和机器学习等工作的过程中,发现jupyter资源不够使用时,迫切希望在不中断作业计划、不丢弃过程数据的情况下,及时的扩充jupyter的资源。
7.在现有的两种方案中,方案一中基于计算机本地启动的方法,一旦jupyter环境启动后,使用的资源配比均固定不可变更,基于只能进行计算机硬件扩容,方案二中基于服务器进行启动的方法,只能停止服务,统一修改资源分配比例,且无法按照用户需求定制化配置资源。
8.针对以上问题,目前能实现的解决方案中,都需重启jupyter服务使资源配置生效,但重启jupyter不但会使用户的作业计划、中间过程数据等丢失,而且影响业务的连续性。


技术实现要素:

9.本发明所要解决的技术问题是在使用jupyter进行工作时资源不够使用只能进行重启jupyter服务,但是重启jupyter会导致用户的作业计划等数据丢失,目的在于提供一种将jupyter资源从统一配比变为动态分配的方法,解决了用户在使用jupyter重新分配资源过程中导致作业计划等数据丢失的问题。
10.本发明通过下述技术方案实现:
11.一种将jupyter资源从统一配比变为动态分配的方法,包括:
12.s1:编程工具编写资源控制程序;
13.s2:上述编程工具调用资源监控工具,通过上述资源监控工具收集各用户jupyter资源使用情况;
14.s3:上述编程工具设置指定端口,上述资源监控工具将各用户的jupyter资源使用情况发送至指定端口;
15.s4:上述编程工具创建数据库,上述数据库通过资源控制程序储存指定端口接收的各用户jupyter资源使用情况;
16.s5:上述资源控制程序遍历数据库中存储的jupyter资源使用情况,判断各用户的jupyter资源是否需要进行资源扩容,若需要则执行s6;
17.s6:在上述资源控制程序中编写资源扩容策略,通过上述资源扩容策略,计算各用户扩容后的jupyter资源信息,并储存于数据库;
18.s7:上述资源控制程序遍历数据库中各用户需要扩容的jupyter资源,并动态调整各用户的jupyter资源。
19.该方案中,利用上述编程工具编写关于jupyter资源控制程序,上述资源控制程序用于实现jupyter资源不受同一资源配比限制,上述编程工具调用资源监控工具,上述资源监控工具收集各用户jupyter资源使用情况,以实现实时监控jupyter资源使用情况,上述jupyter资源使用情况即jupyter资源利用率,上述jupyter资源利用率=已使用的jupyter资源/总jupyter资源;上述编程工具启动一个http服务,设置一个指定端口,上述资源监控工具将各用户的jupyter资源使用情况发送至指定端口,上述指定端口将接收到的jupyter资源使用情况存储于数据库中,上述资源控制程序遍历数据库中存储的jupyter资源使用情况,并判断jupyter资源是否具有扩容需要,若判定jupyter资源具有扩容需要,则通过资源扩容策略计算需要扩容的jupyter资源信息,上述jupyter资源一般指代扩容前的jupyter内存空间,jupyter资源信息通常指代扩容后的jupyter内存容量,同样存储于数据库中,上述资源控制程序根据数据库中有扩容需要的jupyter资源和与其对应扩容后的jupyter资源信息,动态调整各用户的jupyter资源。
20.以实现充分提高资源利用率、在保障中间作业及过程数据不丢失的情况下,减少因资源问题引发的重新运行过程数据的问题,提高了工作效率。解决重启jupyter服务使资源配置生效过程中使用户的作业计划等数据丢失,影响业务的连续性的问题。
21.在一些可实施的方案中,一种将jupyter资源从统一配比变为动态分配的方法,上述编程工具为python。
22.在一些可实施的方案中,一种将jupyter资源从统一配比变为动态分配的方法,上述s2包括:
23.a1:上述编程工具调用资源监控工具;
24.a2:上述资源监控工具中配置请求网址;
25.a3:上述资源监控工具通过请求网址收集的各用户的jupyter资源使用情况。
26.该方案中,上述资源监控工具中配置请求网址,上述编程工具设置指定端口,上述资源监控工具定期向请求网址发起申请获取各用户的jupyter资源使用情况,上述资源监控工具再将获取的各用户的jupyter资源使用情况发送至指定端口,上述指定端口用于将每个用户的jupyter资源使用情况进行记录。
27.在一些可实施的方案中,一种将jupyter资源从统一配比变为动态分配的方法,上述资源监控工具为prometheus。
28.该方案中,上述prometheus具有灵活的查询语言,能够对采集的metrics指标进行
加法、乘法和连接等操作;prometheus还能够在本地部署,不依赖其他分布式存储等优点。
29.在一些可实施的方案中,一种将jupyter资源从统一配比变为动态分配的方法,上述s5包括:
30.b1:上述编程工具在资源控制程序中编写有阈值;
31.b2:上述资源控制程序遍历数据库中存储的jupyter资源使用情况;
32.b3:上述资源控制程序将阈值和数据库中存储的jupyter资源使用情况逐一比较,判断各用户的jupyter资源是否需要进行资源扩容。
33.该方案中,上述编程工具在资源控制程序中设置有阈值,上述阈值为jupyter资源使用情况的上限,即上述jupyter资源使用情况超过阈值则需要进行一定的扩容,上述阈值可设置为百分比值或小数值;上述资源控制程序遍历数据库中存储的jupyter资源使用情况,上述jupyter资源使用情况即jupyter资源利用率,上述jupyter资源利用率=已使用的jupyter资源/总jupyter资源;上述资源控制程序将阈值和数据库中存储的jupyter资源使用情况逐一比较,若上述阈值大于jupyter资源利用率,说明不需要对jupyter资源进行扩容处理;若上述阈值小于jupyter资源利用率,说明需要对jupyter资源进行扩容处理。
34.在一些可实施的方案中,一种将jupyter资源从统一配比变为动态分配的方法,上述s6包括:
35.c1:上述资源扩容策略包括扩容比例系数k;
36.c2:通过上述扩容比例系数k,计算各用户需要扩容后jupyter资源信息;
37.c3:将计算出的需要扩容的各用户的jupyter资源信息储存于数据库中。
38.该方案中,上述资源扩容策略包括扩容比例系数k,上述扩容比例系数k一般设置为大于1小于2的实数;利用上述扩容比例系数k与总的jupyter资源相乘,得到扩容后的jupyter总资源,上述jupyter资源指代扩容前的jupyter内存空间和cpu信息,jupyter资源信息通常指代扩容后的jupyter内存容量和扩容后的cpu信息,将计算出的需要扩容的各用户的jupyter资源信息储存于数据库中,最后,将计算出的需要扩容的各用户的jupyter资源信息储存于数据库中,以便后续工作对jupyter资源信息的调取。
39.在一些可实施的方案中,一种将jupyter资源从统一配比变为动态分配的方法,上述s7包括:
40.d1:上述资源控制程序读取数据库中需要扩容的jupyter资源的用户信息;
41.d2:上述资源控制程序读取所有用户的jupyter环境,并获取用户在jupyter环境中所属的机器;
42.d3:上述资源控制程序根据需要扩容jupyter资源的用户信息在jupyter环境中找到对应机器;
43.d4:上述资源控制程序修改对应机器中的扩容信息,并覆盖存储至数据库。
44.该方案中,上述资源控制程序分别读取数据库中需要扩容的jupyter资源的用户信息,和所有用户的jupyter环境,并获取所有用户在jupyter环境中所属的机器,上述资源控制程序先获取需要扩容jupyter资源的用户信息,并根据上述用户信息,即需要扩容jupyter资源的用户信息,在获取所有用户在jupyter环境中匹配与上述用户信息相对应的机器;上述资源控制程序从数据库中调取计算得出的扩容后的jupyter资源信息,并利用上述扩容后的jupyter资源信息覆盖原始jupyter资源信息。
45.在一些可实施的方案中,一种将jupyter资源从统一配比变为动态分配的方法,上述d1中的用户信息包括用户环境名称和扩容后的jupyter资源信息。
46.该方案中,上述资源控制程序读取数据库中需要扩容的jupyter资源的用户环境名称和扩容后的jupyter资源信息,通过jupyter资源的用户环境名称方便锁定对应的机器。
47.在一些可实施的方案中,一种将jupyter资源从统一配比变为动态分配的方法,上述d2包括:
48.e1:上述资源控制程序从所有用户的jupyter环境中筛选正在运行jupyter的机器;
49.e2:上述资源控制程序根据需要扩容jupyter资源的用户信息从正在运行jupyter的机器中找到对应的机器。
50.该方案中,在传统的方法中能够通过重启jupyter实现重新配置jupyter资源,所以无需对没有使用jupyter资源的用户进行判断该用户使用的jupyter资源是否存在不足,减少不必要的判断时间,上述资源控制程序再根据需要扩容jupyter资源的用户信息从正在运行的jupyter环境中找到对应的机器。
51.在一些可实施的方案中,一种将jupyter资源从统一配比变为动态分配的方法,上述d4包括:
52.f1:上述资源控制程序从对应机器中找到资源配置所在目录;
53.f2:上述资源控制程序根据计算出需要扩容的jupyter资源,修改目录中的jupyter资源。
54.该方案中,上述资源控制程序从对应机器中找到资源配置所在目录,再根据计算出需要扩容的jupyter资源,利用上述扩容后的jupyter资源信息覆盖原始jupyter资源信息。上述编程工具为python,python支持按照用户资源需求的动态变化对jupyter资源再分配。先利用上述资源控制系统通过ps-ef获取进程号,通过上述进程号获取限制jupyter资源的参数所在目录,如上述用户资源主要为用户所使用机器的cpu和memory,故利用python编写资源控制程序时,上述资源控制程序从对应机器中找到cpu资源配置所在目录:/sys/fs/cgroup/cpu,cpuacct/和上述cpu资源配置所在目录信息拼接,修改cpu.shares为通过计算得出扩容后的jupyter资源信息即可;上述资源控制程序从对应机器中找到memory资源配置所在目录:/sys/fs/cgroup/memory/和上述memory资源配置所在目录信息拼接,修改memory.limit_in_bytes为通过计算得出扩容后的jupyter资源信息即可。
55.本发明与现有技术相比,具有如下的优点和有益效果:
56.利用上述编程工具编写关于jupyter资源控制程序,上述资源控制程序用于实现jupyter资源不受同一资源配比限制,上述编程工具调用资源监控工具,上述资源监控工具收集各用户jupyter资源使用情况,以实现实时监控jupyter资源使用情况;上述编程工具启动一个http服务,设置一个指定端口,上述资源监控工具将各用户的jupyter资源使用情况发送至指定端口,上述指定端口将接收到的jupyter资源使用情况存储于数据库中,上述资源控制程序遍历数据库中存储的jupyter资源使用情况,并判断jupyter资源是否具有扩容需要,若判定jupyter资源具有扩容需要,则通过资源扩容策略计算扩容后的jupyter资源信息,同样存储于数据库中,上述资源控制程序根据数据库中有扩容需要的jupyter资源
和与其对应所需扩容的空间,动态调整各用户的jupyter资源。
57.以实现充分提高资源利用率、在保障中间作业及过程数据不丢失的情况下,减少因资源问题引发的重新运行过程数据的问题,提高了工作效率。解决重启jupyter服务使资源配置生效过程中使用户的作业计划等数据丢失,影响业务的连续性的问题。
附图说明
58.为了更清楚地说明本发明示例性实施方式的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。在附图中:
59.图1为一种将jupyter资源从统一配比变为动态分配的方法的流程图;
60.图2为一种将jupyter资源从统一配比变为动态分配的方法的逻辑图。
61.附图中标记及对应的零部件名称:
62.1-编程工具,2-资源控制程序,21-资源扩容策略,3-资源监控工具,4-指定端口,5-数据库。
具体实施方式
63.为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
64.实施例1
65.如图1-图2所示,本实施例1提供一种将jupyter资源从统一配比变为动态分配的方法,包括:
66.s1:编程工具1编写资源控制程序2;
67.s2:上述编程工具1调用资源监控工具3,通过上述资源监控工具3收集各用户jupyter资源使用情况;
68.s3:上述编程工具1设置指定端口4,上述资源监控工具3将各用户的jupyter资源使用情况发送至指定端口4;
69.s4:上述编程工具1创建数据库5,上述数据库5通过资源控制程序2储存指定端口4接收的各用户jupyter资源使用情况;
70.s5:上述资源控制程序2遍历数据库5中存储的jupyter资源使用情况,判断各用户的jupyter资源是否需要进行资源扩容,若需要则执行s6;
71.s6:在上述资源控制程序2中编写资源扩容策略21,通过上述资源扩容策略21,计算各用户扩容后的jupyter资源信息,并储存于数据库5;
72.s7:上述资源控制程序2遍历数据库5中各用户需要扩容的jupyter资源,并动态调整各用户的jupyter资源。
73.具体的实施例,利用上述编程工具1编写关于jupyter资源控制程序2,上述资源控制程序2用于实现jupyter资源不受同一资源配比限制,上述编程工具1为python,python支持按照用户资源需求的动态变化对jupyter资源再分配,上述用户资源主要为用户所使用
机器的cpu和memory,故利用python编写资源控制程序2时,输入参数为cpu和memory,输出为资源控制类xwspawner,并将输出的资源控制类赋值给jupyter的spawner类,具体操作如下:c.jupyterhub.spawner_class=xwspawner;以达到资源配比不再受同一资源配比限制的目的,上述编程工具1调用资源监控工具3,上述资源监控工具3收集各用户jupyter资源使用情况,以实现实时监控jupyter资源使用情况,上述jupyter资源使用情况即jupyter资源利用率,上述jupyter资源利用率=已使用的jupyter资源/总jupyter资源,即得到各个用户关于当前jupyter资源的使用情况,主要指cpu和memory的使用情况;上述编程工具1启动一个http服务,设置一个指定端口4,上述资源监控工具3将各用户的jupyter资源使用情况发送至指定端口4,上述指定端口4将接收到的jupyter资源使用情况存储于数据库5中,上述资源控制程序2遍历数据库5中存储的jupyter资源使用情况,并判断jupyter资源是否具有扩容需要,若判定jupyter资源具有扩容需要,则通过资源扩容策略21计算需要扩容的jupyter资源信息,上述jupyter资源一般指代扩容前的jupyter内存空间和cpu信息,jupyter资源信息通常指代扩容后的jupyter内存容量和扩容后的cpu信息,同样存储于数据库5中,上述资源控制程序2根据数据库5中有扩容需要的jupyter资源和与其对应扩容后的jupyter资源信息,动态调整各用户的jupyter资源。
74.一种将jupyter资源从统一配比变为动态分配的方法,上述s2包括:
75.a1:上述编程工具1调用资源监控工具3;
76.a2:上述资源监控工具3中配置请求网址;
77.a3:上述资源监控工具3通过请求网址收集的各用户的jupyter资源使用情况。
78.具体的实施例,上述资源监控工具3中配置请求网址,上述编程工具1设置指定端口4,上述资源监控工具3定期向请求网址发起申请获取各用户的jupyter资源使用情况,上述资源监控工具3再将获取的各用户的jupyter资源使用情况发送至指定端口4,上述指定端口4用于将每个用户的jupyter资源使用情况进行记录。
79.上述s5包括:
80.b1:上述编程工具1在资源控制程序2中编写有阈值;
81.b2:上述资源控制程序2遍历数据库5中存储的jupyter资源使用情况;
82.b3:上述资源控制程序2将阈值和数据库5中存储的jupyter资源使用情况逐一比较,判断各用户的jupyter资源是否需要进行资源扩容。
83.具体的实施例,上述编程工具1在资源控制程序2中设置有阈值,上述阈值为jupyter资源使用情况的上限,即上述jupyter资源使用情况超过阈值则需要进行一定的扩容,上述阈值可设置为百分比值或小数值;上述资源控制程序2遍历数据库5中存储的jupyter资源使用情况,上述jupyter资源使用情况即jupyter资源利用率,上述jupyter资源利用率=已使用的jupyter资源/总jupyter资源;上述资源控制程序2将阈值和数据库5中存储的jupyter资源使用情况逐一比较,若上述阈值大于jupyter资源利用率,说明不需要对jupyter资源进行扩容处理;若上述阈值小于jupyter资源利用率,说明需要对jupyter资源进行扩容处理。
84.如:设置阈值为80%,而上述jupyter资源利用率为90%,90%大于80%,说明需要对jupyter资源进行扩容处理,以防止继续使用jupyter进行作业时,由于jupyter资源不足以至于工作无法进行;上述jupyter资源利用率为70%,70%小于80%,说明jupyter资源尚
有余存,无需要对jupyter资源进行扩容处理。
85.上述s6包括:
86.c1:上述资源扩容策略21包括扩容比例系数k;
87.c2:通过上述扩容比例系数k,计算各用户需要扩容后jupyter资源信息;
88.c3:将计算出的需要扩容的各用户的jupyter资源信息储存于数据库5中。
89.具体的实施例,上述资源扩容策略21包括扩容比例系数k,上述扩容比例系数k一般设置为大于1小于2的实数;利用上述扩容比例系数k与总的jupyter资源相乘,得到扩容后的jupyter总资源,上述jupyter资源指代扩容前的jupyter内存空间,jupyter资源信息通常指代扩容后的jupyter内存容量,将计算出的需要扩容的各用户的jupyter资源信息储存于数据库5中,最后,将计算出的需要扩容的各用户的jupyter资源信息储存于数据库5中,以便后续工作对jupyter资源信息的调取。
90.如设置扩容比例系数k为1.5,扩容后的jupyter资源信息=总的jupyter资源*1.5。
91.上述s7包括:
92.d1:上述资源控制程序2读取数据库5中需要扩容的jupyter资源的用户信息;
93.d2:上述资源控制程序2读取所有用户的jupyter环境,并获取用户在jupyter环境中所属的机器;
94.d3:上述资源控制程序2根据需要扩容jupyter资源的用户信息在jupyter环境中找到对应机器;
95.d4:上述资源控制程序2修改对应机器中的扩容信息,并覆盖存储至数据库5。
96.具体的实施例,上述资源控制程序2分别读取数据库5中需要扩容的jupyter资源的用户信息,和所有用户的jupyter环境,并获取所有用户在jupyter环境中所属的机器,上述资源控制程序2先获取需要扩容jupyter资源的用户信息,并根据上述用户信息,即需要扩容jupyter资源的用户信息,在获取所有用户在jupyter环境中匹配与上述用户信息相对应的机器;上述资源控制程序2从数据库5中调取计算得出的扩容后的jupyter资源信息,并利用上述扩容后的jupyter资源信息覆盖原始jupyter资源信息。
97.如:若上述编程工具1在资源控制程序2中编写的阈值为80%,当上述jupyter资源利用率达到90%时,说明需要对jupyter资源进行扩容处理,此时设置上述扩容比例系数k为1.5,原jupyter总内存限制为4g,当jupyter内存使用已达3.6g时,计算出的jupyter资源信息=1.5*4g=6g,将6g的jupyter资源信息存储至数据库5中,当上述资源控制程序2根据需要扩容jupyter资源的用户信息在jupyter环境中找到对应机器,利用上述6g的jupyter资源信息覆盖上述4g的jupyter资源。
98.上述d2包括:
99.e1:上述资源控制程序2从所有用户的jupyter环境中筛选正在运行jupyter的机器;
100.e2:上述资源控制程序2根据需要扩容jupyter资源的用户信息从正在运行jupyter的机器中找到对应的机器。
101.具体的实施例,在传统的方法中能够通过重启jupyter实现重新配置jupyter资源,所以无需对没有使用jupyter资源的用户进行判断该用户使用的jupyter资源是否存在
不足,减少不必要的判断时间,上述资源控制程序2再根据需要扩容jupyter资源的用户信息从正在运行的jupyter环境中找到对应的机器。
102.上述d4包括:
103.f1:上述资源控制程序2从对应机器中找到资源配置所在目录;
104.f2:上述资源控制程序2根据计算出需要扩容的jupyter资源,修改目录中的jupyter资源。
105.具体的实施例,上述资源控制程序2从对应机器中找到资源配置所在目录,再根据计算出需要扩容的jupyter资源,利用上述扩容后的jupyter资源信息覆盖原始jupyter资源信息。上述编程工具1为python,python支持按照用户资源需求的动态变化对jupyter资源再分配。先利用上述资源控制系统通过ps-ef获取进程号,通过上述进程号获取限制jupyter资源的参数所在目录,如上述用户资源主要为用户所使用机器的cpu和memory,故利用python编写资源控制程序2时,上述资源控制程序2从对应机器中找到cpu资源配置所在目录:/sys/fs/cgroup/cpu,cpuacct/和上述cpu资源配置所在目录信息拼接,修改cpu.shares为通过计算得出扩容后的jupyter资源信息即可;上述资源控制程序2从对应机器中找到memory资源配置所在目录:/sys/fs/cgroup/memory/和上述memory资源配置所在目录信息拼接,修改memory.limit_in_bytes为通过计算得出扩容后的jupyter资源信息即可。
106.以上上述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上上述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1