资源描述
网格批作业系统网格批作业记账系统,GOSV2培训,网格批作业系统,目标功能实现,网格批作业系统-目标,实现主机批作业系统的服务化封装,屏蔽底层主机批作业系统的异构特征,为用户提供简单、标准兼容的服务调用接口。,网格批作业系统-功能,网格批作业驱动程序接受批作业服务的调用,生成辅助文件并调用批作业系统。网格批作业服务通过对底层批作业系统(PBS等)的服务化封装,为客户端提供统一、通用的批作业处理功能,包括:作业提交、状态查询、作业取消、获取标准输入/输出,数据的stagein/stageout等。网格批作客户端通过网程与网格批作业服务之间进行交互,屏蔽底层服务的访问细节,为用户(应用)提供方便、易用的批作业处理接口,包括:作业提交、状态查询、作业取消、获取标准输入/输出等。,网格批作业系统-实现,结构,网格批作业系统-实现,后续部分:结合实例,介绍从客户端提交作业直到作业结束的全过程,既包括客户端API和服务端API的使用,也包括服务端实现的相关说明。,网格批作业系统-实现,实例包括如下过程:用户预先上传作业需要的输入文件(使用网格文件API);用户提交作业描述;判断作业是否结束(使用作业状态查询和作业StageOut状态获取接口);作业执行完毕后,获取标准输出/错误;作业执行完毕后,使用网格文件API获取输出文件。,网格批作业系统-实现submit流程,1.creategripandinvokeeffectivefileandbatchservice,grip,physicalbatchservice,AgoraService,2.authentication,resourceselectionandgetbacktoken,4.submitjobscriptwithGOScontext,physicalfileservice,physicalfileservice,physicalfileservice,3.uploadstageinfilesintodistributeduserfilespace,grip,6.downloadstageinfiles,localbatchsystem,8.uploadstageoutfiles,7.submitquery,5.creategrip,网格批作业系统-实现,实例中相关API使用:,网格批作业系统-实现,使用网格文件API上传作业的输入文件GripClientgc=newGripClient();UserHandleuserHandle=gc.create(proxy,agoraId);HotfileGripClienthgc=newHotfileGripClient(gc,userHandle,agora_service_address,agoraId);hgc.upload(EDS,EMSName,localfilename,globalfilename);/本例中需要预先把一个本地文件上传到全局文件空间,并且名字为input./HotfileGripClient的详细使用请参见网格文件系统部分的介绍,网格批作业系统-实现,BatchGripClient初始化GripClientgc=newGripClient(BatchConstants.BATCH_CLIENT_WSDD);byteproxy=BatchUtils.readProxy(proxyPath);UserHandleuserHandle=gc.create(proxy,agoraId);bgc=newBatchGripClient(gc,userHandle,agora_service_address,agoraId,batchAddr);,网格批作业系统-实现,作业提交Stringjid=bgc.submit(newBatchJobDesc(newFile(myjob.xml).toXML();System.out.println(aftersubmit,jobidis:+jid);,网格批作业系统-实现,作业状态查询,如果为Done,获取标准输出和标准错误信息while(true)status=bgc.status(jid);System.out.println(RefreshedJobStatus:+status);if(status.equals(Done)|status.endsWith(Failed)System.out.println(bgc.getStdout(jid);System.out.println(bgc.getStderr(jid);break;Thread.sleep(5000);,网格批作业系统-实现,作业StageOut状态获取while(status.equals(Done)booleanstageoutok=false;trystageoutok=bgc.isStageOutOK(jid);catch(Exceptione)e.printStackTrace();System.out.println(RefreshedJobstageoutStatusfailed!n);break;if(stageoutok)System.out.println(jobdoneandstageoutisok!dosomefileoperation.);break;Thread.sleep(5000);,网格批作业系统-实现,使用网格文件API下载作业的输出文件GripClientgc=newGripClient();UserHandleuserHandle=gc.create(proxy,agoraId);HotfileGripClienthgc=newHotfileGripClient(gc,userHandle,agora_service_address,agoraId);booleantt=hgc.download(EDS,“globalfilename”,“localfilename”);/把作业的输出文件(本例中全局文件名是output)从全局文件空间,下载到本地./HotfileGripClient的详细使用请参见网格文件系统部分的介绍。,网格批作业系统-实现,服务端实现介绍:批作业服务,(以最复杂的submit接口为例)。批作业驱动程序,网格批作业系统-实现,批作业服务:接口:Stringsubmit(Stringagora_service_address,StringagoraId,StringjobDescription)Stringstatus(Stringid);voidcancel(Stringid);StringgetStdout(Stringid);StringgetStderr(Stringid);booleanisStageOutOK(Stringid);,网格批作业系统-实现,批作业服务:submit搜集调用信息,从GOSContext中获取Calluserproxy创建本次调用工作目录并更改权限755;验证作业描述是否有效;如果有输入文件,则从全局空间下载到本地;,网格批作业系统-实现,批作业服务:submit续在本次工作目录中创建辅助文件,fn是一个随机数fn.origin存放作业描述中的脚本部分fn.stagein存放作业描述中的stagein部分fn.stageout存放作业描述中的stageout部分根据gridmap,从DN映射到本地用户名;调用批作业驱动程序,获得作业ID;记账;把作业信息放入作业描述表。作业描述表在批作业初始化的时候生成,存放所有提交过的作业信息,可被作业清除程序定期清除;,网格批作业系统-实现,批作业服务:submit续创建StageoutWorker线程;返回作业ID给客户端。StageoutWorker线程StageoutWorker负责监控作业执行状态,当作业执行完毕时(status=Done),此线程把结果数据上传到全局空间。,网格批作业系统-实现,批作业驱动程序根据fn.origin,fn.stagein,fn.stageout生成fn.pbs;接受BatchService调用,提交fn.pbs到后台批作业系统;返回结果文件以及stdout和stderr。setuid,网格批作业记账系统,目标功能实现,网格批作业记账系统-目标,建立覆盖全网格的批作业系统记账数据的生成、汇总机制。,网格批作业记账系统-功能,记录批作业系统的使用数据;每天生成记账信息;每天汇总记账信息;,网格批作业记账系统-实现,结构:,网格批作业记账系统-实现,当用户调用网格批作业服务时,网格批作业服务会把本次作业的相关信息记入记账数据库,ADP每天执行一次,负责生成本地的记账信息,ADA每天执行一次(比ADP晚),通过调用AS对各个节点的记账信息进行汇总。,网格批作业记账系统-实现,服务接口:获取节点用户记账信息bytegetUserAccData(Stringuid,StringtimeBegin,StringtimeEnd);获取节点记账信息bytegetAccData(Stringsid,intopt),网格批作业记账系统-实现,获取用户记账信息接口返回如下的XML:ntj11339doneCNGrid-Node-1000z101615042004101813080120041016150717200410161507181000。,网格批作业记账系统-实现,获取节点记账信息接口:bytegetAccData(Stringsid,intopt)throwsRemoteException获取记账服务所在节点的昨天发生的记账信息opt=1时,返回昨天记帐信息的数量,同时将昨日的记帐信息拷贝至临时表中;opt=2时,从该临时表中取100条记帐信息;opt=3时,删除该临时表中100条记帐信息。用户需要组合这三个选项完成记账信息的汇总,网格批作业记账系统-实现,实例:记账数据汇总ADA通过调用AS完成记账信息的汇总,ADA的功能使用记账客户端API进行构建,基本流程如下图:,网格批作业记账系统-实现,Thanks!,
展开阅读全文