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. ASP.NET上传大文件404报错

    报错信息: Failed to load resource: the server responded with a status of 404 (Not Found) 尝试1: 仅修改Web.con ...

  2. yum update 出错解决办法

    卸载掉yum和python 于是我卸载了python和yum,觉得自己重新安装python和yum. 步骤1:卸载python rpm -qa|grep python|xargs rpm -e --a ...

  3. Spoj-BOKAM143SOU Checking cubes.

    Given a integer N. Find number of possible ways to represent N as a sum of at most five cubes. Input ...

  4. Python脚本实现单据体背景色及字段前景色设置

    #PythonEntitySetColor clr.AddReference('Kingdee.BOS.Core') from Kingdee.BOS.Core.DynamicForm.PlugIn. ...

  5. 洛谷 [P3480] KAM-Pebbles

    博弈论转化 本题的限制条件很多,我们尝试转化, 我们发现,定义 c[i] 为第 i 堆可以取得数量,如果第 i 堆取出了 x ,那么 c[i] - x , c[i + 1] + x 我们发现这是一个反 ...

  6. 洛谷P3393 逃离僵尸岛

    题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被僵尸控制了,如果贸然闯入 ...

  7. Python练习题–持续更新

    1.你是一个高级测试工程师,现在要做性能测试,需要你写一个函数,批量生成一些注册使用的账号. 产生的账号是以@163.com结尾,长度由用户输入,产生多少条也由用户输入,用户名不能重复,用户名必须由大 ...

  8. Python3:urllib模块的使用

    Python3:urllib模块的使用1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=N ...

  9. Codeforces Gym 100418K Cards 组合数学

    CardsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action? ...

  10. mysql中进行删除操作时用到not in 导致删除不成功

    delete from tb_news where id not in ( select max(id) From tb_news Group By title ) 刚开始用这条语句删除一直不成功 然 ...