软件版本:

windows7: Tomcat7、JDK7、Spring4.0.2、Struts2.3、Hibernate4.3、myeclipse10.0、easyui;Linux(centos6.5):Hadoop2.4、Mahout1.0、JDK7;

使用Web工程调用Mahout的相关算法,提供监控,查看任务的执行状态。

自建Web项目,项目首页如下:

1. 准备

项目可以在http://download.csdn.net/detail/fansy1990/7600427(第一部分)、http://download.csdn.net/detail/fansy1990/7600463(第二部分)、http://download.csdn.net/detail/fansy1990/7600489(第三部分)下载。
Hadoop使用官网提供的2.4版本,直接下载即可,然后配置(配置这里不再赘述)、启动各个服务,使用jps,可以看到下面的服务:
[root@node33 data]# jps
6033 NodeManager
5543 NameNode
5629 DataNode
5942 ResourceManager
41611 Jps
5800 SecondaryNameNode
6412 JobHistoryServer

1.1 Hadoop包

可以使用eclipse新建一个java项目,然后导入Hadoop的包,测试是否可以连接集群,导入的包如下:
修改红色框里面的mapred-default.xml、yarn-default.xml中的如下配置(node33是伪分布式Hadoop集群机器的机器名):
mapred-default.xml:
<property><name>mapreduce.jobhistory.address</name><value>node33:10020</value><description>MapReduce JobHistory Server IPC host:port</description>
</property>

yarn-default.xml:

<name>yarn.application.classpath</name><value>$HADOOP_CONF_DIR,$HADOOP_COMMON_HOME/share/hadoop/common/*,$HADOOP_COMMON_HOME/share/hadoop/common/lib/*,$HADOOP_HDFS_HOME/share/hadoop/hdfs/*,$HADOOP_HDFS_HOME/share/hadoop/hdfs/lib/*,$HADOOP_YARN_HOME/share/hadoop/yarn/*,$HADOOP_YARN_HOME/share/hadoop/yarn/lib/*</value>
<name>yarn.resourcemanager.hostname</name><value>node33</value>

注意classpath的路径是集群的相应路径;

还有是新建YARNRunner文件,参考:http://blog.csdn.net/fansy1990/article/details/27526167。
首先这样测试,看是否可以连接集群(直接运行一个MR任务,看是否执行),如果不行,肯定是有地方没有设置对。

1.2 Mahout包

导入Mahout的包,Mahout的包获取采用官网提供的方式,自行使用git下载,编译得到,参考:http://mahout.apache.org/developers/buildingmahout.html(注意选择使用Hadoop2的方式,由于这里使用的是2.4 ,所以

mvn -Dhadoop2.version=2.4.1 -DskipTests clean install

)导入的包有:

新建文件进行测试,看调用Mahout的算法包是否可以正常运行,并不会报不兼容JobContext和Job不兼容的错误,如果报错,说明编译有问题(可以下载lz编译好的)

2.配置

项目可以在 http://download.csdn.net/detail/fansy1990/7600427(第一部分)、http://download.csdn.net/detail/fansy1990/7600463(第二部分)、http://download.csdn.net/detail/fansy1990/7600489(第三部分)下载,下载后需要配置:

2.1 Hadoop相关配置

(1)在1.准备中的把对应的node33改为自己的机器名;
(2)去掉工程中WebRoot/lib/mahout-*-job.jar 中去掉javax.servlet 和javax.el目录(不然无法启动Tomcat,如果是自己编译的话,如果是下载的则不用,已经去掉了);
(3)修改工程中src/com/fz/util/HadoopUtils文件中的node33以及端口号改为自己的集群机器名/IP和端口;
(4)把工程src目录的所有文件打jar包上传到云平台mapreduce目录下(否则会报类找不到的错误,lib目录下面的mh2.1.jar);

2.2 数据库相关配置

修改工程中Configuration/db.properties文件中数据库相应配置(数据库暂时没有使用到);

2.3 Tomcat部署

tomcat部署使用配置文件的方式:
<Contextpath ="/mh"  docBase ="D:\workspase\hadoop_hbase\MahoutAlgorithmPlatform2.1\WebRoot"  privileged ="true"  reloadable ="false"  >
</Context>

项目部署名使用mn。

3. 功能

功能主要包括四个方面:集群配置、集群算法监控、Hadoop模块、Mahout模块,data目录提供测试数据;

3.1 集群配置模块

启动工程,打开浏览器访问http://localhost:8080/mh ,即可访问项目,首页看到的即是集群配置。这里需要说明的是在src/com/fz/util/HadoopUtils中不一定要修改,可以在集群配置页面中进行配置亦可;
验证集群是否可以连接的代码:
public int checkConnection(String fsStr,String rm) throws IOException{Configuration conf = new Configuration();conf.set("fs.defaultFS", fsStr);conf.set("yarn.resourcemanager.address", rm);conf.set("mapreduce.framework.name", "yarn"); FileSystem fs = FileSystem.get(conf);boolean fsOnline=fs.exists(new Path("/"));if(!fsOnline){return 1;}JobClient jc = new JobClient(conf);ClusterStatus cs = jc.getClusterStatus();if(!"RUNNING".equals(cs.getJobTrackerStatus().toString())){return 0;}// 集群验证成功HadoopUtils.setConf(conf);HadoopUtils.setFs(fs);// 通过判断Hadoop.getConf()是否为null来确定是否已经配置过集群return 3;}

主要通过两个方面:1、检查HDFS文件;2、检查集群状态是否是running;

配置完成后,点击验证,如果验证成功,即可提示验证成功:

3.2集群算法监控模块

在集群配置中,点击验证成功后,就会在任务监控页面不停的发送消息,获取集群任务运行的状态(间隔1.2秒,Ajax方式);
当没有任务运行的时候,获取任务运行状态,会直接返回null。在Mahout模块或者Hadoop模块运行MR任务的时候,如果任务成功提交,那么首先会根据此次提交运行的MR任务的个数初始化任务信息类。初始化,做的工作就是找到当前已经运行的任务的ID,然后初始化接下来要运行任务的ID,如下代码:
public static void initialCurrentJobs(int nextJobNum) throws IOException{/*if(list!=null&&list.size()==10){list.clear();}*/list.clear(); // 清空上次遗留JobStatus[] jbs=getJc().getAllJobs();JobID jID = findLastJob(jbs).getJobID();if(jID==null){// the first time start the cluster , will be fixed next time // TODO fix the buglog.info("The cluster is started before and not running any job !!!");}log.info("The last job id is :{}", jID.toString());for(int i=1;i<=nextJobNum;i++){CurrentJobInfo cj = new CurrentJobInfo();cj.setJobId(new JobID(jID.getJtIdentifier(),jID.getId()+i));list.add(cj);}}

这里需要注意的是,如果集群是第一次启动,且没有运行MR任务的话,那么获取的任务ID为空,无法初始化(这个在下个版本修复);

获取当前运行任务的代码如下:
public static List<CurrentJobInfo> getCurrentJobs() throws IOException{for(int i=0;i<list.size();i++){CurrentJobInfo iJob = list.get(i);RunningJob runningJob =findGivenJob(iJob.getJobId().toString());if(runningJob==null){break;}if(i==list.size()-1){ // 放在设置的前面finished=runningJob.isComplete();}iJob.setJobName(runningJob.getJobName());iJob.setJobIdStr(runningJob.getJobStatus().getJobID().toString());iJob.setMapProgress(Utils.toPercent(runningJob.mapProgress(),2));iJob.setRedProgress(Utils.toPercent(runningJob.reduceProgress(), 2));iJob.setState(JobStatus.getJobRunState(runningJob.getJobState()));  // 有时map和reduce都到1时,此值仍是Running,需处理}return list;}

获取到任务信息后,在任务监控界面就可以监控到任务的运行状态。

3.3 Hadoop模块

Hadoop模块目前包括5个小功能:上传、下载、读取、读取聚类中心点、文本转换为序列向量文件。

3.3.1 上传、下载

上传下载都使用FileSystem的方法,分别是copyFromLocal 和copyToLocal 。界面只有两个参数:

3.3.2 读取、读取聚类中心点

读取是按照每行数据来读取的,可以选择读取的行数;读取聚类中心,则是直接读取序列文件 ;
读取聚类中心向量代码如下:
/*** 读取聚类中心向量* @param conf* @param centerPathDir* @return* @throws IOException*/public static String readCenter(Configuration conf,String centerPathDir) throws IOException{StringBuffer buff = new StringBuffer();Path input = new Path(centerPathDir, "part-*");if(!HadoopUtils.getFs().exists(input)){return input+" not exist ,please check the input";}for(ClusterWritable cl:new SequenceFileDirValueIterable<ClusterWritable>(input, PathType.GLOB, conf)){buff.append(cl.getValue().asFormatString(null)).append("\n");}return buff.toString();}

3.3.3文本转换为序列向量

这个功能点是一个MR任务,提交任务后,可以在任务监控模块看到任务监控。主要的功能是把文本文件转换为序列向量,为聚类提供输入数据。需设置文本分隔符:
监控信息:

3.4 Mahout模块

Mahout算法模块主要是调用Mahout算法库中相关算法,然后监控算法运行状态;

3.4.1 聚类算法

聚类算法暂时使用kmeans算法,提供算法相关参数(数据在data目录的wine_kmeans.txt):
这里提交任务使用多线程提交,这样可以方便监控;

3.4.2 分类算法

分类算法暂时使用随机森林算法(数据在data/galss.txt);
分为两个部分,建树、测试;建树使用MR算法,测试使用单机模式;
建树输出模型路径使用相对路径,使用绝对路径会报错!
点击确定,打开任务监控页面,查看任务提交情况:
测试随机森林,可以看到随机森林的参数以及测试数据的正确率和模糊矩阵;

3.4.3 推荐算法

推荐算法使用item的RecommenderJob,设置参数,提交任务:
点击确定,成功提交任务后,可以查看监控:

3.5 帮助模块

在首页的右边,可以看到三个帮助页面,可以获取不同模块的帮助信息。

分享,成长,快乐

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

Mahout算法调用展示平台2.1相关推荐

  1. java调用Linux mahout,Mahout算法调用展示平台2.1

    问题导读 1.如何使用Web工程调用Mahout的相关算法? 2.Mahout的相关算法有哪些? 3.推荐算法使用item的什么? 软件版本: windows7: Tomcat7.JDK7.Sprin ...

  2. 淘宝天猫京东拼多多苏宁抖音等平台关键词监控价格API接口(店铺商品价格监控API接口调用展示)

    淘宝京东拼多多苏宁抖音等平台关键词监控价格API接口(店铺商品价格监控API接口调用展示)代码对接如下: 1.公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼 ...

  3. 电商平台关键词监控价格API接口,店铺监控API接口调用展示

    为了进行此平台API的调用,首先我们需要做下面几件事情. 1. 获取一个KEY. 2. 参考API文档里的接入方式和示例. 3.查看测试工具是否有需要的接口,响应实例的返回字段是否符合参数要求. 4. ...

  4. 淘宝天猫京东拼多多抖音苏宁1688等平台关键词监控价格API接口(店铺商品价格监控API接口调用展示)

    淘宝天猫京东拼多多抖音苏宁1688等平台关键词监控价格API接口(店铺商品价格监控API接口调用展示)代码对接如下: 1.公共参数 名称 类型 必须 描述 key String 是 调用key(必须以 ...

  5. 淘宝天猫京东拼多多抖音苏宁1688等平台商品详情调用(店铺商品价格监控API接口调用展示)

    淘宝天猫京东拼多多抖音苏宁1688等平台商品详情调用(店铺商品价格监控API接口调用展示)代码对接如下 商品详情调用: item_get-获得淘宝商品详情 测试 请求参数 请求参数:num_iid=5 ...

  6. 淘宝店铺商品接口 item_search_shop数据获取、拼多多关键词、1688原数据接口、淘宝商品详情sku信息等各大电商平台接口采集调用展示

    以下是标题API的返回值说明,由于篇幅有限只展示部分代码.更多API调用展示以及获取Key和secret请移步 {     "items": {         "pag ...

  7. 基于threejs的商品VR展示平台的设计与实现思路

    目录 基于threejs的商品VR展示平台的设计与实现思路 前言 总体开发方案设计 总体开发设计思维导图 模型制作模块 前端展示模块 存储模块 后端管理模块 后台管理实现 商品模型制作 商品模型前期准 ...

  8. java 调用python_Java平台如何调用Python平台?

    1. 问题描述 Java平台要调用Pyhon平台已有的算法,为了减少耦合度,采用Pyhon平台提供Restful 接口,Java平台负责来调用,采用Http+Json格式交互. 2. 解决方案 2.1 ...

  9. 1688API详情接口调用展示

    更多API调用展示以及获取Key和secret请移步 登录 - 跨境电商平台接口提供商 数据采集公司 数据接口定制服务 企业级数据服务商 {     "item": {       ...

最新文章

  1. IIS发布网页的基本操作
  2. Android BlueBorne (CVE-2017-0781)漏洞分析和利用
  3. 机器学习实战_09_树回归_源代码错误修正
  4. Tomcat启动失败错误解决Could not publish server configuration for Tomcat v8.0 Server at localhost....
  5. KVM安装、镜像创建(一)
  6. 《java设计模式》之责任链模式
  7. java各种集合的线程安全
  8. Redis精进:List的使用和应用场景
  9. 开课吧课堂之如何创建自己的异常子类
  10. 数字化转型之道:谈谈企业如何落地数据治理
  11. STM32 PWM输出
  12. 投稿动态无法删除的情况下,如何批量删除B站动态?
  13. 出大事了,涛哥你们Java应用GC后不释放内存
  14. Jenkins未授权访问
  15. 基于深度学习的图像隐写分析综述 阅读
  16. 学渣的刷题之旅 leetcode刷题 88. 合并两个有序数组
  17. wireshark Fiddler抓包分析与解密https Fiddler修改https请求和响应
  18. 技术人员如何创业《四》—— 打造超强执行力团队
  19. 第六章 Arm 微架构「System」
  20. cprogram作业

热门文章

  1. Github 上传代码指南(令牌token版)
  2. : cannot connect to X server
  3. python3 爬虫实战 :用 Appium 抓取手机 app 的 数据
  4. 抖音一个老人和一个机器人歌曲_抖音一念成佛一念成魔是谁的歌 摩登兄弟宁哥翻唱过的歌...
  5. JupyterHub on K8S私有化部署
  6. C++复习day1:知识点概述(依据C++premier plus)
  7. Excel 黏贴逗号分隔的文本到
  8. 培养人脉的100个技
  9. 礼物-天猫Tmall.com
  10. 我的世界服务器自定义武器插件,[RPG]SV-Equipment —— VV装备栏,拓展你的自定义装备![1.9-1.13]...