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. Terracotta

    Terracotta 3.2.1简介 (一) 博客分类: 企业应用面临的问题 Java&Socket 开源组件的应用 hibernatejava集群服务器EhcacheQuartzTerrac ...

  2. 好未来谢华亮:AI 在教育行业中的应用

    11 月 23 日,在以「AI 产业技术的渗透与融合」为主题的 NIUDAY 北京站中,好未来 SEG 智慧教育事业部技术总监谢华亮为大家带来了关于「AI 在教育行业中的应用」的分享. 本文是对分享内 ...

  3. 【Luogu】P2759奇怪的函数(二分)

    题目链接 看了题解之后突然发现这题简直是水题.然而不看题解就想不出来.为什么呢? len(x)=log10(x)+1 于是二分寻找x. #include<iostream> #includ ...

  4. 【Luogu】P1352没有上司的舞会(树形DP)

    题目链接 设f[i][0]表示第i个人不去舞会时子树的最大欢乐度,f[i][1]表示第i个人去舞会时子树的最大欢乐度. 则有状态转移方程:f[i][0]+=∑max(f[to][0],f[to][1] ...

  5. [luoguP2219] [HAOI2007]修筑绿化带(单调队列)

    传送门 需要n*m的算法,考虑单调队列 可以预处理出来 a[i][j]表示以i,j为右下角的绿化带+花坛的和 b[i][j]表示以i,j为右下角的花坛的和 那么我们可以单调队列跑出来在A-C-1,B- ...

  6. ORACLE无法删除当前连接用户

    今天在做Oracle数据库是遇到ORACLE无法删除当前连接用户 ,经查找可用如下方法解决 . 在Oracle中删除用户时提示:ORACLE无法删除当前连接用户  可以用以下语句    Sql代码   ...

  7. 【NOI2012】骑行川藏

    获得成就:第一次在信竞做神仙数学题 先放个前言,$OI$ 出大型数学题还是比较麻烦的,因为主要是考你数学推导 / 手算式子,你算出来之后把公式套个板子,就得到结论——$OI$ 的大型数学题的代码都是板 ...

  8. bzoj2120 数颜色 莫队 带修改

    [bzoj2120]数颜色 Description 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔 ...

  9. 把项目变成intellij idea和eclipse项目

    就通过maven把它build成一个IDE项目,执行以下命令,打开CMD: $ cd 项目名 $ mvn eclipse:eclipse or mvn idea:idea

  10. 转载 cc、gcc、g++、CC的区别概括

    gcc是C编译器:g++是C++编译器:linux下cc一般是一个符号连接,指向gcc:gcc和g++都是GUN(组织)的编译器.而CC则一般是makefile里面的一个名字,即宏定义,嘿,因为Lin ...