[发明专利]一种Python-Web环境中多用户共享使用Spark集群的实现方法和系统有效
申请号: | 201910568205.2 | 申请日: | 2019-06-27 |
公开(公告)号: | CN110471777B | 公开(公告)日: | 2022-04-15 |
发明(设计)人: | 易秀娟;孟珍;王学志;周园春 | 申请(专利权)人: | 中国科学院计算机网络信息中心 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F16/25;G06F16/28 |
代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 邱晓锋 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 python web 环境 多用户 共享 使用 spark 集群 实现 方法 系统 | ||
1.一种Python-Web环境中多用户共享使用Spark集群的实现方法,其特征在于,包括以下步骤:
Python Web环境中的Web服务器接收用户端提交的任务计算请求,将任务存入异步任务队列中;根据任务请求的时间顺序采用先到先服务的策略,在此基础上限制同一用户最多能够运行的任务数以保证Spark集群能够被多个不同用户共享;所述Web服务器为采用Tornado框架的Web服务器;用户端与Web服务器之间采用WebSocket协议进行通信;
Web服务器的主进程中的协程,将所述异步任务队列中的任务通过异步消息队列告知相应的子进程,每个子进程对应一个Spark上下文,利用有限数量的Spark上下文来服务和支持多用户的任务计算请求;利用协程而不是线程来守护子进程,协程之间自主调度;协程与子进程通过ZeroMQ进行通信;
子进程将任务提交至Spark集群以进行任务计算;
采用关系型数据库存储用户端的任务计算请求,每个任务计算请求为一条记录,包括任务的唯一ID、提交者、提交时间、状态、结束时间;每次任务状态更新均写入关系型数据库;用户端提交任务后,从所述关系型数据库获得任务的唯一ID,通过该ID查询任务的状态和执行结果;
对于处于“运行”状态的任务,用户能够选择终止该任务的运行;处理用户终止任务请求的步骤包括:Web服务器接收用户端终止任务的请求;对于正在运行的任务,主进程停止相应的子进程,启动一个新的子进程,并由一个新的协程守护,而当前的协程则返回,结束生命周期;对于已经执行完或还在等待的任务,Web服务器给出相应的错误描述告知用户端终止任务请求不合理。
2.根据权利要求1所述的方法,其特征在于,子进程将任务提交至Spark集群后,阻塞等待Spark集群的任务计算结果,主进程在协程之间调度,即在子进程池中寻找空闲的子进程以便服务其他用户端的请求,若没有空闲子进程则等待。
3.根据权利要求1所述的方法,其特征在于,所述每次任务状态更新均写入关系型数据库,包括:任务初始状态为“等待”状态;协程在提交任务至子进程后,更新任务状态为“运行”状态;子进程将任务计算结果或错误信息返回给协程后,协程更新任务状态为“完成”或“错误”。
4.根据权利要求3所述的方法,其特征在于,终止任务后相应的子进程被杀死,Spark上下文丢失,相应的Spark应用结束即不再占用Spark集群的资源。
5.一种用于实现权利要求1所述方法的Python-Web环境中多用户共享使用Spark集群的Web服务器,其特征在于,包括:
接收任务请求模块,用于接收用户端提交的任务计算请求,将任务存入异步任务队列中;
任务调度模块,用于根据任务请求的时间顺序采用先到先服务的策略,在此基础上限制同一用户最多能够运行的任务数以保证Spark集群能够被多个不同用户共享;
处理任务请求模块,用于通过主进程中的协程,将所述异步任务队列中的任务通过异步消息队列告知相应的子进程,每个子进程对应一个Spark上下文;
提交任务模块,用于通过子进程将任务提交至Spark集群以进行任务计算。
6.一种Python-Web环境中多用户共享使用Spark集群的实现系统,其特征在于,包括用户端,与所述用户端建立通信连接的权利要求5所述的Web服务器,以及与所述Web服务器建立通信连接的Spark集群。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算机网络信息中心,未经中国科学院计算机网络信息中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910568205.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:应用数据通信方法、装置及系统
- 下一篇:插件管理系统及方法