Mahout算法调用展示平台2.1
软件版本号:
windows7: Tomcat7、JDK7、Spring4.0.2、Struts2.3、Hibernate4.3、myeclipse10.0、easyui;Linux(centos6.5):Hadoop2.4、Mahout1.0、JDK7;
使用Webproject调用Mahout的相关算法,提供监控。查看任务的执行状态。
自建Web项目。项目首页例如以下:
1. 准备
[root@node33 data]# jps
6033 NodeManager
5543 NameNode
5629 DataNode
5942 ResourceManager
41611 Jps
5800 SecondaryNameNode
6412 JobHistoryServer
1.1 Hadoop包
<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的路径是集群的对应路径。
1.2 Mahout包
mvn -Dhadoop2.version=2.4.1 -DskipTests clean install
)导入的包有:
2.配置
2.1 Hadoop相关配置
2.2 数据库相关配置
2.3 Tomcat部署
<Context
path ="/mh" docBase ="D:\workspase\hadoop_hbase\MahoutAlgorithmPlatform2.1\WebRoot"
privileged ="true" reloadable ="false" >
</Context>
项目部署名使用mn。
3. 功能
3.1 集群配置模块
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;
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmFuc3kxOTkw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
3.2集群算法监控模块
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 bug
log.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模块
3.3.1 上传、下载
界面仅仅有两个參数:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmFuc3kxOTkw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
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();
}
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmFuc3kxOTkw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
3.3.3文本转换为序列向量
需设置文本分隔符:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmFuc3kxOTkw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
3.4 Mahout模块
3.4.1 聚类算法
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmFuc3kxOTkw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" width="750" alt="" />
3.4.2 分类算法
3.4.3 推荐算法
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmFuc3kxOTkw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
3.5 帮助模块
分享,成长,快乐
转载请注明blog地址:http://blog.csdn.net/fansy1990
Mahout算法调用展示平台2.1的更多相关文章
- mahout算法源码分析之Collaborative Filtering with ALS-WR (四)评价和推荐
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 首先来总结一下 mahout算法源码分析之Collaborative Filtering with AL ...
- mahout算法源码分析之Collaborative Filtering with ALS-WR拓展篇
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 额,好吧,心头的一块石头总算是放下了.关于Collaborative Filtering with AL ...
- mahout算法源码分析之Collaborative Filtering with ALS-WR 并行思路
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. mahout算法源码分析之Collaborative Filtering with ALS-WR 这个算 ...
- libgdx如何调用android平台内容
使用libgdx已经有一段时间了.最近经常有朋友问我如何在libgdx中调用android的内容. 正常来说libgdx是跨平台的,gdx中的代码是不允许有任何其他平台的相关代码,但实际使用时经常会有 ...
- mahout算法库(四)
mahout算法库 分为三大块 1.聚类算法 2.协同过滤算法(一般用于推荐) 协同过滤算法也可以称为推荐算法!!! 3.分类算法 算法类 算法名 中文名 分类算法 Log ...
- prometheus学习系列八: Prometheus Grafana展示平台
在prometheus中,我们可以使用web页面进行数据的查询和展示, 不过展示效果不太理想,这里使用一款专业的展示平台进行展示. grafana安装 # 下载wget https://dl.graf ...
- mahout算法源码分析之Itembased Collaborative Filtering(四)共生矩阵乘法
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 经过了SimilarityJob的计算共生矩阵后,就可以开始下面一个过程了,这个过程主要是共生矩阵的乘法 ...
- mahout算法源码分析之Itembased Collaborative Filtering(二)RowSimilarityJob
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 本篇开始之前先来验证前篇blog的分析结果,编写下面的测试文件来进行对上篇三个job的输出进行读取: p ...
- mahout算法源码分析之Itembased Collaborative Filtering(三)RowSimilarityJob验证
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 本篇分析上篇的分析是否正确,主要是编写上篇输出文件的读取以及添加log信息打印相关变量. 首先,编写下面 ...
随机推荐
- UNIX环境高级编程--8. 进程控制
进程控制进程标识: 每一个进程都有一个非负整型表示的唯一进程ID.虽然唯一,但是ID可以复用.当一个进程结束后,其进程ID会被延迟复用. ID=0的进程通常是调度进程,常被称作交换进程(s ...
- html中保证中文能够正常显示
<meta http-equiv="Content-Type" content="text/html"; charset=utf-8"/> ...
- 实现X*N
#include<iostream> using namespace std; double foo(int n,double x) { if(1==n) { return x; } el ...
- Angular——内置指令
内置指令 ng-app 指定应用根元素,至少有一个元素指定了此属性. ng-controller 指定控制器 ng-show控制元素是否显示,true显示.false不显示 ng-hide控制元素是否 ...
- Cuder - 用C++11封装的CUDA类
以前写cuda:初始化环境,申请显存,初始化显存,launch kernel,拷贝数据,释放显存.一个页面大部分都是这些繁杂但又必须的操作,有时还会忘掉释放部分显存. 今天用C++11封装了这些CUD ...
- 实验2 C++数组与指针
一.实验目的: 掌握一维数组和二维数组的定义.赋值和输入输出的方法. 掌握字符数组和字符串函数的使用. 通过实验进一步掌握指针的概念,会定义和使用指针变量. 能正确使用数组的指针和指向数组的指针变量. ...
- 使用码云gitee.com托管代码
1.新建项目 可以看到团队资源管理器是这样的,已经在本地有存储库,所有更改可以保存本地 2.在码云上新建项目 项目名称必填,其它项根据情况填写 3.复制项目地址关联到本地存储库 填写码云的项目地址,发 ...
- 配置tfs2017的agent
tfs支持四种验证方式,分别是:PAT.Negotiate.Integrated.Alternate 我们使用Negotiate方式 首先,登录tfs服务器,设置iis的身份验证 添加一个Negot ...
- MySQL操作数据库和表的基本语句(DDL
1.创建数据库: CREATE DATABASE 数据库名; eg.CREATE DATABASE test_ddl;122.创建表 CREATE TABLE 表名(列名 数据类型 约束,...); ...
- 基于fpga uart学习笔记
2018年7月24日 uart 接收 部分测试成功,多谢开源骚客 邓堪文老师 ,想学的同学可以微信公众号搜索开源骚客 好啦!言归正传. 1.先附上老师的时序图,自己有点懒不想画,rx_t.rx_tt. ...