class="full-post-title">利用Mahout实现在Hadoop上运行K-Means算法
一、介绍Mahout
Mahout是Apache下的开源机器学习软件包,目前实现的机器学习算法主要包含有协同过滤/推荐引擎,聚类和分类三个部分。Mahout从设计开始就旨在建立可扩展的机器学习软件包,用于处理大数据机器学习的问题,当你正在研究的数据量大到不能在一台机器上运行时,就可以选择使用Mahout,让你的数据在Hadoop集群的进行分析。Mahout某些部分的实现直接创建在Hadoop之上,这就使得其具有进行大数据处理的能力,也是Mahout最大的优势所在。相比较于Weka,RapidMiner等图形化的机器学习软件,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设计时考虑了大数据的处理,它利用Hadoop MapReduce框架进行分布式计算,使得在大规模数据集上运行机器学习任务成为可能。 6. **自定义与扩展**: 拥有源码意味着您可以根据自己的需求对算法进行调整或添加...
Mahout提供了对K-Means算法的高效实现,支持在Hadoop集群上并行执行。这使得处理大规模数据集成为可能,提高了算法的性能。在给定的压缩包中,包含了`mahout-distribution-0.5`版本,这个版本的Mahout已经包含了运行...
Mahout是建立在Hadoop之上的,利用其分布式计算能力处理大规模数据集。这使得Mahout能够处理超出单台机器内存和计算能力的数据。 3. **版本差异**: - mahout-core-0.1.jar:这是早期版本,可能包含的基本功能,...
2. **聚类(Clustering)**:包括K-means、Fuzzy K-means、Canopy Clustering等算法,用于将数据集中的对象分组到相似的类别中。这些算法广泛应用于市场细分、文本分类和图像分析等领域。 3. **分类...
Apache Mahout是一个基于Hadoop的数据挖掘库,它提供了大规模机器学习算法的实现,包括推荐引擎、分类、聚类和关联规则挖掘。Mahout 0.9版本是该库的一个重要里程碑,尤其因为它是第一个全面支持Hadoop 2的版本。在...
在Hadoop之上构建Mahout环境,可以实现高效的大规模数据挖掘和分析。 标题"hadop 2.4.1+mahout0.9环境搭建"涉及到的知识点主要包括以下几个方面: 1. **Hadoop 2.4.1**:这是Hadoop的一个重要版本,引入了YARN...
1. **运行K-Means聚类**:通过加载数据集并运行K-Means算法来进行聚类分析。 2. **实现协同过滤推荐**:使用电影评分数据集,通过Mahout的协同过滤算法来生成推荐结果。 3. **文本挖掘**:通过对文本数据进行预处理...
Hadoop的MapReduce框架使得Mahout能够在多台机器上并行运行,显著提高了处理速度和效率。 五、Java编程接口 作为基于Java的项目,Mahout提供了丰富的API供开发者使用。开发者可以方便地将Mahout的算法集成到自己的...
K-Means Driver 是整个 K-Means 运行流程的控制中心,它协调 Mapper、Combiner 和 Reducer 的运行,确保整个聚类过程顺利进行。 通过上述介绍可以看出,Mahout 为数据挖掘提供了一套完整且强大的工具集,不仅支持...
Mahout充分利用了Hadoop的分布式计算能力,其大部分算法都是为MapReduce设计的,可以处理PB级别的大数据。通过Hadoop,Mahout可以在多台服务器上并行执行任务,提高计算效率。 **四、Mahout的使用流程** 1. **数据...
1. **机器学习算法**:Mahout的核心在于它提供了多种机器学习算法,包括分类(如决策树、随机森林)、聚类(如K-Means、Fuzzy K-Means)、协同过滤(用于推荐系统)等。这些算法可以处理大规模数据,并且利用Hadoop...
Mahout 0.8版本是一个重要的里程碑,包含了丰富的机器学习算法,如协同过滤推荐算法、K-means聚类算法、随机森林分类算法等。这些算法都是经过优化的,能够高效地运行在大规模数据集上,尤其适合处理大数据的场景。 ...
这使得在集群上运行Mahout算法成为可能。 7. **可扩展性和并行化**:Mahout的算法设计考虑了并行化,可以充分利用多核CPU和分布式计算资源,提高处理速度。 8. **预处理和特征提取**: Mahout还提供了一些工具,...
使用Mahout,大数据研发人员可以轻松地将这些算法集成到Hadoop环境中,利用Hadoop的分布式计算能力加速训练过程。此外,Mahout还与其他大数据工具如HBase、Cassandra和Spark有良好的集成,增强了其在大数据生态中的...
2. **聚类**:包括K-Means、Fuzzy K-Means和Canopy Clustering等算法,可以对数据集进行无监督学习,将相似的数据点分组到一起,形成不同的簇。 3. **分类**:支持如Naive Bayes和Random Forest等监督学习算法,...
- 聚类算法的应用:聚类是一种无监督学习方法,Mahout实现了诸如K-means、Fuzzy K-means、Canopy等聚类算法。书籍中通过实例教授如何对数据集进行聚类分析。 - 推荐系统的构建:推荐系统是电子商务和内容推荐等领域...
1. **聚类**:Mahout提供了多种聚类算法,如K-means,Fuzzy K-means,和Canopy Clustering等。这些算法用于将数据集中的对象分成不同的组或簇,使得同一簇内的对象相似度较高,而不同簇之间的对象相似度较低。这对于...