《Hadoop与大数据挖掘》一2.5.3 Hadoop K-Means算法实现思路

2.5.3 Hadoop K-Means算法实现思路

针对K-Means算法,本节给出两种实现思路。思路1相对比较直观,但是效率较低;思路2在实现上需要自定义键值类型,但是效率较高。下面是对两种思路的介绍。
思路1
如图2-47所示,算法描述如下:
1)根据原始文件生成随机聚类中心向量(需指定聚类中心向量个数k),指定循环次数;
2)在map阶段,setup函数读取并初始化聚类中心向量;在map函数中读取每个记录,计算当前记录到各个聚类中心向量的距离,根据到聚类中心向量最小的聚类中心id判断该记录属于哪个类别,输出所属聚类中心id和当前记录;
3)在reduce阶段,reduce函数接收相同聚类中心id的数据;把这些数据的每列进行求和,并记录每列的个数;计算新的聚类中心向量(每列的和除以每列的个数),然后输出聚类中心id和新的聚类中心向量;
4)判断前后两次聚类中心向量之间的误差是否小于某阈值;如果小于,则跳转到步骤5),否则跳转到步骤2);
5)针对最后一次生成的聚类中心向量对原始数据进行分类,得到每个记录的类别。
其MR数据流如图2-48所示。

思路2
如如图2-49所示,算法描述如下:
1)根据原始文件生成随机聚类中心向量(需指定聚类中心向量个数k),指定循环次数。
2)在map阶段,setup函数读取并初始化聚类中心向量,同时初始化聚类中心向量和;在map函数中读取每个记录,计算当前记录到各个聚类中心向量的距离,根据到聚类中心向量最小的聚类中心id判断该记录属于哪个类别,然后把所属的类别加入到聚类中心向量和中(需要记录个数及和,即需要自定义类型);在cleanup函数中输出所属聚类中心id和其对应的聚类中心向量和。

3)在reduce阶段,reduce函数接收相同聚类中心id的数据;把这些数据的每列进行求和,并记录每列的个数;计算新的聚类中心向量(每列的和除以每列的个数),然后输出聚类中心id和新的聚类中心向量。
4)判断前后两次聚类中心向量之间的误差是否小于某阈值;如果小于,则跳转到步骤5),否则跳转到步骤2)。
5)针对最后一次生成的聚类中心向量对原始数据进行分类,得到每个记录的类别。
其MR数据流如图2-50所示。

时间: 2024-10-02 17:32:45

《Hadoop与大数据挖掘》一2.5.3 Hadoop K-Means算法实现思路的相关文章

《Hadoop与大数据挖掘》——2.3 Hadoop集群命令

2.3 Hadoop集群命令 一般操作Hadoop集群都是使用相关的Hadoop命令,比如文件上传.下载.删除,文件夹新建.删除.拷贝等:又或者提交MapReduce任务并执行.查看MapReduce任务执行状态等.那么Hadoop集群包含的相关命令有哪些呢? 大多数Hadoop集群的相关命令类别如表2-3所示. 下面针对每种集群命令,介绍其中常用的命令,为后面的操作打下基础. 2.3.1 HDFS常用命令hdfs dfs 在讲解这个命令前,先对hdfs dfs.hadoop fs.hadoop

《Hadoop与大数据挖掘》——2.2 Hadoop配置及IDE配置

2.2 Hadoop配置及IDE配置 2.2.1 准备工作 上面的虚拟机参数配置只是参考,可以根据自身机器的实际情况进行调整. 在配置好Hadoop集群所需机器后,先确认下集群拓扑,本次部署采用的集群拓扑如图2-16所示. 如文中未做说明,则所有操作都是在root用户下执行.但是,在生产环节,一般不会使用root用户,这点需要注意. 2.2.2 环境配置 1.安装JDK (1)文件下载 到www.oracle.com网站上下载自己系统对应JDK版本.文件名如jdk-7u-linux-x64.ta

《Hadoop与大数据挖掘》——2.4 Hadoop编程开发

2.4 Hadoop编程开发 Hadoop框架最核心的设计就是HDFS和MapReduce.HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算.本节就MapReduce开发相关内容进行分析,包括HDFS Java API操作.MapReduce原理.MapReduce相关流程组件配置及编程等.最后将给出两个算法:Kmeans算法.Tf-idf算法的动手实践,加深对MapReduce编程的认识和理解. 2.4.1 HDFS Java API操作 Hadoop中关于文件操作类

《Hadoop与大数据挖掘》一导读

前 言 为什么要写这本书 最早提出"大数据"时代到来的是全球知名咨询公司麦肯锡,麦肯锡称:"数据,已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素.人们对于海量数据的挖掘和运用,预示着新一波生产率增长和消费者盈余浪潮的到来." 早在2012年,大数据(big data)一词已经被广泛提起,人们用它来描述和定义信息爆炸时代产生的海量数据,并命名与之相关的技术发展与创新.那时就有人预计,从2013年至2020年,全球数据规模将增长10倍,每年产生的数据量将由当

《Hadoop与大数据挖掘》——第2章 大数据存储与运算利器—Hadoop 2.1 Hadoop概述

第2章 大数据存储与运算利器-Hadoop 本章主要介绍了Hadoop框架的概念.架构.组件.生态系统以及Hadoop相关编程,特别是针对Hadoop组件HDFS.MapReduce.YARN,Hadoop MapReduce编程做了较详细的介绍.在介绍各个知识点的同时,结合动手实践章节,帮助读者理解对应的内容. 2.1 Hadoop概述 2.1.1 Hadoop简介 随着现代社会的发展,各种信息数据存量与增量都非常大,很多情况下需要我们能够对TB级,甚至PB级数据集进行存储和快速分析,然而单机

《Hadoop与大数据挖掘》一1.2 大数据平台

1.2 大数据平台 大数据平台有哪些呢? 一般认为大数据平台分为两个方面,硬件平台和软件平台.硬件平台一般如Open-Stack.Amazon云平台.阿里云计算等,类似这样的平台其实做的是虚拟化,即把多台机器或一台机器虚拟化成一个资源池,然后给成千上万人用,各自租用相应的资源服务等.而软件平台则是大家经常听到的,如Hadoop.MapReduce.Spark等,也可以狭义理解为Hadoop生态圈,即把多个节点资源(可以是虚拟节点资源)进行整合,作为一个集群对外提供存储和运算分析服务. Hadoo

《Hadoop与大数据挖掘》一第2章

第2章 大数据存储与运算利器-Hadoop 本章主要介绍了Hadoop框架的概念.架构.组件.生态系统以及Hadoop相关编程,特别是针对Hadoop组件HDFS.MapReduce.YARN,Hadoop MapReduce编程做了较详细的介绍.在介绍各个知识点的同时,结合动手实践章节,帮助读者理解对应的内容.

《Hadoop与大数据挖掘》一2.1.4 Hadoop资源管理—YARN

2.1.4 Hadoop资源管理-YARN 在上一节中我们看到,当MapReduce发展到2.x时就不使用JobTracker来作为自己的资源管理框架,而选择使用YARN.这里需要说明的是,如果使用JobTracker来作为Hadoop集群的资源管理框架的话,那么除了MapReduce任务以外,不能够运行其他任务.也就是说,如果我们集群的MapReduce任务并没有那么饱满的话,集群资源等于是白白浪费的.所以提出了另外的一个资源管理架构YARN(Yet Another Resource Mana

《Hadoop与大数据挖掘》——1.2 大数据平台

1.2 大数据平台 大数据平台有哪些呢? 一般认为大数据平台分为两个方面,硬件平台和软件平台.硬件平台一般如Open-Stack.Amazon云平台.阿里云计算等,类似这样的平台其实做的是虚拟化,即把多台机器或一台机器虚拟化成一个资源池,然后给成千上万人用,各自租用相应的资源服务等.而软件平台则是大家经常听到的,如Hadoop.MapReduce.Spark等,也可以狭义理解为Hadoop生态圈,即把多个节点资源(可以是虚拟节点资源)进行整合,作为一个集群对外提供存储和运算分析服务. Hadoo

《Hadoop与大数据挖掘》一2.6.2 Hadoop TF-IDF编程思路

2.6.2 Hadoop TF-IDF编程思路 这里不再给出TF-IDF的单机算法实现,而直接给出其Hadoop算法实现思路,如图2-52所示. 具体算法描述如下. Job1:针对每个文件集中的每个输入文件,分别统计其各个单词出现的次数,输出为<单词w|文件名f,该单词w在文件f中出现的次数f-w-count>. Job2:针对Job1的输出,统计文件f中所有单词的个数(及一共有多少个唯一的单词),输出为<单词w|文件名f,该单词w在文件f中出现的次数f-w-count |文件f中的单词