版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
分布式计算框架——MapReduce技术CONTENTS目录01
一、MapReduce核心思想与编程模型02
二、MapReduce框架执行流程03
三、MapReduce作业的运行机制04
四、MapReduce编程实例:WordCount05
五、MapReduce关键概念与优化总结一、MapReduce核心思想与编程模型01MapReduce核心思想:分而治之
核心思想定义MapReduce是Hadoop核心技术,通过“分”(Map拆分任务)与“合”(Reduce汇总结果)处理大规模数据,小任务并行且无依赖
Map与Reduce的角色Map负责过滤聚集数据,实现一对一映射;Reduce负责归约分组,实现多对一映射,二者组合覆盖复杂数据处理场景
解决的分布式难题解决计算通信、数据获取、结果合并与错误回滚等问题,跟踪节点进度保障任务执行MapReduce编程模型与Shuffle过程
整体流程框架流程涵盖输入分片、Map处理、Shuffle(数据聚合)、Reduce处理与输出,其中Shuffle是连接Map与Reduce的关键环节
数据本地化原则Map任务分配遵循“运算移动,数据不移动”,将任务分配给含对应数据块的节点;Reduce任务不考虑数据本地化
Shuffle的核心作用Shuffle实现Map输出到Reduce输入的有序传递,包含Map端分区排序、Reduce端复制合并等步骤,是框架高效运行的核心Map端数据处理与输出机制
内存缓冲区的作用Map输出先存入默认100MB的环形缓冲区,达到80%阈值时启动后台线程溢出写磁盘,期间Map继续输出至剩余20%缓冲区
溢出写的关键步骤溢出写时先按Reduce数量分区,再对每个分区按Key排序,若指定Combiner则运行以压缩数据,减少磁盘写入与后续传输量
多溢出文件的归并Map任务结束前,将多个溢出文件归并为一个分区有序的输出文件,归并时再次排序,确保每个分区内Key有序Reduce端数据处理与输出机制数据复制的方式Reduce通过多个复制线程并行拉取Map输出,根据Partition获取对应数据,利用心跳机制从ApplicationMaster获取Map输出位置数据的归并过程复制的数据先存内存缓冲区,达到阈值则溢写到磁盘,后台线程将多个溢写文件归并为更大有序文件,最终合并所有Map输出为整体有序数据块Reduce函数的执行与输出归并后的数据输入Reduce函数,处理为<k3,v3>形式,最终输出至HDFS,第一个块副本存本地磁盘二、MapReduce框架执行流程02输入数据的分片与格式化切片的核心逻辑切片大小默认与HDFSBlock大小一致(128MB),300MB文件按128MB切片为3块(0-128、128-256、256-300MB),剩余部分小于Block的1.1倍则合并切片的执行步骤程序遍历输入目录文件,计算切片大小,记录切片起止位置元数据,提交规划文件至YARN,由MRAppMaster调度MapTask常见输入格式类型包括TextInputFormat(默认按行读取)、KeyValueTextInputFormat(按分隔符拆分键值)、NLineInputFormat(按指定行数读取)等,各格式适配不同数据场景Map阶段的完整执行流程
MapTask的启动与数据处理MapTask数量由切片决定,启动后调用用户定义的Map函数,处理分片中的每条数据,输出<k2,v2>形式的键值对
Map端Shuffle的具体环节包含数据写入环形缓冲区、溢出写(分区、排序、Combiner)、多溢出文件归并三个核心步骤,最终生成分区有序的本地输出文件
输出的压缩优化数据量较大时,Map输出写入磁盘可开启压缩,减小数据体积,降低磁盘IO与网络传输开销Reduce阶段的完整执行流程
ReduceTask的启动与数据复制ReduceTask数量独立指定,启动后通过复制线程并行拉取所有Map输出中对应分区的数据,利用心跳机制获取Map输出位置
数据的归并与排序复制的数据先存内存缓冲区,达到阈值溢写到磁盘,后台线程归并小文件;所有数据复制完成后进行总归并,得到整体有序的<k2,list<v2>>输入
Reduce函数的执行与结果输出Reduce函数处理输入数据,生成<k3,v3>形式的结果,直接写入HDFS,第一个块副本由NodeManager所在节点存储MapReduce的三次排序机制第一次排序:Map端溢出前后台线程对环形缓冲区中达到阈值的数据进行快速排序,确保每个溢出文件内数据按Key有序第二次排序:Map端归并溢出文件将多个溢出文件归并为一个输出文件时,对相同分区的数据进行归并排序,保障分区内整体有序第三次排序:Reduce端归并Map输出Reduce端对拉取的多个Map输出文件进行归并排序,得到整体有序的输入数据,为Reduce函数处理提供有序性基础三、MapReduce作业的运行机制03作业的提交与初始化流程作业提交的关键步骤客户端向ResourceManager申请ApplicationID,检查输出路径,计算输入切片,复制作业资源(jar包、配置、切片规划),最后提交作业ApplicationMaster的初始化ResourceManager为作业分配容器并启动ApplicationMaster,其从HDFS抽取切片信息,创建MapTask与ReduceTask对象组件协作关系ResourceManager负责资源分配,NodeManager管理容器,ApplicationMaster协调任务运行,HDFS共享作业数据作业的任务分配与执行
任务分配的优先级优先分配Map任务,Map完成率达5%后分配Reduce任务;Map任务优先考虑数据本地化,Reduce任务无此限制
容器的资源配置每个任务默认分配1024MB内存与1个虚拟核心,可通过参数调整Map与Reduce任务的内存及CPU资源
任务的启动过程ApplicationMaster与NodeManager通信启动容器,容器本地化作业资源后,通过YarnChild进程运行Map或Reduce任务作业的完成与资源清理作业完成的标志最后一个任务完成后通知ApplicationMaster,其将作业状态改为成功,客户端WaitForCompletion方法返回并展示统计信息资源清理的逻辑作业完成后,ApplicationMaster与任务所在容器销毁,中间输出结果删除,释放集群资源作业历史的存档作业信息由作业历史服务器存档,供后续查询任务执行详情与性能分析四、MapReduce编程实例:WordCount04开发环境搭建:IntelliJIDEA配置
环境准备要求需安装JavaJDK、Hadoop与IntelliJIDEA,确保三者版本兼容,为MapReduce编程提供基础环境
项目创建与依赖导入创建Java项目,在pom.xml中添加hadoop-common与hadoop-mapreduce-client-core依赖(版本3.2.4),加载依赖后即可开始编码
项目结构规划规划代码目录结构,分别创建Mapper、Reducer与主类的包路径,确保代码组织清晰WordCount的代码实现:Map阶段
Mapper类的继承与参数定义自定义WordCountMapper继承Mapper<Object,Text,Text,IntWritable>,输入Key为偏移量,Value为行数据,输出Key为单词,Value为1
Map方法的重写重写map方法,将输入的行数据按空格拆分单词,遍历单词输出<单词,1>形式的键值对,通过Context对象传递结果
数据处理的逻辑处理单元为单行数据,拆分后每个单词标记为1,实现对单词出现次数的初步统计WordCount的代码实现:Reduce阶段
Reducer类的继承与参数定义自定义WordCountReducer继承Reducer<Text,IntWritable,Text,IntWritable>,输入为Map的输出,输出为单词与总次数
Reduce方法的重写重写reduce方法,遍历输入的<单词,list<1>>数据,累加次数得到总计数,输出<单词,总次数>形式的结果
归并统计的逻辑每个单词对应一个Reduce任务,通过遍历Value列表实现次数累加,完成最终的词频统计WordCount的代码实现:主类与配置主类的核心逻辑主类中创建Configuration对象加载配置,解析输入输出路径参数,创建Job对象并设置相关属性(jar类、Mapper、Reducer、输出类型等)作业的配置参数设置作业名称为“wordcount”,指定输入路径(FileInputFormat)与输出路径(FileOutputFormat),确保输出路径不存在作业的提交与等待调用job.waitForCompletion(true)提交作业并等待完成,根据返回结果退出程序(0表示成功)程序打包与提交集群运行编译打包方式
利用IntelliJIDEA编译后,target目录生成轻量级jar包(几十KB),集群运行需指定主类全限定名,脚本示例:hadoopjarwc.jarcom.dch.mapreduce.wordcount.WordCountRunnerwcinputwcoutput连依赖打包方式
在编译基础上,通过Artifacts配置连依赖打包,生成包含所有依赖的jar包,运行无需指定主类,脚本示例:hadoopjarwc.jarwcinputwcoutput打包注意事项
轻量级打包需确保集群有对应依赖;连依赖打包适用于集群缺少依赖的场景,需注意jar包体积MapReduce程序的监控方法
日志监控控制台运行任务时,通过Linux重定向功能记录日志,跟踪任务执行进度与错误信息,示例:hadoopjarwc.jarwcinputwcoutput>run.log2>&1
命令行监控使用yarnapplication–list查看当前运行任务;使用yarnapplication-appId<ApplicationID>查看指定任务详情,获取任务状态与资源使用情况
YARN界面监控通过YARN的Web界面(默认端口8088)查看集群资源、任务进度与每个任务的运行日志,直观监控任务执行状态五、MapReduce关键概念与优化总结05核心概念回顾与易错点解析
核心概念梳理回顾分片、Shuffle、数据本地化、Combiner等核心概念,明确其在框架中的作用与相互关系
常见易错点解析区分合并与归并(合并是值相加,归并是值列表)、排序与归并的差异,避免混淆MapReduce的内部机制
理解误区纠正纠正“Reduce任务数量越多越好”“切片越小越高效”等误区,明确任务数量与切片大小需根据集群资源合理设置MapReduce性能优化方向
任务配置优化调整Map与Reduce任务的内存、CPU资源,合理设置切片大小与Reduce数量,避免资源浪费或不足
数据处理优化合理使用Combiner压缩Map输出,开启数据压缩减少传输量,选择合适的输入格式适配数据场景
资源调度优化利用数据本地化原则提高Map任务效率,优化Shuffle的缓冲区大小与溢出阈值,减少磁盘IO框架适用场景与局限性适用场景分析适用于大规模离线数据处理、日志分析、数据统计等场景,能高效利用集群并行计算资源局限性总结实时性差,不适合流数据处理;任务启动开销大,不适合小数据量处理;编程模型较固定,灵活度低于Spark等框架生态定位与互补技术MapReduc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026河北邢台临城县中医医院医养中心护理员聘用笔试模拟试题及答案详解
- 2026江西中寰投资集团及其下属公司招聘5人笔试备考题库及答案详解
- 2026湖南株洲田心街道社区卫生服务中心见习生招聘6人笔试模拟试题及答案详解
- 2026年春季中国南水北调集团水网水务投资有限公司部分所属单位招聘(第二批)5人(北京)笔试模拟试题及答案详解
- 2026陕西西安博爱学校招聘笔试备考试题及答案详解
- 2026年中信银行(绍兴分行)校园招聘考试备考题库及答案详解
- 2026年保山市隆阳区部分医疗卫生事业单位第一批次招聘编外人员(82人)笔试备考题库及答案详解
- 2025年邮政储蓄银行(天津分行)人员招聘笔试考试题库及答案详解
- 2026上半年广东深圳市福田区公办学校面向2026年应届毕业生招聘教师49人(编制)笔试备考题库及答案详解
- 2026广东清远市清城区人民法院接收第一批见习生15人笔试备考题库及答案详解
- (高清版)DG∕TJ 08-2191-2015 公路大中修工程设计规范
- 2025年人教版小学五年级下册奥林匹克数学竞赛试卷(附参考答案)
- 部编版小学语文 4【下】注音练习(识字表)
- GB/T 24091-2024适应气候变化脆弱性、影响和风险评估指南
- 岩土钻掘工程学第7章
- 房建监理大纲技术标
- 水浒传高考知识点梳理
- 600吨-年新材料项目环评报告书
- 加密流量检测与分析
- 孙燕姿所有歌曲歌词大全(11张专辑)
- 出租房装修改造合同范本
评论
0/150
提交评论