原来很容易! 清晰解读MapReduce

MapReduce实战:500GB海量日志处理与性能调优指南 在数据爆炸的时代,海量数据处理是每个工程师都会面临的挑战。分布式计算通过“分而治之”的核心思想,将大规模任务分解到多台机器并行执行,解决了单机性能瓶颈。MapReduce作为经典的分布式计算框架,其编程模型清晰,将计算过程分为Map(映射)和Reduce(归约)两个阶段,通过Shuffle机制高效整合中间结果,特别适合离线批处理场景。这种技术为大数据分析、日志挖掘和商业智能提供了可靠的基础支撑。在实际工程中,面对500GB级别的服务器日志,合理运用MapReduce进行数据清洗、关键指标统计和异常模式识别, 阅读详情

       大数据时代的数据分析任务比传统的数据分析任务要复杂,因为往往涉及的数据量巨大,比如要分析汇总某个大型零售商在全国的销售数据,查看某个搜索引擎的特定词条的访问日志… … 通常来讲,我们的笔记本电脑可以同时干很多事儿,比如听音乐,编辑Word文档,下载电影,这些都可以同时进行,为什么呢?因为这些程序任务所处理的数据量规模小。而对于大规模的数据处理任务来说,就不是一台电脑同时做许多任务了,而是许多电脑同时做一件任务的逻辑关系。假如你写了一个程序,然后让你的电脑来跑一个比较大的数据量(例如把百度百科上所有的词条分析一遍…),那么你的电脑需要很长很长的时间来做这件事…大多数情况下,数据还没跑完,你的电脑就被累死了(死机…)。那么怎么办?就有人考虑到了用许多台电脑来同时完成这个任务。这就引入了并行计算的概念。

      

      许多电脑同时做一件复杂的任务,涉及很多问题:比如,这个任务首先要分解成许多子任务,然后这些小任务要在这些电脑上面去分配,然后这些电脑完成了任务之后反馈的结果还要汇总,同时还要考虑如果这些电脑的故障异常等问题怎么去解决…MapReduce就是这样的一个编程模型,一个复杂的任务按照这个抽象的模型去实现,就可以有效进行并行计算。

      

       这个编程模型究竟是怎样的呢?他实际上说了这样一个事儿:已知手头上有许许多多(几万也许,甚至几十万…)PC机,每一个可能很挫,但是如果这些PC机团结协作起来,可以PK一个大型的工作站。现在有个复杂的任务,需要处理海量的数据。数据在哪里?数据实际上是随机地存储于这些个PC机器上的。我们不需要统一地把数据一起存到一个超大的硬盘上,数据可以直接散布在这些个PC上,这些PC自身不仅是许许多多个处理器,也是许许多多个小硬盘。

 

        这些PC机器分为三类,第一类称为Master,Master是负责调度的,相当于工地的工头。第二类叫Worker,相当于干活儿的工人。Woker进一步分为两种,一种Worker叫Mapper,另一种叫Reducer。假设我们有一个巨大的数据集,里面有海量规模的元素,元素的个数为M,每个元素都需要进行同一个函数处理。于是Master将M分成许多小份,然后每一份分给一个Mapper来做,Mapper干完活儿(执行完函数),将自己那一份儿活儿的结果传给Reducer。Reducer之后统计汇总各个Mapper传过来的结果,得到最后的任务的答案。当然,这是最简单的表述,因为实际上Master的任务分配过程是很复杂的,会考虑任务时间?任务是否出错?网络通讯负担等等等等许多问题,这里不作赘述。

    

        假设原始任务的Input个数为M,output个数为N。Mapper的个数为P,Reducer的个数为R。则有关系,M〉P〉N〉R。也就是说,一个Mapper要做M/P个input的处理任务,一个Reducer要做N/R个output的汇总工作。每个output有一个编号,假设为o1,o2,o3…oN。当一个Mapper处理完自己那一份儿input之后,每个input i被处理后转化为一个中间结果m。这个m很自然地会若干output(如:m1对应o1,o3,o5) 会有贡献。每个Reducer负责一个或多个o的汇总处理。假如某个Reducer负责o1,o2,o3,那么凡是对应到o1,o2,o3的被处理过的m都会传给这个Reducer做汇总处理。

  

          举例来说,统计一系列文档中的词频。文档数量规模很大,有1000万个文档,英文单词的总数可能只有3000(常用的)。那么input M=10000000,output N=3000。于是,我们搞了10000个PC做Mapper,100个PC做Reducer。每个Mapper做1000个文档的词频统计,统计之后把凡是和同一个word相关的统计中间结果传给同一个Reducer做汇总。比如某个Reducer负责词表中前30个词的词频统计,遍历10000个PC,这10000个Mapper PC把各自处理后和词表中前30个词汇相关的中间结果都传给这个Reducer做最终的处理分析。至此MapReduce最核心的流程已经说明白了。其实MapReduce讲的就是分而治之的程序处理理念,把一个复杂的任务划分为若干个简单的任务分别来做。另外,就是程序的调度问题,哪些任务给哪些Mapper来处理是一个着重考虑的问题。MapReduce的根本原则是信息处理的本地化,哪台PC持有相应要处理的数据,哪台PC就负责处理该部分的数据,这样做的意义在于可以减少网络通讯负担。最后补上一副经典的图来做最后的补充,毕竟,图表往往比文字更有说服力。

 

更多精彩内容欢迎关注作者知乎专栏:

https://www.zhihu.com/people/xiao-nu-43/activities

 

 

 

【项目案例】前后端分离项目 【Web图书管理系统 】SpringBoot + Vue + Element UI + Mysql Web图书管理系统 阅读详情

相关推荐

机器人开发路线

通过这个路线图,你可以在6个月内完成从原型到试产的全流程。建议初期采用敏捷开发模式,每两周迭代一个核心功能模块。在硬件集成遇到瓶颈时,推荐参考。

woody218的博客 745

MapReduce详解

第1章 MapReduce入门 1.1 MapReduce定义 Mapreduce是一个分布式运算程序的编程框架,是用户开发“基于hadoop的数据分析应用”的核心框架。 Mapreduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个hadoop集群上。 1.2MapReduce优缺点 1.2.1 优点 1.MapReduce易于编......

优质后端技术知识记录 1万+

【gcc】跨版本兼容实战:高版本编译程序在低版本glibc环境下的部署方案

本文针对高版本gcc编译的程序在低版本glibc环境下部署的兼容性问题,提供了四种实战解决方案:静态编译的局限性、容器化部署的优雅方案、使用Devtoolset工具链的官方支持,以及最通用灵活的打包依赖SO发布方案。重点剖析了通过设置RPATH和Interpreter或使用patchelf工具,实现程序与自带库的独立部署,有效解决glibc版本鸿沟。

weixin_29237635的博客 362

什么是MapReduce,一文带你读懂

什么是MapReduce,MapReduce的思想是什么,怎么理解MapReduce

Chad_it的博客 2464

贝塞尔曲线在机器人路径平滑中的实战应用与优化

本文深入探讨了贝塞尔曲线算法在机器人路径平滑中的核心应用。通过对比G1CBS与G2CBS两种方法,详细阐述了如何实现从切线连续到曲率连续的平滑优化,以满足不同机器人对运动平稳性和效率的需求,并提供了完整的Python代码实现与关键参数调优指南。

weixin_29051811的博客 307

避坑指南:CentOS7.9安装Python3.8.16后yum报错的快速修复方法

本文详细解析了在CentOS7.9系统安装Python3.8.16后导致yum报错的原因,并提供了快速修复方法。通过修改yum配置文件指向Python2解释器,以及使用alternatives工具管理多版本Python,有效解决兼容性问题。同时推荐使用虚拟环境隔离开发环境,避免影响系统稳定性。

weixin_26908317的博客 497

MapReduce的理解

1 什么是MapReduce?   Map本意可以理解为地图,映射(面向对象语言都有Map集合),这里我们可以理解为从现实世界获得或产生映射。Reduce本意是减少的意思,这里我们可以理解为归并前面Map产生的映射。   2 MapReduce的编程模型   按照google的MapReduce论文所说的,MapReduce的编程模型的原理是:利用一个输入key/value对集合来产生一个...

weixin_33910759的博客 343

基于FPGA的FIR数字滤波器设计

clear;close all fc=1/4;fs=5/16; %输入给定指标 Rp=3;As=60;Fs=2; f=[fc,fs];m=[1,0]; %计算remezord函数所需参数f,m,dev dev=[(10^(Rp/20)-1)/(10^(Rp/20)+1),10^(-As/20)]; [N,fo,mo,W]=remezord(f,m,dev,Fs); %确定remez函数所需参数 hn=remez(N,fo,mo,W);...

FPGA/MATLAB学习教程/源码/项目合作开发 9455

MapReduce的通俗理解与入门

看这篇文章请出去跑两圈,然后泡一壶茶,边喝茶,边看,看完你就对hadoop 与MapReduce的整体有所了解了。【前言】Hadoop是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce、分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关项目也很丰富,包括ZooKeeper,Pig,Chukwa,Hive,Hbase,Mahout,flume等...

Little_Fire的博客 3万+

华为OD机试:使用Ascend C语言实现Matmul与LeakyReLU融合算子的全流程设计与优化解析

通过本文的详细解析,相信你已经对华为OD机试中基于Ascend C语言的Matmul+LeakyReLU融合算子的设计与实现有了深入的理解。我们不仅从理论上探讨了融合算子的核心优势,还通过实际的代码示例演示了如何一步步完成算子的实现与优化。融合算子在AI算子开发中的应用,尤其是在处理大规模矩阵计算的场景中,能够显著提升计算效率,优化内存占用,并减少数据传输的开销。通过合理的Tiling策略设计,我们还能够充分利用多核处理器的算力,进一步提升AI模型的训练与推理性能。

qq_38334677的博客 661

vLLM显存逆向计算:如何得到最优gpu-memory-utilization参数

本文提出了一种**逆向工程**的思路:基于vLLM显存占用的底层机制,通过精确计算模型权重、KV缓存、激活内存等各组件的显存需求,**倒推出最优的gpu-memory-utilization参数**。这种方法让我们能够在部署前就准确预估资源需求,实现一次配置、稳定运行。本文我们将从vLLM显存计算的核心原理出发,构建完整的倒推计算框架和源码,并通过大量实验验证其准确性(会有误差,但基本可以直接使用)。

羊城迷鹿的博客 1949

MapReduce的学习与理解

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",和它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。 MapReduce擅长处理大数据,它为什么具有这

m0_61870641的博客 459

把 ABAP writable CDS view entity 讲透:从只读建模到可写模型的 ABAP CDS 新能力

摘要:SAP引入的writable CDS view entity突破了传统CDS视图只读的限制,允许通过ABAP SQL直接进行数据修改。该特性通过WRITABLE关键字定义,使CDS视图成为与数据库表同等级别的可写对象。其核心价值在于为数据集成、中间层同步等场景提供结构化写入入口,但需注意不应绕过业务规则。最佳实践建议保持底层表结构简单映射,避免复杂变形。这一特性标志着CDS从单纯消费模型向双向数据交互能力的演进,为ABAP开发提供了新的数据边界设计思路。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1313

Hadoop 03——核心之MapReduce入门

文章目录1. MapReduce 介绍1.1 MapReduce 设计构思和框架结构1.2 MapReduce 框架结构2. MapReduce 编程规范Map 阶段 2 个步骤Shuffle 阶段 4 个步骤Reduce 阶段 2 个步骤3. WordCount案例实现与分析Step 1. 数据格式准备Step 2. MapperStep 3. ReducerStep 4. 定义主类, 描述 J...

zzhou——blog 952

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

[Hadoop源码解读](二)MapReduce篇之Mapper类(转)

csdn用的不爽的地方就是不能转载,  这篇博主写的很清晰,留着看~   前面在讲InputFormat的时候,讲到了Mapper类是如何利用RecordReader来读取InputSplit中的K-V对的。   这一篇里,开始对Mapper.class的子类进行解读。   先回忆一下。Mapper有setup(),map(),cleanup()和run(

runlin的专栏 803

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

MapReduce核心源码分析之MapTask Input(都可以自己独立走一遍源码,并对MapReduce Map的Input有底层实现的了解)

经过上篇文章的源码分析,我们已经大致知道了客户端提交任务都做了什么, 本篇是来继续分析,Map Task,看完Map Task的核心源码,我相信会对以后的学习产生很大的帮助 我这里工具是IDEA,Hadoop是2.7.2, 首先,先来分析简单的Map的输入Input过程,后面再来分析OutPut过程 Map Input核心源码分析 前面可以知道,在集群环境运行,我们的客户端会联系ResourceM...

weixin_44022416的博客 460

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

[tim带你学]MapReduce阶段

分布式计算框架MapReduce Hadoop组成 Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统,对海量数据的存储。 Hadoop MapReduce:一个分布式的资源调度和离线并行计算框架。 Hadoop Yarn:基于HDFS,用于作业调度和集群资源管理的框架。 A组 分布式并行计算框架MapReduce 什么是计算框架? 是指实现某项任务或某项工作从开始到结束的计算过程或流的结构。用于去解决或者处理某个复杂的计算问题。 什么是并行计算框架? 是指为更快的计算某项任务或某项

TIM_Zhang1122的博客 1049

MapReduce中Shuttle过程的理解

MapReduce中Shuttle过程的理解--转自:http://langyu.iteye.com/blog/992916             Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方。要想理解MapReduce, Shuffle是必须要了解的。我看过很多相关的资料,但每次看完都云里雾里的绕着,很难理清大致的逻辑,反而越搅越混。前段时间在做MapReduce j

679

Hadoop之MapReduce03【wc案例流程分析】

既已说到spring cloud alibaba,那对于整个微服务架构,如果想要进一步地向上提升自己,到底应该掌握哪些核心技能呢?就个人而言,对于整个微服务架构,像RPC、Dubbo、Spring Boot、Spring Cloud Alibaba、Docker、kubernetes、Spring Cloud Netflix、Service Mesh等这些都是最最核心的知识,架构师必经之路!下图,是自绘的微服务架构路线体系大纲,如果有还不知道自己该掌握些啥技术的朋友,可根据小编手绘的大纲进行一个参考。

2401_85358350的博客 702

【推荐】Hadoop MapReduce八大步骤以及Yarn工作原理详解

不错的总结:Hadoop MapReduce八大步骤以及Yarn工作原理详解

大树叶 技术专栏 264

Hadoop MapReduce

Hadoop MapReduce 理解mapreduce思想 核心:分而治之 先分再合 两个阶段 map阶段(分):如果任何可以拆分并且没有依赖 那么就把复杂的任务拆分成小任务 拆分成小任务之后 可以并行计算 提高处理效率 reduce阶段(合):把map阶段的各个局部结果进行汇总 得到最终的结果 来源:来源于生活 包括Google和hadoop团队在内 都是把这种思想提炼处理 应用于大数据处理 Hadoop MapReduce设计构思 如何面对大数据的处理场景

BigData 386

[Hadoop源码解读](六)MapReduce篇之MapTask类<转>

MapTask类继承于Task类,它最主要的方法就是run(),用来执行这个Map任务。   run()首先设置一个TaskReporter并启动,然后调用JobConf的getUseNewAPI()判断是否使用New API,使用New API的设置在前面[Hadoop源码解读](三)MapReduce篇之Job类 讲到过,再调用Task继承来的initialize()方法初始化这个tas

yongjian_luo的专栏 812

MapReduce:详解Shuffle过程

原文地址:http://langyu.iteye.com/blog/992916?page=3#comments /**  * author : 冶秀刚  * mail     : dennyy99@gmail.com  */          Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方。要想理解MapReduce, Shuffle是必须要了解的。我看过

liyongke89的专栏 444

Hadoop阅读笔记(四)——一幅图看透MapReduce机制

  时至今日,已然看到第十章,似乎越是焦躁什么时候能翻完这本圣经的时候也让自己变得更加浮躁,想想后面还有一半的行程没走,我觉得这样“有口无心”的学习方式是不奏效的,或者是收效甚微的。如果有幸能有大牛路过,请指教如何能以效率较高的方式学习Hadoop。   我已经记不清圣经《hadoop 实战2》在我手中停留了多久,但是每一页每一章的翻过去,还是在脑壳里留下了点什么。   一段时间以来,我还是通...

weixin_34257076的博客 69

从MapReduce到AI工程:分布式系统思维的演进与传承

分布式系统作为处理海量数据的核心技术,其核心思想是通过抽象与分解实现规模化计算。以MapReduce为代表的经典框架,将复杂任务抽象为Map和Reduce阶段,自动处理数据分片、任务调度和故障容错,奠定了大数据处理的基础范式。这种系统性工程思维不仅催生了Hadoop、Spark等开源生态,更深刻影响了微服务、容器化等现代架构。随着AI时代的到来,工程挑战从构建底层基础设施转向高效组合大模型等智能组件。尽管技术栈变迁,但可观测性、容错设计和简单性抽象等核心工程原则依然至关重要。在提示工程与模型运维成为新焦点的

weixin_30902251的博客 370

从YouTube视频数据集看用户偏好:Hadoop+MapReduce数据分析全流程

本文通过一个完整的实战案例,详细解析了如何使用Hadoop和MapReduce技术分析YouTube视频数据集,以洞察用户内容偏好。文章涵盖了从数据获取、预处理、核心MapReduce代码编写,到性能调优、结果可视化与业务解读的全流程,为大数据分析提供了可复现的实践指南。

web99的专栏 519
上一篇: 大数据の协同过滤——发现新的兴趣点
下一篇: 浅谈LDA主题模型(一)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字化刘老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值