云算法调用平台--web 工程调用hadoop集群1.3

Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit,struts2;

本篇介绍的是一个云算法调用平台,主要的作用是使用前台的参数配置,然后调用hadoop集群来跑mahout的算法程序。工程可以在web 工程调用hadoop集群1.3下载,工程下载后需要拷贝WEB-INF/lib/hadoop-fz1.3.jar到hadoop集群的lib下面。此版本只支持text2vector算法,其他算法后续版本给出。

先看下整体页面:


用户首先需要配置集群,集群配置完成后,可以调用算法了。

这里验证集群是否Running状态使用的是初始化JobClient的方法,如果使用配置的jobtracker和namenode初始化JobClient成功,那么就说明集群是可以使用的。这里前台页面提交到后台都是使用struts2拦截,然后使用action来接收处理的,首先看下struts2的配置:

[html]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.3.dtd">  
  5.   
  6. <struts>  
  7.   
  8.     <!-- Add packages here -->  
  9.       
  10.     <constant name="struts.devMode" value="true" />  
  11.       
  12.     <constant name="struts.i18n.encoding" value="UTF-8" />  
  13.     <package name="actions" extends="struts-default" namespace="/actions" >  
  14.   
  15.         <action name="hadoop_Setup" class="org.fz.algorithm.hadoop.action.SetupAction">  
  16.             <result name="success">/hadoop/setup_success.html </result>  
  17.             <result name="error">/hadoop/setup_error.html </result>  
  18.         </action>  
  19.           
  20.         <action name="*_*" class="org.fz.algorithm.{1}.action.{2}Action">  
  21.             <result name="success">/algorithm/running.jsp </result>  
  22.             <result name="error">/algorithm/error.jsp </result>  
  23.         </action>  
  24.        
  25.     </package>  
  26.       
  27. </struts>  
这里的setup单独配置了,涉及到算法调用的都使用通配符进行跳转;


集群配置参数输入完成后,点击确认,表单提交到actions/hadoop_Setup ,这是一个action,在struct.xml中看到这个action对应的是org.fz.algorithm.hadoop.action.SetupAction,这里的处理就是利用前面的参数初始化JobClient来判断集群是否可用。这里的参数接收使用的是strut2的特有方式,表单里面输入框的命名也有要求,具体参考代码;

接着是hadoop算法的一个用例:


这个算法是把输入文本数据文件转换成序列向量文件的算法,需要参数有输入路径、输出路径、向量间隔符。比如下面的数据,数据间隔符就是逗号:


看这个表单提交的action是actions/hadoop_Text2vector,这个在strut.xml中没有直接的匹配,但是却有一个通配符匹配到,那么它实际的action就是:org.fz.algorithm.{1}.action.{2}Action,替换{1}、{2}得到org.fz.algorithm.hadoop.action.Text2vectorAction,这个action的代码如下:

[java]  view plain copy
  1. package org.fz.algorithm.hadoop.action;  
  2.   
  3. import org.fz.algorithm.hadoop.model.Text2vectorVo;  
  4. import org.fz.algorithm.hadoop.service.Text2vectorService;  
  5.   
  6. import util.hadoop.HadoopUtil;  
  7.   
  8. import com.opensymphony.xwork2.ActionSupport;  
  9.   
  10. public class Text2vectorAction extends ActionSupport {  
  11.   
  12.     /** 
  13.      *  
  14.      */  
  15.     private static final long serialVersionUID = 1L;  
  16.     private Text2vectorVo text2vectorVo;  
  17.       
  18.     /* 
  19.      * do the text 2 vector transform 
  20.      * use split 
  21.      * @see com.opensymphony.xwork2.ActionSupport#execute() 
  22.      */  
  23.     @Override  
  24.     public String execute(){  
  25.         if(!HadoopUtil.checkHaveSetHadoop()){// have not set hadoop cluster then return error;  
  26.             return ERROR;  
  27.         }  
  28.           
  29.         Text2vectorService t2v=new Text2vectorService(text2vectorVo);  
  30.         // run job  
  31.         new Thread(t2v,"text2vector job").start();  
  32.   
  33.         return SUCCESS;  
  34.     }  
  35.   
  36.     public Text2vectorVo getText2vectorVo() {  
  37.         return text2vectorVo;  
  38.     }  
  39.   
  40.     public void setText2vectorVo(Text2vectorVo text2vectorVo) {  
  41.         this.text2vectorVo = text2vectorVo;  
  42.     }  
  43. }  
这里算法调用都是采用新建thread的方法来做的,直接跳转到任务监控界面,但是点击下面方块中的内容不会刷新,可以考虑点击圆圈的内容:

这里的点击确定,运行算法后,跳转到算法监控界面不是很合理,应该是自己写一个监控的,而不是直接调用原来的监控。这块暂时还没想好怎样监控。


后续版本会慢慢增加算法,同时页面会调整的相对美观点。


分享,成长,快乐

转载请注明blog地址:http://blog.csdn.net/fansy1990

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值