基于云计算的数据挖掘rest服务平台的制作方法_3

文档序号:9238243阅读:来源:国知局
ST操作需要传递参数及返回 服务的结果,平台使用JS0N做为客户端与服务层交换的数据格式。同时使用Jersey作为 RestfulWeb服务的实现框架。表1为平台Web服务接口。
[0053]
[0054]表1
[0055] Jersey是Oracle推出的Rest框架,相比于Restlet和RestEasy等其他Rest框 架,更加直观,同时符合JAX-RS(JSR 311)标准。Jersey主要包含下面三个部分:
[0056] 1.核心服务器(CoreServer):此部分提供JAX-RS中标准化的注释和API标准 化,可以直观的开发标准的RESTfulWeb服务。
[0057] 2?核心客户端(CoreClient)Jersey客户端提供了与REST服务通信的核心 API。
[0058] 3?集成(Integration) :Jersey同时提供了与Spring、Guice、Apache Abdera等 框架集成的库。
[0059] 并行挖掘算法服务:向外暴露并行挖掘算法接口,算法服务资源的URI为/ algorithms/{algorithmID},algorithmID为对应算法的资源ID,系统现支持的并行算法 如下表2。在调用算法服务前,可通过查询(即发送HTTP的GET请求)算法资源下的info 子资源获取该算法的调用参数信息。表2为平台支持的算法列表。
[0060]

[0061] 表 2
[0062] 由于某些并行挖掘算法的运行时间相对较长,系统同时提供异步模式的挖掘算法 服务。同步模式下的服务请求处理,客户端的请求连接在在单线程的服务端得到处理。一 旦服务端的服务线程处理完请求,服务端能够确保客户端的请求已被处理完毕并且客户端 的连接资源得到安全释放。这种处理模型对于那些执行时间相对较短的服务是合适的。
[0063] 然而,如果服务的的执行时间较长,异步模式更加合适。在这种模式下,服务线程 和客户端连接的联系被切断。处理请求的服务线程将不在保证服务线程返回时客户端的连 接能被正常关闭。一般情况下,服务线程返回时客户端的连接会被挂起。异步模式并不会 减少客户端请求的处理时间,但它会增加服务端的吞吐量,提升网络资源的利用率。原有的 服务线程在接收到客户端的请求后会将该请求放在一个请求队列中然后交给一些专门的 线程来处理,这时原有的服务线程就能不断接受新的客户端请求。
[0064] 调用异步模式的并行挖掘算法服务资源的URI为/algorithms/{algorithmID}/ run,当调用算法服务时通过Post请求向算法服务资源传递参数,参数值被封装在基于哈 希表实现的MapObject对象中。基于Jersey实现的服务端每接受到一个算法调用请求会 创建一个新线程负责执行相应的算法调用处理,同时会创建一个异步的Response对象交 给新创建的线程对象,当执行算法处理的线程运行完后会通过异步的Response对象向客 户端返回处理结果,处理结果以JS0N格式返回给客户端。
[0065] 作业运行监控服务:主要向外暴露作业运行状态的查询接口,客户端可以根据作 业名查询指定作业的执行情况。该服务资源的URI为/jobs/{jobName},jobName为要查询 运行状态的作业名。通过该服务资源查询到的作业的运行状态为总体的运行情况,由于作 业一般要有多个运行阶段(比如Hadoop作业分为Map、Shuffle、Reduce三个阶段),若想 详细查询每个阶段的执行状态,可通过该服务资源下的status子资源获取。查询结果也以 JS0N返回给客户端。
[0066] 查询作业运行状态的时序图如图5,查询作业的运行状态时会先创建一个与集群 通信的JobClient,JobClient通过RPC协议与集群的Master节点进行通信获取所有作业 的JobStatus对象,在结合作业名可以找到要查询作业的Jobld,最后通过Jobld可获取要 查询作业的Runningjob对象(对于提交作业的客户端来讲,提交的作业都被抽象成了一个 Runningjob对象)。基于Runningjob对象,可获取作业的详细运行情况。
[0067] 日志管理服务:主要提供对集群作业的运行日志的管理,服务资源的URI为/ logs/{logID},logID为作业日志的ID。该服务允许根据作业名来查询作业的运行日志, 同时可以进行日志删除等操作。Hadoop中MapReduce作业的服务日志有两大类,一类是运 行节点的日志,包括JobTracker日志和各个TaskTracker日志,这些日志文件每天生成一 个,旧的日志后缀是日期,当天的日志文件后缀是".log"。另一类是作业运行日志,包括 jobhistory日志和task日志两部分,其中,jobhistory日志是作业运行日志,包括作业启 动时间、结束时间,每个任务的启动时间、结束时间,各种counter信息等,从这个日志中可 以解析出作业运行的各种信息,每个task日志存放在task运行节点上,包含三个日志文 件,分别是stdout、stderr和syslog。
[0068] 通过该服务进行日志管理时,会直接从集群节点上的logs目录读取日志信息然 后反序列化为JobHistory对象(JobHistory为管理作业的接口对象)。JobHistory提供 了读写日志的方法,可实现作业运行日志的查看和删除等操作。
[0069] 云挖掘服务SDK封装了基于云的数据挖掘服务平台的Rest服务API接口以供本 地调用。在业务系统中引入SDK的开发包,可方便实现数据分析、个性化推荐等相关应用。 调用SDK服务时实例化相关的Service对象,调用相应方法即可。
[0070] 云挖掘服务SDK包含的Service类及主要功能方法如下:
[0071]表 3 为xxxService类(xxx为算法名)
[0072]
[0073]表4为JobMonitorService类
[0074]
[0075] 表4
[0076] 表5为LogService类
[0077]
[0078] 表 5
[0079] 使用云服务SDK时会创建Client与服务平台进行信息的交互,Client默认交由 ClientFactory负责管理,为了提高性能,同一个URL请求的Client在创建后会被缓存。在 调用云挖掘服务平台的并行算法服务时,需要先将算法所需的参数封装在Map中然后传递 给服务类的相关方法。
[0080] 实例:平台Rest服务接口测试
[0081] 服务平台测试主要包含两部分,一是对平台的Rest服务接口进行测试,二是对云 挖掘服务SDK进行测试。Rest服务接口测试通过SoapUI完成,通过在SoapUI上模拟Http 请求,可以查看平台各服务接口返回值及执行时间。云服务SDK测试使用JUnit框架,通过 Assert断言判断SDK的API是否返回预期值。测试采用的集群环境与软件版本如下表6 :
[0082]
[0083] 表b
[0084] Soapn是进行Web服务测试的主流开源工具,它使开发人员能直观的测试基于 SOAP或Rest的Web服务,SoapUI出现之前,由于Web服务是程序调用的,一般不会提供界 面让最终用户或测试人员直接使用,不得不自己编写程序来测试它。Soapn的出现极大改 变了这一局面,Soapn支持多样的测试,例如功能测试,性能测试,回归测试等。Soapn在 测试时使用HttpRequest对服务资源发出请求,然后对资源返回的Response进行相应的 处理。
[0085] Soapn把REST服务、资源及其操作组织为一个层次结构。这种层次结构主要包含 以下五部分::
[0086]1、项目定义:位于最上层,项目可以包含多个服务的定义。
[0087] 2、REST服务定义:服务其实是对多个REST资源的一个分组。
[0088] 3、REST资源定义:具体描述该资源的名称,URI,参数等属性。
[0089] 4、REST方法定义:
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1