mahout是hadoop的一种高级应用。运行mahout需要提前安装好hadoop。hadoop的安装网上很多。而且也不复杂,这里不再讲述。这里默认hadoop已经安装完成。

1:下载二进制解压安装。

到http://labs.renren.com/apache-mirror/mahout/0.5/ 下载,我选择下载二进制包,直接解压及可。

2:配置环境变量:HADOOP_HOME,HADOOP_CONF_DIR,MAHOUT_HOME,格式如下

export HADOOP_HOME=/usr/local/hadoop-0.20.205.0

export HADOOP_CONF_DIR=/usr/local/hadoop-0.20.205.0/conf

export MAHOUT_HOME=/usr/local/mahout-distribution-0.5

export PATH=$HADOOP_HOME/bin:$MAHOUT_HOME/bin:$PATH

3:(注意)

网上都说运行bin/mahout --help来查看一些算法以及是否安装成功,这其实是有问题的。bin/mahout --help有bug,有时候运行会提示Unknown program '--help' chosen.这其实并不代表安装出了问题。

你可以继续试下bin/mahout -h或者bin/mahout kmeans --help.应该说如果配置没有问题的话bin/mahout kmeans --help应该是可以正常运行的。

4:准备

  1.下载一个文件synthetic_control.data,下载地址http://archive.ics.uci.edu/ml/databases/synthetic_control/synthetic_control.data,并把这个文件放在$MAHOUT_HOME目录下。

  2.启动Hadoop:$HADOOP_HOME/bin/start-all.sh

  3.在$MAHOUT_HOME目录下创建测试目录testdata,并把数据导入到这个tastdata目录中(这里的目录的名字只能是testdata)

    $HADOOP_HOME/bin/hadoop fs -mkdir testdata

    $HADOOP_HOME/bin/hadoop fs -put  $MAHOUT_HOME/synthetic_control.data $MAHOUT_HOME/testdata

  4.使用kmeans算法(这会运行1分钟左右)

    $HADOOP_HOME/bin/hadoop jar $MAHOUT_HOME/mahout-examples-0.5-job.jar org.apache.mahout.clustering.syntheticcontrol.kmeans.Job

  5.查看结果

    $HADOOP_HOME/bin/hadoop fs -lsr output

    $HADOOP_HOME/bin/hadoop fs -get output $MAHOUT_HOME/examples

    $cd $MAHOUT_HOME/examples/output

    $ ls

    如果看到以下结果那么算法运行成功,你的安装也就成功了.

    clusteredPoints  clusters-0  clusters-1  clusters-10  clusters-2  clusters-3  clusters-4

    clusters-5  clusters-6  clusters-7  clusters-8  clusters-9  data

6,

clusteredPoints:存放的是最后聚类的结果,将cluster-id和documents-id都展示出来了,用mahout seqdumper读clusteredPoints结果的key-value类型是(IntWritable,WeightedVectorWritable)

clusters-N:是第N次聚类的结果,其中n为某类的样本数目,c为各类各属性的中心,r为各类属性的半径。 clusters-N结果类型是(Text,Cluster)

data:存放的是原始数据,这个文件夹下的文件可以用mahout vectordump来读取,原始数据是向量形式的,其它的都只能用mahout seqdumper来读取,向量文件也可以用mahout seqdumper来读取,只是用vectordump读取出来的是数字结果,没有对应的key,用seqdumper读出来的可以看到key,即对应的url,而value读出来的是一个类描述,而不是数组向量

bin/mahout seqdumper --input  /user/hadoop/output/data/part-m-00000 --output test.txt(此处Input必须为filesystem上的目录)

mahout中的kmeans结果分析

运行官网上的mahout kmeas示例,结果文件夹有clusteredPoints,clusters-N,data,用命令mahout seqdumper仔细看了一下结果文件

clusteredPoints:存放的是最后聚类的结果,将cluster-id和documents-id都展示出来了,用mahout seqdumper读clusteredPoints结果的key-value类型是(IntWritable,WeightedVectorWritable)

clusters-N:是第N次聚类的结果,其中n为某类的样本数目,c为各类各属性的中心,r为各类属性的半径。 clusters-N结果类型是(Text,Cluster)

data:存放的是原始数据,这个文件夹下的文件可以用mahout vectordump来读取,原始数据是向量形式的,其它的都只能用mahout seqdumper来读取,向量文件也可以用mahout seqdumper来读取,只是用vectordump读取出来的是数字结果,没有对应的key,用seqdumper读出来的可以看到key,即对应的url,而value读出来的是一个类描述,而不是数组向量

为什么mahout seqdumper可以读任何SequenceFiles文件呢?看了一下源文件,是因为用的reader.getValueClass().newInstance()去读取的

clusters-0:读出来的结果(key,value)类型是(Text,Canopy),我猜应该是随机从原始数据里取出五个点来做初始聚类中心点,看到里面有RandomAccessSparseVector类,而后成的clusters-N读出来的(key,value)都是(Text,Cluster)类型,查了一下Canopy,说Canopy 聚类算法经常用于 K 均值聚类算法的预处理,用来找合适的 k 值和簇中心。

bin/mahout clusterdump --seqFileDir output/clusters-10 --pointsDir output/clusteredPoints --output /home/test/output
这个命令会将每一类的点列出来,seqFileDir指向的目录存放的是某类有几个点和该类的质心点及半径,即clusters-N目录,pointsDir指向的是所有输入点归于哪一类,即clusteredPoints目录,两者联合起来,就可以列举出属于同一类的所有点

注意seqFileDir指向的目录,要是最后一次迭代的结果目录,最后一次迭代的结果才是最终的结果

mahout Kmeans聚类有两个重要参数:收敛Delta和最大迭代次数.所以有时候改敛时,并还没有达到最大迭代次数

关于mahout命令的运行的几点说明

1.如果没设置HADOOP_HOME,mahout seqdumper的输入路径是本地的目录,而不是HDFS上的目录,如果要查看HDFS上的结果,需要先将文件从HDFS上拷下来,当设置了HADOOP_HOME后,用seqdumper去查看结果时,输入路径则是HDFS上的目录。

2.读写路径跟源文件中是不是用到hadoop的FileSystem类无关,前面一直理解错了,以为用到这个类,就认为一定是在HDFS上操作,自己写了一个简单的SequenceFile文件读写测试,发现刚开始run as->java application,读写操作是操作的本地目录,如果run as->run on hadoop,则读写操作就在HDFS上,将hadoop停掉后,此时在去run as->java application,一直会提示连接不到hdfs,难道一次操作在hdfs上后,后面不管是run as->java application,还是run as->run on hadoop,都必须是在hdsf上吗?有知道原因的大侠,还请赐教!hadoop在启动过后,需要等一段时间,因为还在安全模式下,此时不能在hdfs上创建文件

3.将(Text,ParseText)->(Text,Text),这样才能用seq2sparse将文本转成向量,如果不这样的话,必须自己将文本信息用tfidf算法转成对应的数组,然后再由

RandomAccessSparseVector类或DenseVector类包装成向量,因为现有的算法中,还没有直接处理文本的,全都要转成数字来度量特征,然后根据某种条件收敛,从这里也可以看出计算机对数学的依赖有多大了,自然语言是不好处理的。

mahout安装的更多相关文章

  1. mahout 安装测试

    1 下载 在http://archive.apache.org/dist/mahout下载相应版本的mahout 版本,获取官网查看http://mahout.apache.org 相关的信息

  2. Mahout安装部署

    0x01 简介 Mahout 是一套具有可扩充能力的机器学习类库.它提供机器学习框架的同时,还实现了一些可扩展的机器学习领域经典算法的实现,可以帮助开发人员更加方便快捷地创建智能应用程序.通过和 Ap ...

  3. Mahout 安装配置

    http://log.medcl.net/item/2011/02/mahout_install/ Apache Mahout是一个机器学习的框架,构建在hadoop上支持大规模数据集的处理,目前最新 ...

  4. Mahout安装与配置

    一.安装mahout 1.下载mahout(mahout-distribution-0.9.tar.gz) http://pan.baidu.com/s/1kUtOMQb 2.解压至指定目录 我平时都 ...

  5. mahout安装配置

    1.下载mahout 下载地址:http://mahout.apache.org 我下载的最新版:mahout-distribution-0.9 2.把mahout解压到你想存放的文档,我是放在/Us ...

  6. hadoop家族之mahout安装

    步骤一.下载mahout  http://www.apache.org/dyn/closer.cgi/mahout/ 我下载的是 mahout-distribution-0.9.tar.gz 16-F ...

  7. Centos下mahout安装与配置

    对于Mahout的安装与配置,须要一个前提.就是hadoop已经安装. 假设没有安装能够參考. http://blog.csdn.net/u012965373/article/details/4533 ...

  8. 在mahout安装目录下输入mahout 提示 ERROR: Could not find mahout-examples-*.job

    错误:ERROR: Could not find mahout-examples-*.job in /home/grid/mahout-distribution-0.8 or /home/grid/m ...

  9. mahout 安装

    1. 下载mahout-distribution-0.5.tar.gz 并解压: 2.配置环境变量: /etc/profile export MAHOUT_HOME=/home/mahout/ exp ...

随机推荐

  1. Xtreme9.0 - Communities 强连通

    Xtreme9.0 - Communities 题目连接: https://www.hackerrank.com/contests/ieeextreme-challenges/challenges/c ...

  2. HDU 5909 Tree Cutting 动态规划 快速沃尔什变换

    Tree Cutting 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5909 Description Byteasar has a tree T ...

  3. mysql分页查询优化(索引延迟关联)

    对于web后台报表导出是一种常见的功能点,实际对应服务后端即数据库的排序分页查询.如下示例为公司商户积分报表导出其中一个sql ,当大批量的导出请求进入时候,mysql的cpu急剧上升瞬间有拖垮库的风 ...

  4. 导入导出CSV

    const string dataPath = @"D:\Users\jin_h\Documents\Visual Studio 2013\Projects\ConsoleApplicati ...

  5. mobile开发备忘

    css -webkit-tap-highlight-color   webkit点击时会反色,可以清楚 -webkit-appearance   设为none时自带组建样式清除

  6. 移动前端开发和 Web 前端开发的区别是什么

    可以分成两部分理解1.服务器端开发,也叫后台开发,这是唯一的,对应不同的平台,他负责数据的分发与存储,和一些逻辑的处理.逻辑处理的多少由业务的复杂程度决定.服务端相对独立,与平台没啥关系. 2..1中 ...

  7. .net中实现RSS方法

    引用 如何在.net动态网站中实现RSS呢?主要思想是编写一个能够自动按照RSS格式生成xml文档的通用类.具体步骤如下: 步骤一:创建RSS通用类 C#代码 using System;   usin ...

  8. TCP套接字端口复用SO_REUSEADDR

    下面建立的套接字都是tcp套接字 1.进程创建监听套接字socket1,邦定一个指定端口,并接受了若干连接.那么进程创建另外一个套接口socket2,并试图邦定同一个端口时候,bind错误返回“Add ...

  9. .NET轻量级DBHelpers数据访问组件

    一.摘要 一说到ADO.NET大家可能立刻想到的就是增.删.改.查(CRUD)操作,然后再接就想到项目中的SQLHelper.没错本课分享课阿笨给大家带来的是来源于github上开源的DAO数据库访问 ...

  10. [Winform]默认以管理员身份运行程序

    摘要 在使用setupfactory打包之后,想让程序默认以管理员身份运行,因为涉及到创建文件删除文件的操作,如果权限比较低的话,会出现没有权限操作的bug. 解决办法 在项目中找到app.manif ...