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. POJ-2594 Treasure Exploration,floyd+最小路径覆盖!

                                                 Treasure Exploration 复见此题,时隔久远,已忘,悲矣! 题意:用最少的机器人沿单向边走完( ...

  2. POJ 2092 Grandpa is Famous

    Grandpa is Famous Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 7153   Accepted: 3624 ...

  3. RocketMQ VS kafka

    转自:https://github.com/alibaba/RocketMQ/wiki/rmq_vs_kafka 淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用MySQL作为消息存 ...

  4. 【kmp或扩展kmp】HDU 6153 A Secret

    acm.hdu.edu.cn/showproblem.php?pid=6153 [题意] 给定字符串A和B,求B的所有后缀在A中出现次数与其长度的乘积之和 A和B的长度最大为1e6 方法一:扩展kmp ...

  5. concurrentHashMap面试题

    面试题: ConcurrentHashMap有哪些构造函数? ConcurrentHashMap使用什么技术来保证线程安全? ConcurrentHashMap的get方法是否要加锁,为什么? Con ...

  6. 转:C++ Vector用法深入剖析

    http://developer.51cto.com/art/201002/183645.htm C++编程语言中有一种叫做Vector的应用方法,它的作用在实际编程中是非常重要的.在这里我们将会为大 ...

  7. OsCache MemCached EhCache

    Memcache:分布式内存对象缓存系统,占用其他机子的内存.很多互联网,负载均衡三台(以三台为例)web服务器可以共享一台Memcache的资源.传递的信息以键值对的形式存储.传递的数据要实现序列化 ...

  8. SHUoj 神无月排位赛

    神无月排位赛 发布时间: 2017年7月8日 21:06   最后更新: 2017年7月8日 22:35   时间限制: 1000ms   内存限制: 128M 描述 <神无月>作为盛大游 ...

  9. linux下将目录授权给其他用户的步骤

    1.更改目录所有者命令:chown -R 用户名称 目录名称2.更改目录权限命令:chmod -R 755 目录名称

  10. [NOIP2012T3]开车旅行

    题目描述 NOIP 2012 提高组 题3小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 ...