底层、推理、联想思维之应用(使用map reduce实现大规模kmeans聚类)

发布时间:2026/11/7 14:59:15

底层、推理、联想思维之应用(使用map reduce实现大规模kmeans聚类) 之前小组的同事说了一道题目怎么高效的使用map-reduce完成kmeans聚类。我想了一些时间想出了最高效最简洁的完成方法。本篇文章我想把我的思路阐述清楚更为关键的是我想说清楚我是怎么运用底层思维、推理思维及联想思维想到最终方案的。第一步因为涉及到kmeans聚类我首先要做的是复习熟悉kmeans聚类算法。在这个过程中我了解到kmeans算法的迭代过程是这样的。a.先随机选取(或者更有策略地选取因为不是本篇文章的重点所以我们就采用随机选取吧)K个质心。b.对每条数据分别计算其距离K个质心的距离然后把距离最近的那个质心当做它的类别。c.因为b使得每条数据产出了它的类别在这里将每个类别的数据聚合在一起计算新的质心。d.不断迭代b和c直到终止条件。在这里我们使用的终止条件是所有数据距离他们所属质心的距离加和改变幅度在一个比较小的数值。第二步了解map reduce的各个细节。比如map task内部的细节、reduce task的细节shuffle阶段干了什么combiner阶段干了什么多路输出是什么。第三步了解了kmeans聚类算法和map reduce的各个细节。我们现在构思怎么使用我们手里拿到的砖块实现一栋楼房。首先对于第一步中的a和b我们可以想到在map task中加载质心文件然后对map task中的每个数据计算其距离K个质心的距离输出其类别是可以做到的。其次我们考虑如何实现c(注意为了不让大脑思考的东西一下子过于复杂我对算法的实现进行了细分也就是说在思考方案的时候我们每次只在大脑里考虑实现方案的一部分而不是想着一下子把整个算法完美无缺的实现出来一开始太过追求完美会让你的大脑沉迷于各种琐碎的细节中而失去了宏观的把控和思考你应该先从宏观进行把控然后再完善细节。我管这个过程叫做宏观思考任务拆解和细分、不完美后续迭代优化)。在首先中我们需要输出每个数据所对应的类别那么一下子可以想到的是把类别做为key然后同类别的数据会进入到同一个reduce里面然后在reduce里面计算每个key(类别)的新质心。这个思路是最直观也是最容易想到的。但是其有一个很坏的缺点。就是当你的k很小的时候比如3这个时候大量的数据会shuffle到3个reduce里面。你的reduce很可能会爆炸(k很小导致实际被使用的reduce也很少即便你的reduce num设置得很大)。那么还有没有更好的解决方案可以避免大量的数据shuffle到reduce中去呢注意这些数据的格式是数据类别_数据这样的格式的。这就涉及到对map reduce各个模块和细节的熟悉程度了。然后我们就赶快想啊我们把上述格式的数据shuffle到reduce中是为了计算新的质心而我们还不想让这些数据进行shuffle那么在map端可否进行新质心的计算呢或者是完成一部分的新质心计算工作呢我们联想到combiner正是在map端的reduce我们想到在map端combiner出现在两个地方一个地方是sortcombiner以让内存缓冲区中的数据先排序然后combiner以减小写入磁盘数据的大小。另外一个地方是merge过程在这个过程中多个spill文件会归并成一个大文件combiner会缩小数据规模以减小shuffle数据的大小。而在combiner过程中我们可以计算同类别数据他们的加和(这里我们把每条数据的形式当做一个向量这里的加和指的是向量求和)只要我们把有多少同类别数据进行加和也保留下来我们就能得到每个map task同类别数据他们的加和以及有多少同类别数据进行加和那么我们的方案就来了。在map端对同类别数据进行combine输出 类别 \t 同类别数据加和 \t 同类别数据的数目。然后这部分数据是很小的完全可以shuffle到reduce中去而每个数据所属类别这样的信息我们也要输出。对于我们来说要计算新质心前面的信息已经足够了后面的信息完全没有必要shuffle到reduce中去。所以我们的技术方案是每个数据及其类别信息就地输出(map端输出)而类别 \t 同类别数据加和 \t 同类别数据的数目这样的信息shuffle到reduce中以计算新的质心。然而然而map reduce框架并不支持这样的玩法(map的输出有一部分输出在map端就地输出有一部分shuffle到reduce)。那么退而求其次考虑到我们在这里需要reduce处理的数据已经很小了那么reduce完成的功能我们完全可以使用hadoop fs -get 把质心信息弄到本地再在本地进行计算。所以最终的方案是不使用reduce只使用map。在map端使用多路输出一路输出是每个map task输出的质心信息一路输出是每条数据所属的类别信息。第四步现在我们考虑终止条件怎么计算。实际上当完成第三步以后这个计算的构思就变得简单了。我们可以在第二步的时候计算每条数据距离它所属质心的距离然后在第三步的combiner中合并同类别数据距离质心之和。在map端同样输出到另外一路在之后我们只需要使用hadoop fs -get然后离线就可以计算得到终止条件所要求的那个数值。
延伸阅读

更多相关文章

2026/11/6 11:45:39

Linux中iptables设置详细

无论如何,iptables是一个需要特别谨慎设置的东西,万一服务器不在你身边,而你贸然设置导致无法SSH,那就等着被老板骂吧,呵呵。。。1.首先介绍一下指令和相关配置文件 启动指令:service iptables start 重启指令:serv…

2026/11/5 22:17:06

高等数学笔记 C8-9

八、线性代数 - 向量向量:n个独立的对象,线性。向量a-> xiyjzk有方向,有长度,叫做矢量。区别于标量。维数相同的才能加减法,平行四边形法则。向量的数量积(内积、点积),变成了一…

2026/11/7 23:35:25

邵阳哪里考电工证好 全国通用电工证怎么高效拿证

邵阳哪里考电工证好 全国通用电工证怎么高效拿证 工地太忙根本没时间复习考试,电工证考试内容又多又杂,很多一线工人一拖再拖,最后只能临时抱佛脚,结果一上考场就懵。其实,邵阳哪里考电工证好,关键不在于找哪家培训机构,而是 怎么高效利用时间备考…

2026/11/7 23:35:25

电子版本的电工证在哪考?学历不高怕报不上名?别慌

电子版本的电工证在哪考?学历不高怕报不上名?别慌 学历不高怕报不上名?别让“门槛”挡住你拿证的脚步。现在考电子版本的电工证, 在哪考 其实并不难,关键在于你是否了解正确的流程和渠道。随着国家对安全生产的重视,越来越多的岗位要求持证上岗,…

2026/11/7 23:35:25

考电工证要体检么保姆级教程:别被中介骗了,自己看这篇就够了

考电工证要体检么保姆级教程:别被中介骗了,自己看这篇就够了 你是不是也遇到过这样的情况?在网上看到一堆关于电工证的广告,有的说包过、有的说包办、有的还承诺帮你体检、考试、复审一条龙服务,但你心里又特别怕被坑, 不知道去哪报名怕被中介坑…

2026/11/7 23:30:25

澳大利亚学个电工证怎么转异地 电工证过期了全国通用怎么处理

澳大利亚学个电工证怎么转异地 电工证过期了全国通用怎么处理 证书过期了不知道怎么复审延期,这种焦虑你肯定遇到过。尤其是像【澳大利亚学个电工证】这类需要全国通用的证书,如果没及时办理复审,不仅影响工作,还可能带来严重的执业风险。下面我们就从实…

2026/11/7 14:54:47

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/7 0:03:08

郑州报考避坑指南:电工证和钳工证怎么选?实操考试心里没底怕挂科

郑州报考避坑指南:电工证和钳工证怎么选?实操考试心里没底怕挂科 实操考试心里没底怕挂科?你不是一个人。特别是在郑州这样的城市,很多施工企业负责人和一线作业人员在报考电工证和钳工证时都面临着同样的困惑。到底该考哪个证?哪个更适合自己?哪个证书…

2026/11/7 0:03:08

广西电工证办理流程全解析:外省证怎么转?在哪考最靠谱?

广西电工证办理流程全解析:外省证怎么转?在哪考最靠谱? 之前考的证在外省能不能转过来?这个问题我遇到太多了,今天就拿广西电工证办理流程来具体说说,别再走弯路了。广西电工证的报考、复审、继续教育这些环节,如果你不了解,真的会吃大亏,尤其对于从…

2026/11/7 0:03:08

电气电工证都有哪些保姆级教程

电气电工证都有哪些保姆级教程 你是不是正愁不知道去哪报名,怕被中介坑?别急,这篇保姆级教程专为河南初次报考人员准备,帮你搞清楚 电气电工证都有哪些 ,以及如何避开那些坑。 电气电工证都有哪些?别被五花八门的证书搞懵了…

2026/11/7 14:54:47

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑