利用Mahout实如今Hadoop上运行K-Means算法

利用Mahout实如今Hadoop上运行K-Means算法

  1、介绍Mahout

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

    2、介绍K-Means

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

    3、在Hadoop上实现运行

    1,实验环境

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

        ②操做系统:全部机器的系统均为ubuntu12.04api

        ③Mahout版本:采用的是0.5版bash

    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.5oop

export HADOOP_CONF_DIR=/home/hadoop/hadoop-1.2.1/confpost

export PATH=$PATH:/home/hadoop/hadoop-1.2.1/bin:$MAHOUT_HOME/bin学习

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

Screenshot from 2013-11-21 21_54_04

注:此处修改环境变量有些网上提示是/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分钟左右,最后生成一个文件,如图

Screenshot from 2013-11-21 21_09_41

    4、总结

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

 

最新产品代理加盟

相关文章
相关标签/搜索