数据处理技术-MapReduce入门

大数据处理技术:MapReduce综合实训 (1)WordCount词频统计 (2)HDFS文件读写 (3)倒排索引 (4)网页排序——PageRank算法 阅读详情

上一篇博客,我们已经复习了Hadoop的HDFS组件。那么另外一个重要的组件MapReduce也必须要介绍一下了。在本篇博客中,我会详细讲解MapReduce的相关概念。

分布式并行计算

提到MapReduce就不得不先说分布式并行计算,就像提到HDFS必须先提一嘴分布式文件系统。
MapReduce是分布式并行计算概念的具体实现。什么是分布式并行计算?

  • 分布式并行计算将计算任务分布到多个计算机上并行执行。
  • 一个人在厨房做饭,刷碗、洗菜、切菜、炒菜,按照顺序一个一个执行这是串行;多来了两个人,三个人分工,一个人刷碗洗菜、一个人切菜、一个人炒菜,洗完一个菜就能去切菜,切完菜就能炒菜。有人可能说,啊,那这有顺序的呀,除了每个人任务量减少了,没有什么特别的优势啊?假如我们要做三道菜呢?切完第一道菜就能炒第一道菜,炒第一道菜的同时,又可以切第二道菜。是不是这样呢?如果任务量变大(做的菜品变多),在同一时刻每个人都在工作,那么并行的优势就凸显出来了。

在这里插入图片描述
可见,如果是一个人做这些事情,那么做三个菜需要4*3=12个时间段;
如果是三个人做这些事情,那么做三个菜只需要5个时间段。

MapReduce是什么

作为Hadoop组件,我们已经了解了如何存储数据(HDFS), 存储完了肯定不能干放着啊,那不然就是数据浪费,空占资源。数据处理,是大数据必经之路,MapReduce就是来干这个的。(注意,MapReduce不止可以处理HDFS的数据,其他数据库或文件系统的数据也是可以处理的;同理HDFS的数据也可以用其他分布式并行计算框架处理。HDFS和MapReduce是紧密集成的,其他的可能还要额外配置,所以这里配套学习。原装就是香!)

从名称就能看出来,MapReduce主要是由两个函数来执行:Map和Reduce。
两个函数也可以看作是两个步骤,下面简单介绍:

Map阶段

在这个阶段,输入数据被分割成独立的小数据块,然后并行地处理。Map的任务是处理输入数据(通常是键值对形式),并为每一条输入数据生成一个或多个中间键值对。

Reduce阶段

在这个阶段,所有具有相同键的中间数据被送到同一个Reduce函数。Reduce函数处理这些数据,合并它们为更小的数据集或汇总结果。最终,输出结果通常是处理过的数据总结或报告。

我们前面说,MapReduce是分布式并行计算框架,并行意味着同一个计算任务可能分布在不同的节点上,那么Map处理得到的键值对也就分布在不同的节点上。如果我们需要处理某一类键值对,是不是得先将相同的键值对进行汇总呢?可以看前面写的Reduce阶段任务——“所有具有相同键的中间数据被送到同一个Reduce函数”。那么这个过程就是由Shuffle来完成。
在这里插入图片描述

Shuffle阶段

系统自动处理Map生成的所有中间数据,将具有相同键的数据分组,为接下来的Reduce阶段做好准备。通过将相同键的所有数据值汇总到一个 Reduce 任务,可以确保在数据处理时的完整性和一致性。
具体工作:
1. 排序(Sorting):Map 任务完成后,每个节点上的输出被排序。如果一个 Map 任务处理了多个键,那么输出会按键的字典顺序排序。
2. 分组(Partitioning):排序后的数据根据键被分配到特定的 Reduce 任务。这通常是通过使用哈希函数来完成的,确保所有相同键的数据都会发送到同一个 Reduce 任务。
3. 传输(Transfer):一旦数据被排序和分组,它们就会被发送到相应的 Reduce 节点。这一步涉及网络传输,因为 Map 任务和 Reduce 任务可能不在同一个物理节点上。

在这里插入图片描述

MapReduce的节点

采用Master/Salve框架,包括1个Master和若干个Slave。是不是感觉和HDFS很像?不要和HDFS的NameNode&DataNode搞混噢。在集群中,一个节点是既可以作为HDFS的数据节点/名称节点,也可以作为MapReduce的Master节点/Slave节点的。但是这之间并没有必然的联系,没有“NameNode必须执行Master节点的工作”这一说。具体怎么部署的要看实际情况,是否将 Master 节点和 NameNode 放在同一台服务器上取决于具体的配置和集群的规模。(这里简单提一嘴,放在一起的优势和缺点:对于小型或初级的 Hadoop 集群,将 Master 节点的多个组件放在同一台服务器上可以降低硬件成本;但是NameNode和Master执行的任务都是资源密集型应用,在同一台机器上运行时可能会互相竞争CPU、内存和网络带宽资源,从而影响性能。)

Master上运行JobTracker, Slave上运行TaskTracker
在这里插入图片描述

JobTracker

在旧版Hadoop中,JobTracker负责管理MapReduce作业的调度和资源分配;在Hadoop 2.x及更高版本中,这一角色由YARN的ResourceManager担任。
JobTracker主要以下几个功能:

  1. 作业管理
    JobTracker 是所有 MapReduce 作业的中心管理点。当客户端提交一个 MapReduce 作业时,JobTracker 负责接收作业,并初始化作业的执行环境。
  2. 任务调度
    JobTracker 根据作业的需求和集群的资源状况决定作业的调度和执行。它决定何时运行作业、在哪些 TaskTracker 节点上运行作业的 Map 和 Reduce 任务。JobTracker 需要平衡集群负载,优化作业执行的效率。
  3. 监控和状态更新
    JobTracker 持续监控所有 MapReduce 任务的进展,包括 Map 任务和 Reduce 任务。它记录每个任务的状态,并向客户端提供状态更新。如果 TaskTracker 失败或任务执行失败,JobTracker 负责重新调度任务到其他节点。这个也像NameNode和DataNode之间发送心跳信号汇报存活状态一样,存在这种心跳信号机制。这种机制是 MapReduce 框架中的一部分,用于维持 JobTracker 对集群中各个 TaskTracker 状态的实时了解,并管理集群的健康状况。同时心跳信息也可以用来向JobTracker 报告节点的资源使用情况,如 CPU 和内存使用率,这有助于 JobTracker 更好地调度作业和管理资源。
  4. 故障恢复
    在任务执行过程中,如果某个 TaskTracker 节点出现故障,JobTracker 将重新调度该节点上的任务到其他健康的 TaskTracker 节点上。这保证了即使部分节点失败,作业也能继续执行,从而提高了整个系统的可靠性。
  5. 资源管理
    虽然 JobTracker 不像 Hadoop 2.x 中的 YARN 那样具有高级的资源管理器,但它依然需要管理和分配资源,如 CPU、内存和磁盘空间,确保 MapReduce 作业能有效利用集群资源。
  6. 通信
    如前文所说,JobTracker 与每个 TaskTracker 保持定期的心跳通信,以监控集群中各节点的健康状况。此外,它还处理来自客户端的查询,例如作业状态查询或停止作业的请求。

TaskTracker

在旧版Hadoop中,TaskTracker负责执行MapReduce作业中的任务;在Hadoop 2.x及更高版本中,这一角色由NodeManager担任,负责管理单个节点上的资源使用情况和任务执行。
TaskTracker是JobTracker和Task之间的桥梁。JobTracker于TaskTracker, Task之间采用RPC协议进行通信。
主要功能如下:

  1. 任务执行
    TaskTracker 负责在其所在节点上执行 JobTracker 分配的 Map 和 Reduce 任务。每个 TaskTracker 可以并行执行多个任务,具体数量取决于其配置的容量和可用资源。拿前面做饭的例子来说,某个节点是负责“切菜”的,那么它是不是可以同时切两个菜呢?答案是可以的。它甚至可以同时切三个、四个或者更多的菜,这都取决于JobTracker给它分配的任务情况。
  2. 状态汇报
    发送心跳。TaskTracker 定期向 JobTracker 发送心跳信号,这不仅表明它还活跃,同时也汇报正在执行的任务的状态。这包括任务的进度、成功或失败的状态等。
  3. 资源管理
    TaskTracker 管理其所在节点的资源,如 CPU、内存和磁盘空间的使用。它需要确保在不超过节点能力的情况下运行任务,合理调配资源以最大化节点的工作效率。
  4. 数据本地化
    TaskTracker 尽可能在数据所在节点上执行 Map 任务,这样可以减少网络传输,提高处理速度。这意味着如果一个节点既存储了数据块,又执行了处理这些数据块的 Map 任务,那么这个过程不需要网络传输,因为数据已经在本地节点的 HDFS 部分上。JobTracker 在分配任务时会考虑数据的位置,尽量将任务分配到存储相应数据块的节点上。
  5. 错误处理
    如果在执行任务时遇到错误,TaskTracker 会尝试重启任务。如果重试次数超过预定阈值,它会标记任务失败,并将错误信息报告给 JobTracker。
  6. 日志记录
    TaskTracker 为其执行的每个任务保留详细的日志信息,这对于调试和优化作业执行是必需的。
MapReduce大数据处理技术课程复习提纲 Mapreduce课程接近尾声,在此将之前课上的内容做一个简要的总结。 阅读详情

相关推荐

大数据领域MapReduce与其他数据处理技术的对比分析

随着数据规模突破ZB级,分布式数据处理技术成为大数据领域核心基础设施。MapReduce作为首个大规模分布式计算框架,奠定了批量数据处理的技术范式,但面对实时计算、交互式分析等新兴场景,衍生出Spark、Flink、Storm等多样化技术栈。MapReduce的技术本质与架构局限批处理框架(Spark)与流处理引擎(Flink/Storm)的设计哲学差异不同技术在吞吐量、延迟、资源利用率等维度的性能对比典型业务场景下的技术选型策略。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 1019

MapReduce中数据处理详解

作业提交阶段对于每一种InputFormat都会提供两个方法: getSplits() 用来分片,一般来说对于普通的文件,是每个Block一个分片;不同的输入数据类型有完全不同的分片方法。 createRecordReader() 用来提供RecordReader对于输入的数据首先就是要分片,每一片对应着一个Mapper,Mapper数量总是等于分片数,

与数据和AI有关的东西 1175

大数据入门的关键技术

它将数据分散存储在多个节点上,确保数据的高可靠性和可扩展性。2.1 批处理:Apache Hadoop的MapReduce框架是一种流行的批处理技术,它可以将大数据集划分为小的数据块,并在分布式环境中并行处理。1.2 列式存储:列式存储数据库(如Apache HBase)可以提供快速的读写性能和高度压缩的存储,特别适用于需要实时查询和分析大规模数据的场景。3.2 文本分析:通过自然语言处理技术,从文本数据中提取有用的信息,如情感分析、主题建模和实体识别。在大数据处理中,有效的数据存储是至关重要的。

AlianBlank的博客 90

【MapReduce分布式并行编程模型】

在2005年前后,CPU领域的“摩尔定律”逐渐失效,为了提高程序的运行性能,人们就不能把过多的希望寄托在提升CPU性能上来,因此人们开始着眼于分布式并行编程模型来提高程序的性能,MapReduce就是由谷歌公司率先提出的分布式并行编程模型。补充:传统的程序都是以单指令、单数据流的方式顺序执行,这虽然符合人们日常的思维逻辑,但是程序的性能受到了很大的限制。分布式并行程序可以运行由大量计算机构成的集群上,从而可以充分利用集群的并行计算的能力,同时通过向集群中增加新的计算节点就可以很容易的实现算力的扩充。

Lucky.Mr.Li的博客 476

从波形到代码:手把手调试GaN图腾柱PFC的过零点切换与软启动策略

本文详细解析了GaN图腾柱无桥Boost PFC电路在过零点切换与软启动策略中的调试方法。通过波形分析、代码实现和寄存器配置,提供了解决误开通、震荡波形等问题的实用方案,帮助工程师优化电源设计效率与可靠性。

weixin_30831529的博客 425

Python实战:5分钟搞定高德地图API批量地址转经纬度(附完整代码)

本文提供了一套完整的Python解决方案,利用高德地图Web服务API,实现批量地址到经纬度坐标的自动化转换。文章包含从API申请、核心代码编写到错误处理与性能优化的全流程实战指南,并附赠数据可视化方法,帮助数据分析师和开发者快速提升地理信息处理效率。

weixin_29047919的博客 583

MapReduce并行计算

MapReduce

DOCUVIX的博客 715

从X86到ARM:全面解析服务器CPU架构的演变与未来趋势

本文深入解析了服务器CPU架构从X86到ARM的演变历程与未来趋势。文章从CISC与RISC两种设计哲学切入,分析了X86凭借生态建立的帝国地位及其面临的功耗挑战,并重点阐述了ARM架构凭借其卓越的能效比优势,正从移动端向数据中心市场发起冲击。未来,异构计算、软硬协同与专用芯片将成为服务器CPU发展的核心方向。

gold的博客 1128

MapReduce并行计算构架流程

8.reduce 合并下载的所有文件,并进行排序和聚合操作,形成新的 key-value 数据;5. 每当缓冲区数据达量达到阈值(80%)的时候,就进行一次性溢写操作,把数据写入磁盘;4. map 的分析结果会先写入内存缓存区,在内存缓冲区中进行分区和排序;9. 聚合后的 key-value 依次输入 reduce 程序进行汇总;2. 切片中的数据转换为 key-value 格式输入 map 程序;1. 对数据进行切片,决定启动多少个 map 程序;3. map 程序处理输入的数据,并输出分析结果;

小小王的博客 1478

手机相机Tuning专项调优(一):基础流程与图像主观评价标准建立实战解析

本篇为手机相机系统“Tuning专项调优”系列的开篇,深入剖析了当前手机相机Tuning的基本流程与图像主观评价标准的构建方法。结合实际工程经验与最新业界案例,详细介绍ISP调优和3A控制中涉及的主观评价标准,如锐度、色彩饱和度、噪声感知等,并提出一套可工程化落地的标准制定与评测实践体系,帮助工程师有效提升图像品质。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1936

isaaclab无法识别NVIDIA显卡,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!    📌 特别说明: 文中部分技术问题来源于真实生产环境及网络公开案例,均经过精挑细选与系统化整理,并结合多位一线资深架构师和工程师多年实战经验沉淀,提

**My Coding Family** 1147

MapReduce(分布式并行计算框架)

理解MapReduce思想 需求:有一个五层的图书馆,需要获取图书馆中一共有多少本书。 只有一个人时,是能一本一本的数!工作量巨大,耗时较长。 分配五个人由你支配。此时你怎么支配? 五个人,每个人数一层的书量,最终将五个人的量汇总求和,就是图书馆中最终书的数量。 MapReduce的思想核心是“分而治之,先分后合”。即将一个大的、复杂的工作或任务,拆分成多个小的任务,并行处理,最终...

Lif6068的博客 2193

我的世界进阶模组开发教程——制作机械动力附属模组

摘要: Create是Minecraft的机械动力模组,其代码结构分为多个关键模块: 数据生成系统:通过CreateRecipeProvider基类实现配方自动化生成,支持多步骤序列化装配配方(SequencedAssemblyRecipeGen),采用建造者模式链式调用; 注册管理:CreateRegistrate扩展了Registrate库,统一管理方块、流体、实体等注册,集成标签页分类和工具提示定制; 伤害系统:DamageTypeTagGen为机械伤害(如钻头、风扇火焰)定义原版兼容的标签; 客户端

qq_24992377的博客 2085

开源项目推荐:无服务器架构下的MapReduce实现

开源项目推荐:无服务器架构下的MapReduce实现 在大数据处理领域,效率与成本一直是开发者们关注的焦点。今天,我们向您推荐一款利用AWS云服务打造的创新解决方案——Serverless Reference Architecture: MapReduce。这个开源项目以 AWS Lambda 和 Amazon S3为核心,彻底改变了我们对传统MapReduce框架的认知,提供了一个灵活、高效且极...

gitblog_01067的博客 979

单片机设计具备断电记忆功能的计时器

本文介绍了如何设计一款具备断电记忆功能的计时器,利用单片机和EEPROM存储器实现了计时器值的保存和恢复。当然,在实际的设计中还需要考虑其他因素,如电源管理、时钟精度等,以确保计时器的正常运行和准确性。选择合适的单片机:在设计计时器时,我们需要选择一款具备存储功能的单片机,以便在断电后能够保存计时器的状态。可以优化显示方式,使用更加直观的界面来展示计时器的值;函数中,我们首先从 EEPROM 中读取计时器的初始值,然后在一个无限循环中每秒钟增加计时器的值,并将新的值写入 EEPROM 中。

RlDart的博客 1094

Python爬虫实战:利用Selenium与Playwright抓取美团外卖数据

在当今大数据时代,网络数据采集已成为商业分析和市场研究的重要手段。本文以美团外卖平台为例,详细介绍如何使用Python最新爬虫技术(Selenium、Playwright)进行数据采集,并探讨相关技术原理、反爬应对策略及数据存储方案。通过5000+字的详细讲解和完整代码示例,帮助读者掌握现代网络爬虫开发的核心技能。本文详细介绍了使用Python最新爬虫技术采集美团外卖数据的完整流程,涵盖了从环境配置、页面分析到数据存储的全链路解决方案。

2201_76125261的博客 2550

视频教程-大数据之Mapreduce-大数据

大数据之Mapreduce 云知梦创始人,国际架构师,11年互联网培训和开发...

weixin_30716891的博客 549

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

How to start learning Hadoop and Mapreduce?

How to start learning Hadoop and Mapreduce? up vote 11 down vote favorite 7 How to start learning Hadoop and Mapreduce? Is there any tutorial on hardware requirement a

hiphopmattshi的专栏 947

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

spark入门_Hello Spark! | Spark,从入门到精通

欢迎阅读美图数据技术团队的「Spark,从入门到精通」系列文章,本系列文章将由浅入深为大家介绍 Spark,从框架入门到底层架构的实现,相信总有一种姿势适合你,欢迎大家持续关注:) / 什么是 Spark? / Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架,是专为大规模数据处理而设计的快速通用的大数据处理引擎及轻量级的大数据处...

weixin_39984442的博客 370

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

MapReduce的通俗理解与入门

转载自:MapReduce的通俗理解与入门

princeteng's blogs 180

mapReduce入门知识点

xianrenqiu1234的博客 174

MapReduce入门&基础操作

MapReduce入门&基础操作

u012632105的博客 115

hadoop入门--简单的MapReduce案例

转载:http://my.oschina.net/itblog/blog/275294

wanghao_0807的博客 423

头歌 当HBase遇上MapReduce

头歌 当HBase遇上MapReduce 本文介绍了HBase与MapReduce结合的两种实现方式:1) 基础实现通过TableMapper直接读取HBase表数据,经MapReduce处理后写入目标表;2) 进阶实现从文件读取数据,经Mapper处理后通过TableReducer输出到HBase表。两种方法都完成了词频统计的核心功能,包括数据拆分、单词计数和结果聚合。代码展示了HBase表操作、MapReduce任务配置等关键技术要点,通过工具类简化了HBase与MapReduce的集成过程。

一名敲代码的苦13程序员 628

HDFS+ MapReduce 数据处理与存储实验

文章目录实验二 :HDFS+ MapReduce 数据处理与存储实验1. 实验目的2. 实验环境3. 实验内容3.1 HDFS部分3.1.1 上传文件3.1.2 下载文件3.1.3 显示文件信息3.1.4 显示目录信息3.1.5 删除文件3.1.6 移动文件3.2 MapReduce 部分3.2.0 Mapreduce 原理3.2.1 合并和去重3.2.1.1 编写Merge.java代码3.2.1.2 编译执行3.2.2 文件的排序3.2.2.1 编写Sort.java 代码3.2.2.2 编译执行

zyw2002的博客 6515

MapReduce快速入门系列(1) | 什么是MapReduce

随着HDFS系列的完结,下面就到了MapReduce系列了,很荣幸各位小伙伴们能够继续一如既往的观看博主的博文。 目录1. MapReduce的核心思想2. 分布式并行计算框架MapReduce3. MapReduce设计构思1. 如何对付大数据处理:分而治之2. 构建抽象模型:Map和Reduce3. 统一构架,隐藏系统层细节 1. MapReduce的核心思想 MapReduce思想在生...

不温卜火 5295
上一篇: 数据处理技术-HDFS
下一篇: 右键没有WinRAR添加到压缩文件的解决办法
Ayu阿予
博客等级 码龄5年 456粉丝 47原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

Ayu阿予

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

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

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

打赏作者

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

抵扣说明:

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

余额充值