Mahout下载与安装

1、下载Mahout。到地址[1]可以找到镜像地址。我们下载Mahout 0.5。请将mahout-distribution-0.5.tar.gz和mahout-distribution-0.5-src.zip都下载下来,前者是正式软件,后者是源文件,用于导入eclipse以便修改并重新编译所需要的包。

2、在/home/user(你自己的用户名)目录下创建一个名为mahout(或其他合法名字)的文件夹,这样,环境变量$MAHOUT_HOME的值为/home/user/mahout。将mahout-distribution-0.5.tar.gz解压并部署到其中。如果在Windows下操作,需要使用7-zip解压,WinRAR会有问题;解压后将全部文件上传到$MAHOUT_HOME目录下。

3、删掉mahout-core-0.5.jar和mahout-examples-0.5.jar两个包,否则会有类冲突。冲突的原因是,mahout将$MAHOUT_HOME目录下的所有jar都放到CLASSPATH中,而mahout-core-0.5.jar排在mahout-examples-0.5-job.jar前面(详见$MAHOUT_HOME/bin/mahout文件),并且包含类org.apache.mahout.driver.MahoutDriver,这样在任务执行时,提交给Hadoop的是mahout-core-0.5.jar,而不是mahout-examples-0.5-job.jar。mahout-core-0.5.jar缺少一些类(比如,Vector类),运行时会报错。

4、在/home/user/.profile(.bash_profile)或.cshrc(.bashrc)中设置环境变量:
export MAHOUT_HOME=/home/user/mahout
同时要确保环境中已经有HADOOP_HOME和HADOOP_CONF_DIR两个变量。

5、打开$MAHOUT_HOME/bin/mahout,找到这一行:
MAHOUT_CONF_DIR=$MAHOUT_HOME/src/conf
修改为:
MAHOUT_CONF_DIR=$MAHOUT_HOME/conf
因为mahout发行版中根本没有src这个文件夹。

6、给mahout赋予可执行权限

到$MAHOUT_HOME/bin/文件夹下,执行

chmod a+x mahout

搭建eclipse下mahout重编译环境

1、请先确认eclipse中已经安装了Maven插件。(如果没有,可以通过Help--Eclipse Marketplace在线安装Maven Integration for Eclipse)。

2、解压mahout-distribution-0.5-src.zip到eclipse的workspace(同样的,用WinRAR可能解压不了,请使用7-Zip)。

3、导入mahout源文件。
打开eclipse,选择File-Import-Maven-Existing Maven Projects,点击next


选择路径,点击next



下一步,出现这个错误怎么办?


网上搜到这么一个答案:
You cannot fix them except for commenting out the sections of the two pom.xml files which complain. This is a bad idea, because then Mahout will not build and install into your local Maven repository
cache ($HOME/.m2).



The only problem this causes is that if you have another project outside Mahout and you make it depend on one of these project, that project will not get built. This is all I've come across. So: just ignore it. Or report it to m2e.

忽略这个错误吧。


4、消灭小红叉。
导入后,会有三个文件夹出现红叉



接下来我们来解决这些小红叉。

打开项目文件夹,发现小红叉来源于pom.xml这个文件。



在mahout-core中,错误信息是:
Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-antrun-plugin:1.6:run (execution: default, phase: compile)
解决的方法是,在</build>标签前面添加下面一段代码:
<pluginManagement>

      <plugins >

        <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build

          itself. -->

        <plugin >

          <groupId >org.eclipse.m2e </groupId >

          <artifactId >lifecycle-mapping </artifactId >

          <version >1.0.0 </version >

          <configuration >

            <lifecycleMappingMetadata >

              <pluginExecutions >

                <pluginExecution >

                  <pluginExecutionFilter >

                    <groupId >org.apache.maven.plugins </groupId >

                    <artifactId >maven-antrun-plugin </artifactId >

                    <versionRange >[1.6,) </versionRange >

                    <goals >

                      <goal >run </goal >

                    </goals >

                  </pluginExecutionFilter >

                  <action >

                    <ignore />

                  </action >

                </pluginExecution >

              </pluginExecutions >

            </lifecycleMappingMetadata >

          </configuration >

        </plugin >

      </plugins >

    </pluginManagement >

而在mahout-examples和mahout-utils中,错误信息都是:
maven-dependency-plugin (goals "copy-dependencies", "unpack") is not supported by m2e.

解决的方法是,在</build>标签前添加如下内容 :
<pluginManagement>

     <plugins>

          <!-- Ignore/Execute plugin execution -->

          <plugin>

               <groupId>org.eclipse.m2e</groupId>

               <artifactId>lifecycle-mapping</artifactId>

               <version>1.0.0</version>

               <configuration>

                    <lifecycleMappingMetadata>

                         <pluginExecutions>

                              <!-- copy-dependency plugin -->

                              <pluginExecution>

                                   <pluginExecutionFilter>

                                        <groupId>org.apache.maven.plugins</groupId>

                                        <artifactId>maven-dependency-plugin</artifactId>

                                        <versionRange>[1.0.0,)</versionRange>

                                        <goals>

                                             <goal>copy-dependencies</goal>

                                        </goals>

                                   </pluginExecutionFilter>

                                   <action>

                                        <ignore />

                                   </action>

                              </pluginExecution>

                         </pluginExecutions>

                    </lifecycleMappingMetadata>

               </configuration>

          </plugin>

     </plugins>

</pluginManagement>

请特别注意版本信息,要与maven的版本相匹配。完事后主文件夹依然有小红叉,但里面的文件都已正常,可以运行了。


Mahout重编译

如果我们要编译整个Mahout,在Mahout5项目下,右键单击pom.xml文件,选择“Run as”--"Maven build..."在Goals栏目中填上“clean package”,勾选“Skip Tests”,点击“Run”,即开始构建。

一般来说,我们经常要修改的是mahout-core-0.5-job.jar和mahout-examples-0.5-job.jar两个包
编译完成后,到workspace/Mahout5/core/target下可以找到mahout-core-0.5-job.jar;到workspace/Mahout5/examples/target下可以找到mahout-examples-0.5-job.jar


Mahout入口

首先抛出疑问:执行“mahout kmeans --help”命令之后发生了什么呢?

Mahout的入口是在$MAHOUT_HOME/bin/mahout文件,它是一个shell,主要用于设置环境变量,以及启动任务。文件里面设定的环境变量有:
MAHOUT_JAVA_HOME:指定java的执行路径,会覆盖$JAVA_HOME。

MAHOUT_HEAPSIZE:Java运行堆栈的内存大小,单位为MB。

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

MAHOUT_OPTS:mahout运行时的java参数

MAHOUT_CONF_DIR:类文件属性文件所在文件,文件名是类名简写,默认位置

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

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

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



经过一系列变量定义、参数解析后,mahout通过以下命令开始执行任务:
exec "$HADOOP_HOME/bin/hadoop" jar $MAHOUT_JOB $CLASS "$@"
其中,
$MAHOUT_JOB是mahout-examples-0.5-job.jar包

$CLASS是org.apache.mahout.driver.MahoutDriver

$@所有参数的集合

任务的类入口org.apache.mahout.driver.MahoutDriver,在mahout-core包中
经过一系列处理后,mahout会加载$MAHOUT_HOME/conf/driver.classes.props文件,如果没有driver.classes.props这个文件,那就会加载driver.classes.default.props,这个文件在每个jar包中都有,想知道这个文件的内容,可以直接将mahout-examples-0.5-job.jar拖到WinRAR中,就能看到这个了。这个文件定义了当执行某个命令时,mahout会调用哪个类。比如我们执行mahout
kmeans时,会调用org.apache.mahout.clustering.kmeans.KMeansDriver这个类。

(2013-08-02更新:直接用mahout 0.8吧,传上去就可用,暂没发现bug,少了许多屁事!)

Mahout 0.5部署的更多相关文章

  1. zabbix3.0安装部署文档

    zabbix v3.0安装部署 摘要: 本文的安装过程摘自http://www.ttlsa.com/以及http://b.lifec-inc.com ,和站长凉白开的<ZABBIX从入门到精通v ...

  2. Hadoop 2.6.0分布式部署參考手冊

    Hadoop 2.6.0分布式部署參考手冊 关于本參考手冊的word文档.能够到例如以下地址下载:http://download.csdn.net/detail/u012875880/8291493 ...

  3. 基于LNMP的Zabbix4.0.1部署

     转:http://www.safecdn.cn/monitor/2018/12/lnmp-zabbix4-0-1-install/306.htmlZabbix4.0.1部署   一 安装源和Zabb ...

  4. CentOS7+ApacheServer2.4+MariaDB10.0+PHP7.0+禅道项目管理软件8.0环境部署

    CentOS7+ApacheServer2.4+MariaDB10.0+PHP7.0+禅道项目管理软件8.0环境部署 by:授客 QQ:1033553122 目录 一. 二. 三. 四. 五. 六. ...

  5. [转帖]VMware Vsphere 6.0安装部署 (三) vCenter Server安装

    VMware Vsphere 6.0安装部署 (三) vCenter Server安装 2016年08月29日 14:59:14 dAng1r0Us 阅读数:72942   版权声明:本文为博主原创文 ...

  6. zabbix v3.0安装部署

    这篇文章没有写明init的部分要注意 zabbix v3.0安装部署 摘要: 本文的安装过程摘自http://www.ttlsa.com/以及http://b.lifec-inc.com ,和站长凉白 ...

  7. Elasticsearch学习之ElasticSearch 5.0.0 安装部署常见错误或问题

    ElasticSearch 5.0.0 安装部署常见错误或问题 问题一: [--06T16::,][WARN ][o.e.b.JNANatives ] unable to install syscal ...

  8. 润乾在东方通tongweb5.0上部署手册

     作为国内领先的中间件开发商,东方通是国内最早研究J2EE技术和开发应用服务器产品的厂商.应用服务器TongWeb的开发目标,是利用公司在中间件 领域的技术优势,实现符合J2EE规范的企业应用支撑 ...

  9. IIS 6.0上部署ASP.NET MVC2.0

    在IIS7.5及8.0上部署都没有成功,对于身份验证会出现问题,据说是要安装什么东西,在这里说下IIS6.0的配置吧,下面是使用.net 4.0,自己可以选择所需的版本. 再此之前先确定web是用到了 ...

随机推荐

  1. 【JavaScript 3—基础知识点】:运算符

    导读:其实看到这个运算符的学习,很有一种熟悉感,因为在总体看来,和之前的C++有很多类似的地方,但当时觉得简单,没有总结.所以,这次一定得总结了.其实,知识的罗列,基础的积累,在学习中也很重要. 一. ...

  2. 九度oj 题目1208:10进制 VS 2进制

    题目描述: 对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们乘B为A的二进制逆序数.    例如对于十进制数173,它的二进制形式为10101101,逆序排列得到10 ...

  3. iRule Event Order - HTTPSv7

    v

  4. MapReduce和Hadoop流

    MapReduce:分布式计算的框架 MapReduce是一个软件框架,可以将单个计算作业分配给多台计算机执行. MapReduce在大量节点组成的集群上运行.它的工作流程是:单个作业被分成很多小份, ...

  5. BZOJ 2140 稳定婚姻 ——二分图

    论二分图的可行边与必须边. 考虑用dinic增广之后的图,一些是必要的割边,一些是可行的割边. 我们首先求出一组可行的最大匹配,那么这些变都是可行的. 然后我们求一遍强连通分量. 如果 scc[u]! ...

  6. 刷题总结——竞赛得分(ssoj)

    题目: 题目描述 ZZH 在经历了无数次学科竞赛的失败以后,得到了一个真理:做一题就要对一题!但是要完全正确地做对一题是要花很多时间(包括调试时间),而竞赛的时间有限.所以开始做题之前最好先认真审题, ...

  7. LVM 类型的 Storage Pool

    LVM 类型的 Storage Pool 不仅一个文件可以分配给客户机作为虚拟磁盘,宿主机上 VG 中的 LV 也可以作为虚拟磁盘分配给虚拟机使用. 不过,LV 由于没有磁盘的 MBR 引导记录,不能 ...

  8. 16.1113 模拟考试T3

    城堡[问题描述]给定一张N个点M条边的无向连通图,每条边有边权.我们需要从M条边中选出N − 1条, 构成一棵树. 记原图中从 1 号点到每个节点的最短路径长度为?Di ,树中从 1 号点到每个节点的 ...

  9. Java Interface 是常量存放的最佳地点吗?(转帖学习,非原创)

    Java Interface 是常量存放的最佳地点吗?(转帖学习,非原创) 由于java interface中声明的字段在编译时会自动加上static final的修饰符,即声明为常量.因而inter ...

  10. 如何用Eclipse将普通的JavaWeb项目转为Maven项目

    最新自己的第一个项目差不多稳定运行之后 想着将项目转为Maven项目.于是参考网上成功的将自己的普通的项目转为了maven项目,现在记录一下: 0.普通的java项目的结构如下: 1.接下来开始进行正 ...