`
cloudtech
  • 浏览: 4611583 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

mahout中phase的含义

 
阅读更多

最近在做mahout源码调用的时候,发现一个参数:startPhaseendPhase,这两个参数是什么意思呢?比如运行RecommenderJob时,可以看到10MR任务,所以猜测是否是一个phase代表一个MR

带着这样的疑问进行了实验:

$HADOOP_HOME/bin/hadoopjarmahout-0.7/core/target/mahout-core-0.7-job.jarorg.apache.mahout.cf.taste.hadoop.item.RecommenderJob--inputinput/intro.csv--outputdate1129/cf00--tempDirdate1129/cftemp00--booleanDatafalse--similarityClassnameSIMILARITY_COOCCURRENCE--startPhase0--endPhase4

但是,实验结果却还是那样,仍然运行了10MR,然后就去google了,网上看到这个一个观点:ThefirstMRjobisindex0.SosettingstartPhase1willexecutethe2nd
jobonwards.PuttinginendPhase2wouldstopafterthe3rdjob.,来自http://lucene.472066.n3.nabble.com/RowSimilarity-startphase-and-endphase-parameters-td2119682.html。这个的意思其实就是说MRjobphase是同一个意思,但是我实验后却证明不是这样;

而且网上这个话题比较少涉及到,没办法只能看源码了。

mahout的源码可以看到基本的算法Job都继承来AbstractJob这个类,而AbstractJob这个类里面有一个shouldRunNextPhase方法,这个方法是和startPhaseendPhase这两个参数有关的,所以如果RecommenderJob里面有这个方法的话,那么应该就可以说startPhaseendPhase两个参数是有作用的;

我没有继续分析源码了,下面说下我的做法:我在AbstractJob这个类的shouldRunNextPhase里面加入了打印currentPhasestartPhase,endPhase以及这个方法返回的boolean值,不过这个如果在终端运行(也就是上面提及的在命令行运行)的话,是看不到打印的内容的。同时也可以不打印,而是选择用log,写入log,不过这个要去slave节点机才能看到,比较麻烦,所以就没有使用Log.

如何才能打印出结果呢?使用mvn编译mahout的源代码(修改过的),然后在$MAHOUT_SOUCE/core/targe里面有mahout-core-0.7-job.jar文件,把这个文件拷贝到eclipse,然后直接编写代码调用这个jar文件里面的RecommenderJob类就可以在Console里面看到我们打印的信息了,这样就可以看出来MRJobphase的区别了。

那么,phase的意义到底是什么呢?其实pahse的含义就是几个MR的一个集合,不定数目的MRjob视为一个phase。这个有什么好处呢?比如你运行RecommenderJob时前面的两个phase都运行成功了,但是后面的运行出错,那么是否要继续从第一个phase开始运行呢,其实完全没有必要,可以设置startPhaseendPhase这两个参数,直接跳过前面两个Phase

那么回到最开始的问题,为什么我设置了那两个参数,但是却没有作用呢?因为RecommenderJob只有四个phase,而我设置0-4超过了最大值3,所以所有的MRjob仍照常运行。




分享,成长,快乐




分享到:
评论

相关推荐

    mahout 简介,中文

    mahout 入门中文材料,是IBM文章汇总,值得一看

    mahout源码

    mahout,朴素贝叶斯分类,中文分词,mahout,朴素贝叶斯分类,中文分词,

    mahout api 学习资料

    mahout_help,mahout的java api帮助文档,可以帮你更轻松掌握mahout

    maven_mahout_template-mahout-0.8

    maven_mahout_template-mahout-0.8

    mahout in action中的源码

    该资源是mahout in action 中的源码,适用于自学,可在github下载:https://github.com/tdunning/MiA

    mahout贝叶斯算法拓展

    mahout中的贝叶斯算法的拓展开发包,提供了相关接口可以供用户调用,直接即可跑出结果,相关运行方式参考blog《mahout贝叶斯算法开发思路(拓展篇)》

    MAHOUT实战(中文版)

    MAHOUT实战 MAHOUT IN ACTION

    mahout-0.11.1 相关的jar

    mahout-examples-0.11.1 mahout-examples-0.11.1-job mahout-h2o_2.10-0.11.1 mahout-h2o_2.10-0.11.1-dependency-reduced mahout-hdfs-0.11.1 mahout-integration-0.11.1 mahout-math-0.11.1 mahout-math-0.11.1 ...

    mahout bayesian 算法数据流

    mahout中bayesian算法的数据流,可以根据excel中的公式来推断出该算法的数据流

    能找到的最全的 mahout in action中文版

    mahout in action 第一章 第二章 第三章第四章 第六章第七章 第九章

    mahout聚类算法

    mahout聚类算法的介绍,例如:Canopy,KMeans,Fuzzy-KMeans,Spectral Clustering等参数介绍和适用场景介绍

    mahout Algorithms源码分析

    mahoutAlgorithms源码分析 mahout代码解析

    Learning.Apache.Mahout.1783555211

    If you are a Java developer and want to use Mahout and Machine Learning to solve Big Data analytics use-cases then this book is for you. Familiarity with shell-scripts is assumed but no prior ...

    mahout-integration-0.7

    mahout-integration-0.7mahout-integration-0.7mahout-integration-0.7mahout-integration-0.7

    mahout1.0编译包

    mahout0.9不能运行在hadoop2中,会报interface错误,用此新编译后的包,可实现mahout+hadoop2的运行环境,其中包括编译后的包及源码。

    Mahout tutorial

    Mahout 官方文档,简单介绍Mahout概念及其安装和简单使用

    Mahout源码

    Mahout是一个Java的机器学习库。Mahout的完整源代码,基于maven,可以轻易导入工程中

    mahout所需jar包

    Mahout支持K-Means等聚类算法,在此zip包中已经有打好jar包的资源,不需要用户再打jar包,可以直接使用。

    基于Mahout的电影推荐系统

    这是这篇博文的工程代码,是MyEclipse的工程文件。...由于原工程开发的时候是在MyEclipse中引用mahout的jar包,所以这个压缩文件并没有相关的jar文件,故运行此项目之前需要做的事请,是需要导入mahout的开发包。

    Mahout0.8_API

    Mahout0.8_API 喜欢的人就请下载吧

Global site tag (gtag.js) - Google Analytics