概要研究背景基于MapReduce的K-Means算法设计实验结果和分析K-Means简介研究背景大数据时代的来临数据呈现爆炸性增长传统的平台无法满足需求亟需新的平台云计算的出现天才般的MapReduce计算框架开源的Hadoop平台聚类算法和大数据数据越大,聚类效果越好K-Means简介输入:聚类个数K,以及包含N个数据待聚类数据集输出:聚类中心不再变化的K个聚类中心算法过程:1.从从数据集中随机选取K个数据作为中心2.测量所有数据到每个中心的距离,并把它归到最近的中心的类3.重新计算已经得到的各个类的中心4.迭代2~3步直至新的中心与原中心的距离小于指定阈值,算法结束K-Means算法流程图K-Means示例基于MapReduce的K-Means算法设计算法设计伪代码Map伪代码Partion伪代码Reduce伪代码OutputFormat伪代码算法设计job:计算新的聚类中心Map:输入:Object,一条数据输出:所属类,数据Reduce:输入:,相应数据的集合输出:,新的聚类中心迭代job,直至相连两次的聚类中心小于阈值iCiCiC流程图Map伪代码publicvoidmap(Objectkey,Textvalue,OutputCollectorIntWritable,Textoutput,Reporterreporter){Stringline=value.toString().trim();intsort=0;//聚类类别doubleminDis=Double.MAX_VALUE;for(inti=1;i=K;i++){doubletmpDis=calDis(i,line);//数据和类i间的距离if(tmpDisminDis){sort=i;minDis=tmpDis;}}output.collect(newIntWritable(sort),value);}Partition伪代码publicclassKeyPartitionK,VimplementsPartitionerK,V{@OverridepublicintgetPartition(Kkey,Vvalue,intn){//TODOAuto-generatedmethodstubreturnMath.abs(key.hashCode())%n;}@Overridepublicvoidconfigure(JobConfarg0){//TODOAuto-generatedmethodstub}}Reduce伪代码publicvoidreduce(IntWritablekey,IteratorTextvalues,OutputCollectorIntWritable,Textoutput,Reporterreporter){introws=0,i=0;//rows表示数据条数doublerecords[]=newdouble[COLS];//COLS为全局变量,表示属性的个数while(values.hasNext()){rows++;Stringtmp=values.next().toString();StringTokenizeritr=newStringTokenizer(tmp);i=0;while(itr.hasMoreTokens()&&iCOLS){records[i++]+=Double.parseDouble(itr.nextToken());}}Stringline=;for(i=0;iCOLS;i++){line+=records[i]/rows+\t;}output.collect(key,newText(line));}OutputFormat伪代码publicclassFileNameMultipleOutputFormatK,VextendsMultipleTextOutputFormatK,V{//使输出文件名为类型K的值,本例为1、2、3@OverrideprotectedStringgenerateFileNameForKeyValue(Kkey,Vvalue,Stringname){returnkey.toString();}@OverrideprotectedKgenerateActualKey(Kkey,Vvalue){returnnull;}}实验结果和分析开发环境实验数据运行结果结果分析开发环境RedHatLinux操作系统Hadoop开源软件,版本Hadoop-1.0.3节点数目:10节点配置:4个CPU,16核,内存12GJDK1.7.0Eclipse-SDK-4.2.1-linux-gtk实验数据数据集295个数据100个属性选取了3个聚类中心运行结果迭代前后的中心间的距离迭代次数距离10.416281752617621720.2261470651387958430.1643413181893543240.0891535211218527850.05741151849787401560.0297434007942915870.0278291782916929480.0302077319519657890.012126278742641175101.6540101356382944E-15运行结果迭代第5次的运行结果谢谢大家