利用Mahout实现在Hadoop上运行K-Means算法

标签: 利用 mahout hadoop | 发表时间:2013-11-21 22:40 | 作者:minglaihan
出处:http://blog.csdn.net

    K-Means算法是基于分划分的最基本的聚类算法,是学习机器学习、数据挖掘等技术的最基本的 知识,所以掌握其运行原理是很重要的。

    转载请注明出处:  http://hanlaiming.freetzi.com/?p=144

     一、介绍Mahout

    Mahout是Apache下的开源机器学习软件包,目前实现的机器学习算法主要包含有 协同过滤/推荐引擎聚类分类三个部分。Mahout从设计开始就旨在建立可扩展的机器学习软件包,用于处理大数据机器学习的问题,当你正在研究的数据量大到不能在一台机器上运行时,就可以选择使用Mahout,让你的数据在Hadoop集群的进行分析。Mahout某些部分的实现直接创建在Hadoop之上,这就使得其具有进行大数据处理的能力,也是Mahout最大的优势所在。相比较于 WekaRapidMiner等图形化的机器学习软件,Mahout只提供机器学习的程序包(library),不提供用户图形界面,并且Mahout并不包含所有的机器学习算法实现,这一点可以算得上是她的一个劣势,但前面提到过Mahout并不是“又一个机器学习软件”,而是要成为一个“可扩展的用于处理大数据的机器学习软件”,但是我相信会有越来越多的机器学习算法会在Mahout上面实现。[1]

     二、介绍K-Means

     https://cwiki.apache.org/confluence/display/MAHOUT/K-Means+Clustering#,这是Apache官网上的算法描述,简单来说就是基于划分的聚类算法,把n个对象分为k个簇,以使簇内具有较高的相似度。相似度的计算根据一个簇中对象的平均值来进行。[2]

     三、在Hadoop上实现运行

    1,实验环境

        ①hadoop集群环境:1.2.1 一个Master,两个Slaves,在开始运行kmeans时启动hadoop

        ②操作系统:所有机器的系统均为ubuntu12.04

        ③Mahout版本:采用的是0.5版

     2,数据准备

        数据采用的是 http://archive.ics.uci.edu/ml/databases/synthetic_control/synthetic_control.data,这是网上提供的一个比较不错是数据源。然后用指令 hadoop fs -put /home/hadoop/Desktop/data testdata,将在我桌面的文件data上传到HDFS的testdata目录下,这里为什么是testdata,我也正在思考,因为我本来是上传到input里,但是运行时提示could not find ....user/testdata之类的,所以现改为了testdata。

    3,运行

        ①配置Mahout环境:在Apache官网下载Mahout的版本,我选择的是0.5,下载地址: https://cwiki.apache.org/confluence/display/MAHOUT/Downloads。然后解压到你指定的目录,将此目录路径写入/etc/profile,添加如下语句:

  • export MAHOUT_HOME=/home/hadoop/hadoop-1.2.1/mahout-distribution-0.5
  • export HADOOP_CONF_DIR=/home/hadoop/hadoop-1.2.1/conf
  • export PATH=$PATH:/home/hadoop/hadoop-1.2.1/bin:$MAHOUT_HOME/bin

然后执行 source /etc/profile。在mahout目录下执行bin/mahout命令,检测系统是否安装成功。如图:


注:此处修改环境变量有些网上提示是/etc/bash.bashrc,我也试着修改过,但是发现在我这里使环境变量生效的是profile。

        ②运行Mahout里自带的K-Means算法,bin/mahout org.apache.mahout.clustering.syntheticcontrol.kmeans.Job,这里启动后遇到了一点问题,提示Could not find math.vector,后来参考这篇 http://jerrylead.iteye.com/blog/1188929日志解决。

    4,结果

       在我的环境下运行5分钟左右,最后生成一个文件,如图


    四、总结

        Mahout是一个很强大的数据挖掘工具,需要进行更深层的了解。

    五、参考文献

        [1].Mahout与聚类分析    http://yoyzhou.github.io/blog/2013/05/26/clustering-with-mahout/

作者:minglaihan 发表于2013-11-21 22:40:28 原文链接
阅读:122 评论:0 查看评论

相关 [利用 mahout hadoop] 推荐:

利用Mahout实现在Hadoop上运行K-Means算法

- - CSDN博客云计算推荐文章
    K-Means算法是基于分划分的最基本的聚类算法,是学习机器学习、数据挖掘等技术的最基本的 知识,所以掌握其运行原理是很重要的.     转载请注明出处:  http://hanlaiming.freetzi.com/?p=144.      一、介绍Mahout.     Mahout是Apache下的开源机器学习软件包,目前实现的机器学习算法主要包含有 协同过滤/推荐引擎, 聚类和 分类三个部分.

Mahout介绍

- - 互联网 - ITeye博客
Mahout 是机器学习和数据挖掘的一个分布式框架,区别于其他的开源数据挖掘软件,它是基于hadoop之上的; 所以hadoop的优势就是Mahout的优势. http://mahout.apache.org/ 上说的Scalable就是指hadoop的可扩展性. Mahout用map-reduce实现了部分数据挖掘算法,解决了并行挖掘的问题.

利用hadoop mapreduce 做数据排序

- - zzm
我们的需求是想统计一个文件中用IK分词后每个词出现的次数,然后按照出现的次数降序排列. 由于hadoop在reduce之后就不能对结果做什么了,所以只能分为两个job完成,第一个job统计次数,第二个job对第一个job的结果排序. 第一个job的就是hadoop最简单的例子countwords,我要说的是用hadoop对结果排序.

mahout部署实践

- - CSDN博客云计算推荐文章
一 下载mahout并解压. JAVA_HOME mahout运行需指定jdk的目录. MAHOUT_JAVA_HOME指定此变量可覆盖JAVA_HOME值. HADOOP_HOME  如果配置,则在hadoop分布式平台上运行,否则单机运行. HADOOP_CONF_DIR指定hadoop的配置文件目录.

mahout 实用教程之一

- - CSDN博客云计算推荐文章
mahout 实用教程 (一). 本文力求把mahout从使用的角度为读者建立一个框架,为后续的使用打下基础. 本文为原创文章转载请注明原网址 http://blog.csdn.net/comaple,谢谢. 下面首先给出源代码svn地址以及用于测试的公共数据集,大家可以下载并测试. mahout svn仓库地址: http://svn.apache.org/repos/asf/mahout/trunk.

Mahout: SVDRecommender SVD推荐算法

- -

IT企业利用云计算平台Hadoop的10种方式

- - 博客园_新闻
如果你是世界上广大 Hadoop 用户的一员,你肯定知道 Google 曾经靠着分布式计算技术(Hadoop),在搜索引擎和广告方面取得了举世瞩目的成就. 现在的 Hadoop 不仅是当年的老二 Yahoo 的专用产品了,从 Hadoop 长长的用户名单中,可以看到 Facebook, 可以看到 Linkedin,可以看到 Amazon,可以看到 EMC, eBay,Tweeter,IBM, Microsoft, Apple, HP….

NativeTask:利用本地执行引擎加速Hadoop

- - 技术改变世界 创新驱动中国 - 《程序员》官网
NativeTask是Hadoop MapReduce的高效执行引擎实现. 与MapReduce相比,NativeTask获得了不错的性能提升,主要包括更好的排序实现、关键路径避免序列化、避免复杂抽象、更好的利用压缩等. NativeTask是一个高性能MapReduce执行单元,支持C++接口. 顾名思义,NativeTask是一个本地数据处理引擎,专注于数据处理本身,在MapReduce的环境下,它仅替换Task模块功能.

利用yarn多队列实现hadoop资源隔离 - bbaiggey_bigdata的博客 - CSDN博客

- -
大数据处理离不开hadoop集群的部署和管理,对于本来硬件资源就不多的创业团队来说,做好资源的共享和隔离是很有必要的,毕竟不像BAT那么豪,那么怎么样能把有限的节点同时分享给多组用户使用而且互不影响呢,我们来研究一下yarn多队列做资源隔离. 请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址.

Mahout实现的机器学习算法

- - ITeye博客
使用命令:mahout -h.   在Mahout实现的机器学习算法见下表:. EM聚类(期望最大化聚类). 并行FP Growth算法. 并行化了Watchmaker框架. 非Map-Reduce算法. 扩展了java的Collections类. Mahout最大的优点就是基于hadoop实现,把很多以前运行于单机上的算法,转化为了MapReduce模式,这样大大提升了算法可处理的数据量和处理性能.