Mahout实践:Mahout聚类算法
1、实验描述
-
本实验通过在安装配置好的Hadoop集群和Mahout框架的基础上,完成了Kmeans算法的聚类任务。
-
实验时长:45分钟
-
主要步骤:
-
打开hadoop集群
-
准备数据
-
执行任务
-
2、实验环境
-
虚拟机数量:3
-
系统版本:CentOS 7.5
-
Mahout版本:apache-mahout-distribution-0.13.0
-
Hadoop版本:Hadoop 2.7.3
3、相关技能
-
Hadoop 原理
-
Mahout 原理
-
Shell 基本命令
4、相关知识点
-
Hadoop集群的开启
-
Mahout的基本原理
-
Mahout 任务提交
5、实现效果
- 使用Mahout完成聚类,结果如下图所示:
6、实验步骤
6.1打开虚拟机并启动Hadoop集群
6.1.1在master启动Hadoop集群
[zkpk@master ~]$ start-all.sh
6.1.2在master命令行中运行jps,确认NameNode, SecondaryNameNode, ResourceManager进程启动
6.1.3在slave01命令行中运行jps,确认DataNode, NodeManager进程启动
6.1.4在slave02命令行中运行jps,确认DataNode, NodeManager进程启动
6.2Mahout kmeans算法了解:
6.2.1进行KMeans聚类时,会产生如下四个步骤。
6.2.1.1数据预处理,整理规范化数据
6.2.1.2从上述数据中随机选择若干个数据当作Cluster的中心
6.2.1.3迭代计算,调整中心
6.2.1.4把数据分到各个Cluster中心
6.3数据准备
6.3.1在master节点将实验所需的数据拷贝到zkpk的家目录下。
[zkpk@master ~]$ cp /home/zkpk/experiment/synthetic_control.data /home/zkpk/
6.3.2将实验数据上传到HDFS指定的目录:
6.3.2.1创建目录,用于保存接下来上传到HDFS中的文件
[zkpk@master ~]$
[zkpk@master ~]$ hadoop fs -mkdir /kmeans
6.3.2.2上传数据文件
[zkpk@master ~]$cd
[zkpk@master ~]$ hadoop fs -put synthetic_control.data /kmeans
6.3.2.3创建目录,用于保存聚类的输出结果
[zkpk@master ~]$ hadoop fs -mkdir /k_out
6.4提交kmeans exmaples
6.4.1进入mahout安装目录
[zkpk@master ~]$ cd
[zkpk@master ~]$ cd mahout
[zkpk@master mahout]$
6.4.2执行如下命令提交任务
[zkpk@master mahout]$ bin/mahout org.apache.mahout.clustering.syntheticcontrol.kmeans.Job --input /kmeans --numClusters 3 -t1 3 -t2 6 --maxIter 3 --output /k_out
参数说明如下:
6.4.2.1org.apache.mahout.clustering.syntheticcontrol.kmeans.Job:指定提交任务的类名
6.4.2.2–input:输入数据的目录
6.4.2.3–numClusters: 聚类的个数
6.4.2.4算法的参数
6.4.2.5–maxIter:最大迭代次数
6.4.2.6–output:输出目录,任务迭代目录
6.4.3提交后状态
6.4.4查看HDFS 对应路径
6.4.4.1执行如下命令
[zkpk@master mahout]$ hadoop fs -ls /k_out
6.4.4.2查看最终的运行结果。
[zkpk@master mahout]$ bin/mahout seqdumper -i /k_out/clusteredPoints/part-m-00000
7、总结
本实验利用mahout完成聚类算法的任务,了解掌握了mahout聚类算法的执行流程和实验步骤。着重理解运行命令时各参数的用法及意义。