mahout调用流程分析

mahout 位于$MAHOUT_HOME/bin目录下,是所有mahout调用的入口。

主要会做各类环境变量的设置。

MAHOUT_JAVA_HOME:指定java的执行路劲,会覆盖$JAVA_HOME

MAHOUT_HEAPSIZE   :JAVA运行堆栈的内存大小

HADOOP_CONF_DIR  : hadoop 配置文件路径主要是*-site.xml这些文件的位置

MAHOUT_OPTS           : mahout运行时的java参数

MAHOUT_CONF_DIR    :类文件属性文件所在文件,文件名是类名简写,默认位置$MAHOUT_HOME/src/conf

MAHOUT_LOCAL         : 设置是否本地运行,如果设置这个参数就不会运行hadoop了,一旦设置这个参数,那HADOOP_CONF_DIR HADOOP_HOME 这两个参数的设置就自动失效了。

MAHOUT_CORE          :是否应用开发环境的core,还是发布的core

 

参数-core                  指定引用包的路径

 

 

  • 案例调用流程

要运行example的时候,最终的触发语句如下:

exec"$HADOOP_BINARY" jar $MAHOUT_JOB $CLASS "$@"

1$HADOOP_BINARY 就是hadoop的执行文件

2$MAHOUT_JOB:  就是mahout-examples-*-job.jar 所在位置

3$CLASS   :      是默认的 org.apache.mahout.driver.MahoutDriver

4$@           :      就是要调用的class名字,比如org.apache.mahout.clustering.syntheticcontrol.kmeans.Job

 

三、对org.apache.mahout.driver.MahoutDriver

  1. 加载mapping文件:

              加载driver.classes.props 文件,此文件要路径应保存在classpath路径上。

       此属性文件的内容,主要是一个全名称的class名与简写class名的映射关键,并且还有class注释说明。模板fully.qualified.class.name =shortJobName : descriptive string

比如:    org.apache.mahout.utils.vectors.VectorDumper= vectordump : Dump vectors from a sequence file to text

上面这个映射关系是从driver.classes.default.props文件找到的。

MahoutDriver会先加载driver.classes.props,如果没有driver.classes.props这个文件。那就会加载driver.classes.default.props

 

  1. 加载类默认指定props文件:

文件名是<shortJobName>.props,具体类的属性或参数文件。格式如下

 i|input =/path/to/my/input

  o|output = /path/to/my/output

  m|jarFile = /path/to/jarFile

  # etc -each line is shortArg|longArg = value

 

  1. 剩余参数解析

剩余参数可以是在mapping文件中定义过的shortJobName,已经shortJobName类需要用到的参数,从命令行传入的参数会覆盖shortJobName.props中定义的参数。

如果在要运行vecDump这个类

  1. mapping文件中定义也就是driver.classes.props 或者driver.classes.default.props文件中定义:

org.apache.mahout.utils.vectors.VectorDumper= vecDump : dump vectors from a sequence file

全名称类名    = 缩写类名称功能描述

       

  1. 定义vecdump.props文件

o|output = /tmp/vectorOut

s|seqFile = /my/vector/sequenceFile

 

  1. 运行指令

$MAHOUT_HOME/bin/mahoutrun vecDump -s /my/otherVector/sequenceFile

在命令行中的参数–s 会覆盖vecdump.props中的定义的s参数

 

最终的执行指令参数为

{"--output","/tmp/vectorOut", "-s","/my/otherVector/sequenceFile"}

 

  1. 如果还有其他参数需要传入的话,就用-Dkey=value的形式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值