k_means聚类算法的MapReduce并行化实现

合集下载

基于MapReduce的改进k-means文本聚类算法

基于MapReduce的改进k-means文本聚类算法

2016年第11满 y他息疼^文章编号= 1009 -2552(2016) 11 -0201-05D O I:10. 13274/j. cnki. hdzj. 2016. 11. 050基于M a p R e d u c e的改进k■m e a n s文本聚类算法刘澎,陆介平(江苏科技大学计算机科学与工程学院,江苏镇江212003)摘要:针对传统k-means文本聚类算法在处理大规模文本数据时扩展性不足的问题,提出了基 于M a p R e d u c e编程模型的并行k-means文本聚类算法。

通过删除离群点和采用高效的初始质心选 择策略提高k-means聚类效果,并设计基于M a p R e d u c e框架的大规模文本并行聚类模型提高算法 的可扩展性。

实验证明,该算法在大规模文本聚类中具有良好的聚类效果和可扩展性。

关键词:k-means算法;文本聚类;MapReduce中图分类号:T P391 文献标识码:AI m p r o v e d k-m e a n s a l g o r i t h m o f t e x t b a s e d o n M a p R e d u c eLIU Peng,LU Jie-ping(School of C om puter Science and E ngineering,Jiangsu U niversity of Science and T echnology,Zhenjiang 212003,Jiangsu P rovince,C hina)Abstract:Under the circumstances when traditional k-means clustering algorithm has a scalability problem when dealing with large-scale text data,the author proposed a parallel k-means text clustering algorithm based on MapReduce.This paper improved the clustering effect by removing the outliers and using a good way to look for the i n i t i a l centroids,and then i t improved the scalability by designing a parallel large-scale text clustering model based on MapReduce.The experiments indicate that this algorithm has good clustering effect and scalability in dealing with large clustering text.K e y w o r d s:k-means algorithm;text clustering;MapReduce0引言随着大数据的兴起,数据挖掘工作显得越发重 要,传统的数据处理平台和数据处理方法受到了极 大的挑战。

基于MapReduce的Canopy-Kmeans算法的并行化

基于MapReduce的Canopy-Kmeans算法的并行化

路如下: 首先将所有数据集合按特定特征划分为每类
的成 员 的特征 相 同的 K个 类 。初 始 数据 会根 据 数据
存储的节点位置及数据分块个数将其划分为划分成 N个数据集 , 每个数据集可 由一个 M a p p e r 独立处理 完成 , 并且 Ma p p e r 可 以重 复利用 , 多个 数据集 可 以在
同一个 Ma p p e r 上 进 行 处 理 。C a n o p y—K m e ns的 聚 a 类 过程分 两个 阶段执 行 : 第一步 : 近似 和 快速 地 将 数 据分成若 干 的 C no a p y , 然 后 对 每个 C a n o p y内 的记 录
用于编 写处理海量数据 的应用 。
率, 在今天大数据环境下 , 有待改进 。文章数据源为某省运营商在 2 0 1 4年 7月经过 脱敏 后的话单信令数 据 , 通过传 统的集 中控 制方式基于 M a p R e d u c e的方式。通过 实验 , 我们可以看出使 用 Ma p R e d u c e 方式具有 良好 的可行性 , 而且执行效率也得到 明显
基于 M a p R e d u c e的 C a n o p y —K m e a n s 算 法 的并行化
张友 海 , 李锋 刚
( 1 . 安徽职业技术学院 , 安徽 合肥 2 3 0 0 1 1 ; 2 . 合肥工业大学 , 安徽 合肥 2 3 0 0 0 9 ) 摘要 : 数据挖掘的聚类算法 C a n o p y —K me a n s 是分析数据 内在价值 的常用工具之一 , 传统 的基于集 中控制的方式算法执行 效

辽 宁科技 学 院学报
d o i : ( j ) c n k i 1 0 0 8— 3 7 2 3 2 0 1 7 . 0 1 . 0 0 2

MapReduce-Kmeans聚类

MapReduce-Kmeans聚类
3
抽取的新闻文本:
文本词向量表示:
4
MapReduce下K-means并行化实现


1,Map读取分配到该节点的每条数据,与中 心做对比,求出该条记录对应的中心,然后以 中心的ID为Key,该条数据为value将数据输出 。 2,利用reduce的归并功能将相同的Key归并 到一起,集中与该Key对应的数据,再求出这 些数据的平均值,输出新聚类中心。
-
-
Map负责把任务分解成多个任务 Reduce负责把分解后多任务处理的结果汇总起来
2
实例
- 选择经典的 Reuters21578 文本语料,对新闻内
容进行文本聚类。



语料描述:包含路透社共21578篇新闻报道, 专业人员手工标注,形式化语料库。 预处理:抽取其中<TITLE>和<BODY>中的文 本,即标题+正文。去除停用词,表示成以 TF*IDF为权值的词向量。 聚类方法:选用K-means算法。
mapreduce下kmeans并行化实现?用reduce的归并功能将相同的key归并到一起集中与该key对应的数据再求出这些数据的平均值输出新聚类中心
一个MapReduce简单实例
MapReduce原理



MapReduce是Hadoop的分布式计算框架,处 理海量数据的并行编程模式。 将任务分解在多个结点并行处理,并对结果进 行归并。 MapReduce包括两个部分Map和Reduce:
5
聚类结果
Key是类簇ID,Value是文档的聚类结果:wt是文档属于 簇的概率,对于kmeans总是1.0,distance是与类中心 距离,/reut2-000.sgm-0.txt就是文档名,以及文档向量 的各个词id和权重。

布谷鸟搜索改进的k-means聚类算法及其并行化实现

布谷鸟搜索改进的k-means聚类算法及其并行化实现

摘要随着计算机和互联网技术的迅速发展,数据量呈爆发式增长,海量数据的高效处理和利用成为当前社会面临的最艰巨任务之一;同时如何高效率、低成本、准确地从现有的海量数据中挖掘出潜在、有用的知识是数据挖掘领域研究面临的一大难题。

以K-means算法为代表的聚类分析是数据挖掘领域最重要的研究方向之一,K-means是一种典型的基于划分方法的聚类算法,具有思路简单、收敛速度快、时间复杂度近似于线性等特点,较适合应用于海量数据的聚类;群体仿生优化算法能够利用群体优势、并行搜索,以全局寻优的方式快速获得优化问题最优解,被认为是目前处理K-means聚类优化问题最行之有效的方法。

当前已有很多学者基于多种不同的群体仿生智能算法对K-means聚类算法进行优化,但现有的K-means聚类改进算法还存在以下两个问题需进一步完善:①聚类过程中的全局寻优能力不够突出,容易陷入局部最优;②在数据量较大时的聚类效率不高,没有充分利用服务器集群优势。

作者所做的主要工作包括:①提出一种新型元启发式基于仿生行为的改进的布谷鸟搜索算法(Quantum-based Adaptive Cuckoo Search,QACS),解决了原始布谷鸟算法搜索步长的自适应性问题,并引入量子运算使该算法的搜索方向具有一定的倾向性。

②针对K-means聚类算法易陷入局部最优的问题,将新算法QACS 与K-means聚类算法相结合,提出了一种新的串行K-means聚类算法(K-means clustering algorithm based on QACS,QACS-KMeans),提高了K-means聚类算法的全局搜索能力;③针对K-means聚类算法在处理较大数据量时效率较低的问题,利用Hadoop分布式平台的MapReduce编程模型实现了对新算法QACS-KMeans 的并行化处理。

通过在虚拟机中搭建的Hadoop伪分布式集群对不同样本数据集分别进行10次准确性实验和效率实验,结果表明:①并行QACS-KMeans新算法聚类的平均准确率在实验所采用的6种UCI标准数据集上,相比原始K-means聚类算法、利用粒子群优化算法(Particle Swarm Optimization, PSO)改进的K-means聚类算法和自适应布谷鸟搜索(Adaptive Cuckoo Search , ACS)改进的K-means聚类算法都有所提高;②并行QACS-KMeans新算法聚类的平均运行效率在实验所采用的5种大小递增的随机数据集上,当数据量较大时,显著优于原始K-means串行算法,稍好于并行PSO-Kmeans算法和并行ACS-KMeans算法。

基于MapReduce的K-Means算法设计与实现

基于MapReduce的K-Means算法设计与实现

Reduce伪代码
public void reduce(IntWritable key, Iterator<Text> values,OutputCollector<IntWritable, Text> output, Reporter reporter) {
int rows = 0, i = 0;//rows表示数据条数 double records[] = new double[COLS];//COLS为全局变量,表示属性的个数 while (values.hasNext()) { rows++; String tmp = values.next().toString(); StringTokenizer itr = new StringTokenizer(tmp); i = 0; while (itr.hasMoreTokens() && i < COLS) { records[i++] += Double.parseDouble(itr.nextToken()); } } String line = ""; for (i = 0; i < COLS; i++) { line += records[i]/rows+ "\t"; } output.collect(key, new Text(line)); }
OutputFormat伪代码
public class FileNameMultipleOutputFormat<K, V> extends MultipleTextOutputFormat<K, V> { //使输出文件名为类型K的值,本例为1、2、3 @Override protected String generateFileNameForKeyValue(K key, V value,String name) { return key.toString(); } @Override protected K generateActualKey(K key, V value) { return null; } }

基于相似度矩阵的K—neans算法的MapReduce并行化实现

基于相似度矩阵的K—neans算法的MapReduce并行化实现

基于相似度矩阵的K—neans算法的MapReduce并行化实现作者:曹奇敏刘鸿霞来源:《电脑知识与技术》2017年第18期摘要:为了提高基于相似度矩阵的K-Means算法(SMK-means)处理大数据的能力,它使用MapReduce分布式编程模型,并结合SMK-means算法自身的特点,设计出了SMK-means 算法基于MapReduce的并行化实现。

通过设计Map和Re-duce函数实现了SMK-means算法的并行化。

Map函数通过计算样本和聚簇中心的相似度来确定样本的聚簇归属,Re-duce函数用于完成聚簇中心的计算。

实验结果证明,基于MapReduce的并行化的SMK-means算法在保证文本挖掘性能不降的前提下,使得运行效率得到了大幅度提升。

关键词:K-Means算法;相似度矩阵;MapReduce模型;并行计算;文本挖掘中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2017)18-0018-031概述随着大数据时代的到来,人们所接触到的数据量成PB级别快速增长,同时还要求快速高效地处理所得到的数据。

对于数据处理有两方面的要求,一是要比数据产生的速度快,二是还要达到数据使用者对处理结果的预期。

尽管这两个要求通过使用并行计算的框架得到了一定程度上的满足,但是MPI等传统的并行框架还存在不少缺点,像技术人员需要自己实现对任务分配、集群管理等工作的编码,它在可扩展性上也有一定的限制等问题,这样就直接增高了传统并行框架的使用门槛,也无法将成本控制在一个较低的水平。

而MapReduce等并行计算框架的出现较好地解决了并行计算实现难和成本高的问题。

本文使用MapReduce并行框架,对基于相似度矩阵的K-Means算法(SMK-means)进行并行化处理。

2 MapReduce编程模型MapReduce处理大数据集,其关键步骤为Map函数和Re-duce函数的设计与实现。

基于mapreduce并行化计算的大数据聚类算法

Abstract: Aiming at solving the problem of big data’s large scale and complex computation,this paper adopted the idea of two-stage progressive clustering,and proposed a parallel computation algorithm for big data clustering based on MapReduce. In the first stage,this method acquired the initialized clustering center through Canopy algorithm,in order to find relatively accurate cluster center points quickly. In the second stage,it presented a novel scheme of parallel computation based on MapReduce framework,which maked each data node cluster or merge around its adjacent Canopy center node. In this way,the algorithm could make the procedure of data clustering fast and accurately. The results of the experiments deployed on MapReduce show that this algorithm can effectively improve the efficiency of parallel computing,reduce computing time,and improve big data’s clustering accuracy. Key words: big data; MapReduce; parallel computation; data clustering

基于MapReduce的K-Means并行算法设计

基于MapReduce的K-Means并行算法设计目录一、实验设计 (2)1.实验说明 (2)2.算法说明 (2)(1).聚类 (2)(2).基于划分的聚类方法 (2)(3).K-Means算法 (2)(4).MapReduce并行化聚类算法设计思路 (3)3.类说明 (3)(1).Instance (3)(2).Cluster (4)(3).EuclideanDistance (4)(4).RandomClusterGenerator (4)(5).KMeans (4)(6).KmeansCluster (4)(7).KMeansDriver (5)二、实验结果说明 (5)1.实验设置 (5)2.源数据点 (6)3.聚类结果 (7)三、性能和不足 (7)四、源程序 (8)1.Instance类 (8)2.Cluster类 (10)3.EuclideanDistance类 (11)4.PageRankDriver类 (12)5.KMeans类 (15)6.KMeansCluster类 (18)7.KMeansDriver类 (20)五、心得体会 (23)一、实验设计1.实验说明在Eclipse环境下编写实现k-means算法。

2.算法说明(1).聚类将给定的多个对象分成若干组,组内的各个对象是相似的,组间的对象是不相似的。

进行划分的过程就是聚类过程,划分后的组称为簇(cluster)。

几种聚类方法:•基于划分的方法;•基于层次的方法;•基于密度的方法;•......(2).基于划分的聚类方法给定N个对象,构造K个分组,每个分组就代表一个聚类。

K个分组满足以下条件:(1)每个分组至少包含一个对象;(2)每个对象属于且仅属于一个分组。

K-Means算法是最常见和典型的基于划分的聚类方法(3).K-Means算法输入:待聚类的N个数据点,期望生成的聚类的个数K输出:K个聚类算法描述:选出K个点作为初始的cluster centerLoop:对输入中的每一个点p:{计算p到各个cluster的距离;将p归入最近的cluster;}重新计算各个cluster的中心如果不满足停止条件,goto Loop; 否则,停止(4).MapReduce并行化聚类算法设计思路将所有的数据分布到不同的MapReduce节点上,每个节点只对自己的数据进行计算。

基于MapReduce的并行K-Means聚类


2.MapReduce框架下的并行K-Means算法
K-Meaቤተ መጻሕፍቲ ባይዱs算法:
首先从n个数据对象任意选择 k 个对象作为初始聚类中心;而对于所 剩下其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它 们分配给与其最相似的(聚类中心所代表的)聚类;然 后再计算每个所获 新聚类的聚类中心(该聚类中所有对象的均值);不断重复这一过程直到 标准测度函数开始收敛为止。一般都采用均方差作为标准测度函数。k个聚 类具有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。
1.假设所有的objects都可以同时存在于主存中; 2.并行系统中提供了受限制的程序模型并且使用这种限制去进行并行的自动 计算。 两个假设都禁止包含数以万计objects的大型数据集。因此,面向大型数据 集的并行聚类算法应该被设计出来。
1.简介
在许多应用领域,数据聚类得到广泛的重视。例如:数据挖掘,文档检 索,图像分割和模式分类。随着科技的进步,信息用量越来越大,使得对大 规模数据的聚类成为了一种严峻的挑战,为了解决这个问题,许多研究者尝 试着设计更高效的平行聚类算法。 在本文中,我们基于提出了一种并行K-Means聚类算法。 MapReduce是一种简单的但是很强大的并行编程模型。用户只要详细定 义map函数和reduce函数,关于并行计算、处理机器故障、跨机器交流的日 志安排等都是潜在的在大规模集群计算机上执行。
可伸缩性
4.总结
本文对基于云计算平台Hadoop的并行K-Means算法,设计进行了深人的研 究。首先,简要介绍了Hadoop 平台的基本组成,包括HDFS框架 MapReduce各个阶段的工作流程以及结构关系。然后,给出基于Hadoop的 并行k-means算法设计时需要思考的主要问题、算法设计的主要流程以及 方法和策略等。最后,通过在多组不同大小数据集上的实验表明,我们 设计的并行聚类算法PKMeans适合运行于大规模云计算平台,可以有效地 应用于实际中海量数据的分析和挖掘。

基于MapReduce的KMeans聚类算法的并行化实现

基于MapReduce的KMeans聚类算法的并行化实现张友海;李锋刚【期刊名称】《九江学院学报(自然科学版)》【年(卷),期】2017(032)001【摘要】聚类分析是数据挖掘的重要研究内容之一,在识别数据的内在结构方面具有重要的作用.目前,在大数据环境下,怎样更加有效地使用该方法来提取海量信息中的有价值的数据,是一个重要的研究方向.文章以常见的聚类算法Kmeans为例,介绍该算法的并行化实现.%The clustering analysis was one of the important research contents of data mining and inherent in the identification data structure was an extremely important role.At present,under the environment of big data,how to more effectively use this method to extract the valuable data in the vast amounts of information was an important research direction.Taking the common Kmeans clustering algorithm as an example,authers introduced the algorithm of parallel implementation.【总页数】3页(P73-75)【作者】张友海;李锋刚【作者单位】安徽职业技术学院信息工程系安徽合肥 230011;合肥工业大学管理学院安徽合肥 230009【正文语种】中文【中图分类】TP393.03【相关文献】1.一种改进K-means聚类算法的MapReduce并行化实现 [J], 栗国保;韩青菊2.ABC_Kmeans聚类算法的MapReduce并行化研究 [J], 袁小艳3.基于MapReduce的Canopy-Kmeans算法的并行化 [J], 张友海;李锋刚4.基于MapReduce并行化计算的大数据聚类算法 [J], 张文杰; 蒋烈辉5.一种改进K-means聚类算法的MapReduce并行化实现 [J], 栗国保;韩青菊因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第39卷 增刊Ⅰ2011年 6月 华中科技大学学报(自然科学版)J.Huazhong Univ.of Sci.&Tech.(Natural Science Edition)Vol.39Sup.Ⅰ Jun. 2011收稿日期 2011-03-15.作者简介 江小平(1974-),男,博士,E-mail:jiangxp@mail.scuec.edu.cn.基金项目 中央高校基本科研业务费专项资金资助项目(CZY11002);武汉市科技攻关项目(201110821229);华中科技大学暨湖北省移动通信公司TD-SCDMA联合创新实验室创新基金资助项目.k-means聚类算法的MapReduce并行化实现江小平1 李成华1 向 文2 张新访2 颜海涛3(1中南民族大学电子信息工程学院,湖北武汉430074;2华中科技大学计算机科学与技术学院,湖北武汉430074;3中国移动通信集团湖北有限公司业务支撑中心,湖北武汉430040)摘要 针对k-means聚类算法特点,给出了MapReduce编程模型实现k-means聚类算法的方法,Map函数完成每个记录到聚类中心距离的计算并重新标记其属于的新聚类类别,Reduce函数根据Map函数得到的中间结果计算出新的聚类中心,供下一轮MapReduce Job使用.实验结果表明:k-means算法MapReduce并行化后部署在Hadoop集群上运行,具有较好的加速比和良好的扩展性.关键词 云计算;并行计算;MapReduce模型;数据挖掘;k-means聚类算法中图分类号 TP301 文献标志码 A 文章编号 1671-4512(2011)S1-0120-05Parallel implementing k-means clustering algorithmusing MapReduce programming modeJiang Xiaoping1 Li Chenghua1 Xiang Wen2 Zhang Xinfang2 Yan Haitao3(1College of Electronics and Information Engineering,South-Central University for Nationalities,Wuhan430074,China;2School of Computer Science and Technology,Huazhong University of Science and Technology,Wuhan 430074,China;3Business Support Center,China Mobile Group Hubei Co.Ltd.,Wuhan 430040,China)Abstract How to implement the k-means clustering algorithm using MapReduce programming modewas studied.The distance between each point and each cluster was calculated and new center ID wasassigned to each point in the Map function.All the points of the same key value(current cluster ID)were sent to a single reducer and get the new cluster centroids for the next MapReduce Job.The ex-periments on the Hadoop platform showns basically linear speedup with an increasing number of nodecomputers and good scalability.Key words cloud computing;parallel computing;MapReduce programming mode;data mining;k-means clustering algorithm 随着信息技术的进步以及信息化社会的发展,聚类计算任务所面临的数据规模越来越大,k-means算法是一种常用的数据挖掘算法,其串行计算方法的时间复杂度比较高,处理能力存在局限性.传统高性能计算中的并行编程模型(如PThread,MPI和OpenMP等)抽象度不高,开发人员需要熟悉底层的配置和并行实现细节.MapReduce模型[1]是Google实验室提出的分布式并行编程模型或框架,它能组织集群来处理大规模数据集,成为云计算平台主流的并行数据处理模型.Apache开源社区的Hadoop项目[2]用java语言实现了该模型,同时Hadoop项目还设计了开放源代码的云计算技术平台.云计算技术国内已有研究[3-4],文献[5]则对在多核集群上以MapReduce的方式实现机器学习算法进行了研究.本文在基于Hadoop技术的云计算基础平台上,研究了k-means聚类算法的MapReduce并行编程实现方法,并进行了相关实验.1 MapReduce编程模型MapReduce编程模型的基本思路:将大数据集分解为成百上千的小数据集splits,每个(或若干个)数据集分别由集群中的1个节点(一般就是一台普通的计算机)并行执行Map计算任务(指定了映射规则)并生成中间结果,然后这些中间结果又由大量的节点并行执行Reduce计算任务(指定了归约规则),形成最终结果.图1描述了MapReduce的运行机制.在数据输入阶段,JobTracker获得待计算数据片在NameNode上的存储元信息;在Map阶段,JobTracker指派多个TaskTracker完成Map运算任务并生成中间结果;Shuffle阶段完成中间计算结果的混排交换;JobTracker指派TaskTracker完成Reduce任务;Reduce任务完成后通知JobTracker与Name-Node以产生最后的输出结果.图1 MapReudce运行机制MapReduce计算模型的核心是Map和Re-duce函数,这2个函数由编程人员负责实现,功能是按一定的映射规则将输入的键值对〈key,value〉转换成另一个或一批键值对〈key,value〉输出.Map函数将小数据集解析成一批〈key,val-ue〉对,计算处理后生成中间结果一批List(〈k2,v2〉);Reduce函数将〈k2,List(v2)〉作为输入数据,对属于同一个key的value集进行计算处理.编程人员只需关注这2个函数具体计算任务,其他并行计算中的复杂问题诸如分布式文件系统、工作调度、容错、机器间通信等都交给MapRe-duce运行系统后台处理.2 k-means聚类算法的MapReduce模型实现方法2.1 k-means聚类算法的基本思路k-means聚类算法是一种基于样本间相似性度量的间接聚类方法[6],其算法思路比较简单:首先从n个数据对象中任意选择k个对象作为初始聚类中心;对于所剩下的其他对象,根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类;然后再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);不断重复这一过程直至标准测度函数开始收敛为止.图2为k-means聚类算法的串行计算流程.图2 k-means聚类算法的串行计算流程串行实现算法的时间复杂度比较高,为n×k×t×O,其中:n为数据对象总个数;k为期望得到的聚类的个数;t为算法迭代的次数;O为一次迭代中计算待分配数据到中心点距离的时间复杂度.如果有1×104个数据对象需要聚成100个类,那么1次迭代中需要完成1×106次计算数据对象到中心点的距离这个基本操作,这是算法中最耗时的部分,也是容易进行并行处理的:1个数据对象在完成与k个聚类中心的距离比较的同时,其他数据对象也可以与聚类中心进行比较.2.2 k-means聚类算法的MapReduce并行化方法k-means聚类算法进行MapReduce的基本思路:对串行算法中每1次迭代启动对应的1次MapReduce计算过程,完成数据记录到聚类中心的距离计算以及新的聚类中心的计算.图3描述了k-means聚类算法MapReduce并行化实现方法.为了适合MapReduce计算模型处理,须将待处理数据记录以行形式存储,使待处理数据能按行分片,且片间数据无相关性,分片过程由Map-Reduce运行的环境完成,不需要编写代码.a.Map函数的设计Map函数的任务是完成每个记录到中心点距离的计算并重新标记其属于的新聚类类别,其输入为待聚类所有记录数据和上一轮迭代(或初始聚类)的聚类中心,输入数据记录〈key,value〉对的形式为〈行号,记录行〉;每个Map函数都读入聚类中心描述文件,Map函数对输入的每个记录点计算出距离其最近的类中心,并做新类别的·121·增刊Ⅰ江小平,等:k-means聚类算法的MapReduce并行化实现 图3 k-means聚类算法MapReduce并行化标记;输出中间结果〈key,value〉对的形式为〈聚类类别ID,记录属性向量〉.Map函数的伪代码如下:void map(Writable key,Text point){ min-distance=MAXDISTANCE; for(i=0;i<k;i++){ if(distance(point,cluster[i]<min-distance)){min-distance=Distance(point,cluster[i]);currentCluster-ID=i; }}Emit-Intermediate(currentCluster-ID,point);}.b.Reduce函数的设计Reduce函数的任务是根据Map函数得到的中间结果计算出新的聚类中心,供下一轮Map-Reduce Job使用.输入数据〈key,value〉对的形式为〈聚类类别ID,{记录属性向量集}〉;所有key相同的记录(即有相同类别ID的记录)送给一个Reduce任务———累加key相同的点个数和各记录分量的和,求各分量的均值,得到新的聚类中心描述文件;输出结果〈key,value〉对的形式为〈聚类类别ID,均值向量〉.Reduce函数的伪代码如下:void reduce(Writable key,Iterator〈Point-Writable〉points){ Num=0; while(points.hasNext()){ PointWritable currentPoint=points.next(); Num+=currentPoint.get-Num(); for(i=0;i<dimension;i++){ sum[i]+=currentPoint.point[i]; } for(i=0;i<dimension;i++) mean[i]=sum[i]/Num;Emit(key,mean);}.判断该聚类是否已收敛:比较上一轮Map-Reduce Job得到的聚类中心与本轮MapReduceJob聚类中心距离,若变化小于给定阈值,则算法结束;反之,则用本轮的聚类中心文件替换上一轮的中心文件,并启动新一轮的MapReduce Job.图4为k-means聚类算法MapReduce实现方法处理数据的过程示意图.在Reduce任务开始前,可对Map任务执行节点本地的中间结果以key值为索引进行分组和排序,以提高Reduce任务的执行效率.图4 数据处理示意图2.3 算法时间复杂度分析在MapReduce并行计算模型中,待处理文件存储在Hadoop平台的分布式文件系统中.根据被处理文件的大小,将数据分块存储在不同的节点上,每个块的大小为64MB,在Map阶段将1个数据块相应分配1个Map任务完成本数据块·221· 华中科技大学学报(自然科学版)第39卷的相关计算.这样k-means聚类算法中原来由1个主机处理的最耗时的运算(即n×k×t次距离计算),将分散到多个节点并行处理,如果每个节点平均完成P个Map任务,那么其时间复杂度为n×k×t×O/P.3 实验和结果分析3.1 实验环境图5给出实验中云计算平台的结构:1台机器作为NameNode和JobTracker服务节点,其他10台机器作为DateNode和TaskTracker服务节点.每台节点硬件配置如下:CPU型号为IntelXeon X3330;内存为8GB;硬盘为2TB SATA;板载Intel双千兆网络控制器.根据Hadoop项目官方网站介绍的方法配置基于Hadoop0.20.2版本的集群.图5 云计算平台结构示意图3.2 单机处理比较实验实验内容为比较Hadoop集群中的1个运算节点与k-means聚类算法的串行实现软件在处理相同规模数据以及相同硬件配置环境下,从数据读入到完成k-means聚类所需要的时间.实验中,k-means聚类算法串行实现软件采用的是新西兰怀卡托大学开源数据挖掘工具Weka[7],它集成了数据挖掘的大部分算法,且被学术界广泛使用,但文献[8]和[9]分别指出了Weka系统存在的一些缺陷,如当数据量比较大时有些算法会出现挖掘时间过长,CPU运转100%,内存不足等情况.对Weka系统,设定其最大内存maxheap为1 000MB,对应地配置TaskTracker节点子任务的JVM内存mapred.child.java.opts为1 000MB.在这两者的对比实验中,被处理数据从小规模逐步增加,实验情况见表1(τ1为单机上使用Weka软件所用时间;τ2为1个运算节点完成k-means聚类算法所用时间),其中每条记录共20个字段,生成10个聚类类别,初始聚类中心随机产生.上述实验结果表明:随着输入数据的增长,运行Weka的机器上内存等资源消耗增大,致使机器性能下降,直至报告内存不足且不能完成计算任务,而Hadoop集群能完成计算任务,这初步体现出在Hadoop集群上实现k-means聚类算法具有处理较大规模数据的能力;输入数据量很小时,Hadoop集群上k-means并行化算法的处理效率远低于单机上非并行化算法的处理效率,这是因为Hadoop集群上Job的启动和交互等需要消耗一定的资源且占总消耗的比例较大,而实际计算任务逻辑处理时间在总消耗中所占的比例较小.表1 单机处理实验结果实验次数文件大小/KB记录数/105τ1/sτ2/s1 2 687 0.205 08 9 882 5 370 0.410 16 21 963 16 100 1.230 48 46 1154 47 049 3.691 44 135 1535 50 729 3.981 43报告内存不足1786 78 411 6.152 40报告内存不足2233.3 集群加速比性能实验实验目的:加速比是衡量一个系统在扩展性方面优劣的主要指标,主要考察2个方面的性能,一是当计算硬件资源增加时,对于相同规模的作业,系统的处理能力;二是当计算资源和处理作业的规模保持相近比例增长时,系统的处理能力.实验数据:利用k-means聚类算法的Map-Reduce实现方法对移动用户数据进行聚类实验,以得到不同特征的客户群组.实验分别采用3组用户数据集,如表2所示,每条记录由35维数值型的数据组成,要求生成5个聚类类别,初始聚类中心随机产生.表2 实验数据集情况数据集原始文件大小/MB记录数/106数据块数占用HDFS空间/MBA 2 008.23 5.184 067 78 14 976B 4 048.74 10.369 715 162 31 104C 8 021.61 2.049 332 313 60 096 实验1 分别选择1,3,6,8,10个Task-Tracker节点参与计算,考察在逐渐增加节点的情况下,系统中完成任务的时间,实验结果如图6所示.从图中可以看出:每个作业运行的时间都随着节点的增加而降低,增加节点可以显著地提高系统对同规模数据的处理能力,这说明Map-Reduce在处理k-means聚类算法上具有较好的·321·增刊Ⅰ江小平,等:k-means聚类算法的MapReduce并行化实现 加速比.图6 k-means聚类算法MapReduce实现方法的加速比实验结果实验2 分别选择3,6,9个TaskTracker节点,对应选择A,B和C数据集进行计算,实验结果如图7所示.从图中可以看出:当节点数和处理数据的规模呈正比增长时,MapReduce在处理数据上基本保持了相同的水平,表现出了良好的扩展性.图7 k-means聚类算法MapReduce实现方法的扩展性实验结果通过在Hadoop云计算基础平台上对k-means聚类算法的MapReduce并行化方法的探讨,以实现k-means聚类算法海量数据处理能力并提高计算效率.实验结果表明:k-means聚类算法在MapReduce并行化后部署在Hadoop集群上运行,具有良好的加速比和扩展性.在摩根定理开始失效和待处理数据爆炸性增长的背景下,在云计算平台上采用高效的MapReduce并行计算方法实现包括k-means算法在内的数据挖掘算法具有现实意义.后期将对聚类后每个类的特征刻画用MapReduce方式实现的方法进行研究.参考文献[1]Dean J,Ghemawat S.MapReduce:simplified dataprocessing on large clusters[J].Communications ofthe ACM,2005,51(1):107-113.[2]Apache Hadoop.Hadoop[EB/OL].[2011-02-15].http:∥hadoop.apache.org.[3]陈康,郑纬民.云计算:系统实例与研究现状[J].软件学报,2009,20(5):1337-1348.[4]邓倩妮,陈全.云计算及其关键技术[J].高性能计算发展与应用,2009,26:2-6.[5]Chu C T,Kim S K,Lin Y A.Map-reduce for ma-chine learning on multicore[C]∥Proceedings of Neu-ral Information Processing Systems Conference(NIPS).Boston:MIT,2006:281-288.[6]Wikipedia.k-means clustering[EB/OL].[2011-02-15].http:∥en.wikipedia.org/wiki/k-means-cluste-ring.[7]University of Waikato.Waikato environment forknowledge analysis(weak).[EB/OL].[2011-02-15].http:∥www.cs.waikato.ac.nz/ml/weka/.[8]Wegener D,Mock M,Adranale D,et al.Toolkit-based high-performance data mining of large data onMapReduce clusters[C]∥IEEE International Confer-ence on Data Mining-ICDM.Washington:IEEE,2009:296-301.[9]陈慧萍,林莉莉,王建东,等.WEKA数据挖掘平台及其二次开发[J].计算机工程与应用,2008,44(19):76-79.·421· 华中科技大学学报(自然科学版)第39卷。

相关文档
最新文档