Kmeans 的MapReduce实现原理

原创 2016年08月29日 12:50:36

1、由InputDriver对原始数据集的一个预处理,输入目录是:testdata,输出目录是:output/data

2、由CanopyDriver发起的对data的初始划分,输入目录是:output/data,输出目录是:output/clusters-0。 这里我们假设样本被划分为了500份小样本文件,分散在cluster中。

3、由KmeansDriver发起的构建Cluster的第一次迭代,输入目录是:output/clusters-0,输出目录是:output/clusters-1

4、由KmeansDriver发起的构建Cluster的第二次迭代,输入目录是:output/clusters-1,输出目录是:output/clusters-2

。。。反复迭代。直至收敛。



好了,下面具体分析,上面第2步划分完以后,HDFS上暂存了500个样本文件,每个样本文件里面有10000个样本点。
这时我们需要两个质心文件(比较小的文件,存了K个质心),一个是原质心文件,另一个是更新的质心文件。

在每个map类中,首先需要的是读取原质心文件,得到K个质心,我们处理1个样本文件,对该样本文件中的每一个样本点进行处理,其中处理过程是计算这个样本点到每个质心的距离,得到最小的,于是可以给出属于哪个质心。这样对该文件中的所有10000个样本点循环玩之后,就可以得到这10000个样本点分别属于哪个质心。

然后经过Combine,shuffle 等负责将属于具体某一个质心的样本点都归为一类,然后输出。
然后在reduce类中,把所有500个样本文件都经过map处理后的结果输入给reduce类,这样便可以重新计算出该类的质心。于是reduce中便能更新这K个质心,将新的结果写入到跟新的质心文件中去。


最后用到那个Driver类。该类作用是不断提交mapreduce作业。然后每一轮作业后,比较新的质心文件和旧质心文件的差别,如果足够接近,则停止迭代。否则就用新的质心文件替代旧质心文件,进入下一次迭代。

参考
http://blog.csdn.net/jdplus/article/details/23960127
http://www.cnblogs.com/zhangchaoyang/articles/2634365.html
http://www.cnblogs.com/vivounicorn/archive/2011/10/08/2201986.html

MapReduce实现基本SQL操作的原理

1、MapReduce实现基本SQL操作的原理 详细讲解SQL编译为MapReduce之前,我们先来看看MapReduce框架实现SQL基本操作的原理 1.1 Join的实现原理 selec...
  • grdgrdgrd
  • grdgrdgrd
  • 2015年05月19日 20:20
  • 1298

MapReduce基本原理与WordCount程序

MapReduce原理   通过简单的Mapper和Reducer的抽象提供一个编程模型,可以在一个由几十台上百台PC组成的不可靠集群上并发地,分布式处理大量的数据集,而把并发、分布式(机器间通信)...
  • lfw2016
  • lfw2016
  • 2016年05月07日 15:24
  • 980

MapReduce实现基本SQL操作的原理-join和group by,以及Dinstinct

详细讲解SQL编译为MapReduce之前,我们先来看看MapReduce框架实现SQL基本操作的原理 Join的实现原理 select u.name, o.orderid from order o...
  • a11123939
  • a11123939
  • 2015年02月03日 09:59
  • 4544

MapReduce 1底层实现原理

1、 云计算框架:    MapReduce:适合离线计算    Storm:流式计算框架,实时计算    Spark:内存计算框架,快速得到结果的情形 2、 MapReduce理念:移动计算而不移动...
  • u014394255
  • u014394255
  • 2016年12月04日 00:15
  • 630

MapReduce的原理

1.什么是MapReduce? MapReduce 是由Google公司的Jeffrey Dean 和 Sanjay Ghemawat 开发的一个针对大规模群组中的海量数据处理的分布式编程模型。M...
  • carolzhang8406
  • carolzhang8406
  • 2014年11月21日 14:22
  • 1085

Hadoop2.6(新版本)----MapReduce工作原理

最近在研究Hadoop,发现网上的一些关于Hadoop的资料都是以前的1.X版本的,包括MapReduce的工作原理,都是以前的一些过时了的东西,所以自己重新整理了一些新2.X版本的MapReduce...
  • tanggao1314
  • tanggao1314
  • 2016年04月28日 17:01
  • 19743

数据挖掘笔记-分类-决策树-MapReduce实现-2

上篇文章里面虽然有
  • wulinshishen
  • wulinshishen
  • 2014年05月28日 16:38
  • 1568

MapReduce实现基本SQL操作的原理-join和group by,以及Dinstinct

感谢作者做的那么清晰易懂http://blog.csdn.net/sn_zzy/article/details/43446027Group By原理 map阶段 把需要group by的多个字段组...
  • baidu_15113429
  • baidu_15113429
  • 2017年11月02日 17:07
  • 153

hadoop mapreduce join原理、方法讲解

1. 概述 在传统数据库(如:MYSQL)中,JOIN操作是非常常见且非常耗时的。而在HADOOP中进行JOIN操作,同样常见且耗时,由于Hadoop的独特设计思想,当进行JOIN操作时,有一些...
  • liuzhenwen
  • liuzhenwen
  • 2016年07月17日 09:00
  • 1113

MapReduce多表关联实验

一、实例描述 多表关联是通过对原始数据进行一定的处理,从其中挖掘出关心的信息。   二、数据描述 输入是两个文件,一个代表工厂表,包含工厂名列和地址号列;另一个代表地址表,包含地址名列和地址编...
  • hunannanhu
  • hunannanhu
  • 2014年11月18日 15:28
  • 764
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Kmeans 的MapReduce实现原理
举报原因:
原因补充:

(最多只允许输入30个字)