大数据平台部署与运维5_第1页
大数据平台部署与运维5_第2页
大数据平台部署与运维5_第3页
大数据平台部署与运维5_第4页
大数据平台部署与运维5_第5页
已阅读5页,还剩42页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北京出版社大数据平台部署与运维项目五初识MapReduce任务一MapReduce的认知任务二使用MapReduce实现词频统计任务三使用MapReduce完成电商销售数据的统计目录/CONTENTS目标知识目标»

理解MapReduce编程模型的基本原理。»

了解MapReduce框架的整体架构。»

了解MapReduce在大数据处理领域的发展情况。能力目标»

能编写MapReduce程序实现词频统计功能,包括编写Map和Reduce方法、生成Jar文件并运行程序。»

能使用MapReduce处理实际业务数据,包括自定义分区、数据类型和编写MapReduce程序的具体流程。素养目标»

培养解决实际问题的能力,包括分析业务需求、设计数据处理方案和优化程序性能。»

注重创新思维,不断探索和尝试新的数据处理方法和技术,提高解决问题的效率和质量。01MapReduce的认知任务导入某公司的李经理最近发现公司后台数据量越来越大,服务器性能不佳,计算效率低,于是让运营师张工给出解决方案。张工认为,Hadoop的核心组件MapReduce可以用作大规模数据集的运算,而公司已经有了Hadoop集群,因此不妨试试MapReduce。李经理让张工了解一下MapReduce的原理和运行机制。MapReduce的原理和运行机制究竟是怎样的呢?MapReduce是构建大规模分布式计算集群的平台,它使用普通服务器实现高性能并行计算。MapReduce:高性能并行计算平台MapReduce是源于Lisp的并行编程模型,通过map和reduce函数处理大规模数据,简化了并行计算的复杂性。MapReduce:并行程序设计模型与方法MapReduce是并行计算框架,简化了在集群上处理大量数据的复杂性,自动处理数据划分、任务调度和容错。MapReduce:并行计算软件框架010203一、MapReduce的概念与原理(一)MapReduce的含义基本概念MapReduce是分布式计算模型,通过map函数分布式处理数据,然后用reduce函数汇总结果。用户只需实现map和reduce两个函数。映射和归纳映射函数对元素执行指定操作,创建新列表,高度并行,适合高性能计算。归纳函数则将列表元素适当合并,化简后答案简单,同样适用于并行环境。一、MapReduce的概念与原理(二)MapReduce的原理MapReduce通过抽象模型和计算框架简化了分布式程序的开发,使得开发者更专注于应用层的计算问题,降低了使用难度。易于理解01MapReduce的计算性能随节点增加近线性增长,使得处理海量数据变得可能。良好的扩展性02MapReduce通过节点间的协作和数据重分布实现可靠性,当节点失效时,主节点会检测并重新分配任务。分布可靠性03一、MapReduce的概念与原理(三)MapReduce的优势二、MapReduce的体系架构

(一)MapReduce1.0的体系架构MapReduce1.0的体系架构如图5-1所示。MapReduce程序通过Client提交到JobTracker,作业被分解为多个Map/Reduce任务,用户可查看作业状态。Client01JobTracker监控和调度作业,处理TaskTracker及任务的故障恢复,控制资源分配给任务调度器。JobTracker02二、MapReduce的体系架构

(一)MapReduce1.0的体系架构TaskTracker会周期性地通过Heartbeat(心跳检测)将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker发送过来的命令并执行相应的操作(如启动新任务、杀死任务等)。TaskTracker使用“slot”等量划分本节点上的资源。“slot”代表计算资源(CPU、内存等)。TaskTracker03Task分为MapTask和ReduceTask两种,均由TaskTracker启动。HDFS以固定大小的block为基本单位存储数据,而对于MapReduce而言,其处理单位是split。split是一个逻辑概念,它只包含一些元数据信息,如数据起始位置、数据长度、数据所在节点等。它的划分方法完全由用户自己决定。Task04二、MapReduce的体系架构

(一)MapReduce1.0的体系架构MapReduce2.0架构概述包含ResourceManager和进程,分离资源管理与任务调度,从MapReducev1的JobTracker演进。新特性解析资源管理系统新引入,针对MapReducev1改进,旨在提高资源利用率和系统扩展性。二、MapReduce的体系架构

(二)MapReduce2.0的体系架构用户通过Client与YARN交互,提交MapReduce作业,监控作业状态,进行作业管理。ClientResourceManager全局管理资源,包含调度器和应用程序管理器,负责资源分配与管理。资源管理器二、MapReduce的体系架构

(二)MapReduce2.0的体系架构资源分配机制调度器依据容量和队列限制分配资源给应用程序,但不涉及监控、跟踪或重启任务,这些由ApplicationMaster负责。资源容器概念资源容器是调度器进行资源分配的单位,它封装内存、CPU等资源,限制每个任务的资源使用量。调度器组件特性调度器组件可插拔,用户可设计新调度器,如FairScheduler和CapacityScheduler。二、MapReduce的体系架构

(二)MapReduce2.0的体系架构ApplicationMaster负责任务划分、调度、监控和容错,失败时ResourceManager会重启它,超过重启次数作业失败。应用大师NodeManager是节点上的资源和任务管理器,它向ResourceManager汇报资源使用情况和Container状态,并处理来自ApplicationMaster的启动/停止请求。NodeManager应用程序管理器管理所有应用程序,负责提交、资源调度、监控及故障恢复。应用程序管理器二、MapReduce的体系架构

(二)MapReduce2.0的体系架构YARN的Container是资源抽象,代表节点上的内存、CPU等资源,由ResourceManager分配给ApplicationMaster。Container:YARN的资源抽象01.YARN为每个任务分配Container,限定任务只能使用指定资源,Container可运行ApplicationMaster、Map、Reduce等程序。Container的分配与使用02.二、MapReduce的体系架构

(二)MapReduce2.0的体系架构MapTask/ReduceTask。MapTask/ReduceTask周期性地向ApplicationMaster汇报心跳。一旦Task挂掉,ApplicationMaster则将为其重新申请资源,并使其重新运行。其最多重新运行次数可由用户设置,默认是4次。注意:每个MapReduce作业对应一个ApplicationMaster任务调度。二、MapReduce的体系架构

(二)MapReduce2.0的体系架构01文件split机制是MapTask处理的基础,它将大文件分成小块,由MapTask逐个解析成key/value对,经过map处理后,临时结果按partition存储,等待ReduceTask进一步处理。文件split机制02Reduce任务包括shuffle阶段、sort阶段和Reduce阶段,从远程节点读取MapTask结果,按key排序,调用reduce函数处理并保存最终结果到HDFS。"Reduce任务执行"二、MapReduce的体系架构

(三)MapReduce任务的执行过程三、MapReduce的发展现状涵盖分布grep、排序、Web分析,到反向索引构建、机器学习,甚至更新Google索引,展现强大处理能力。MapReduce的广泛应用01为处理MapReduce带来的大数据挑战,Hadoop应运而生,提供分布式计算框架,简化数据处理流程。Hadoop的诞生背景02Hive的快速普及Hadoop的MapReduce挑战面对MapReduce编程复杂性,Facebook推出Hive,以解决批处理的难题,简化复杂查询。由于其易用性和对批处理的改进,Hive迅速获得大量用户,成为解决交互式查询的首选。Hadoop生态的演变为应对技术挑战,Hadoop生态系统不断发展,Hive的崛起表明了对用户友好工具的需求。三、MapReduce的发展现状提出新的计算模型,突破冯·诺依曼结构,适应集群大规模计算,为处理数据密集型任务开创先河。MapReduce的创新点MapReduce革新计算组织方式,成为大规模计算资源管理的里程碑,影响后续分布式计算框架。对计算科学的贡献三、MapReduce的发展现状容器是执行特定应用程序的进程,受资源限制(内存、CPU)。容器特性管理集群资源,协调任务调度,确保资源高效利用。运行在集群节点,启动、监控容器,执行具体任务。YARN是Hadoop集群资源管理系统,支持分布式计算模式。YARN概述资源管理器功能节点管理器职责四、YARN的运行机制客户端请求资源管理器启动applicationmaster,资源管理器分配节点管理器启动容器运行任务。YARN应用启动流程YARN资源请求模型允许灵活指定容器的内存、CPU需求及本地限制,以优化集群资源使用。YARN的资源请求模型四、YARN的运行机制YARN调度器包括FIFO、容量和公平调度器,通过配置yarn.ResourceManager.scheduler.class属性选择。YARN调度器概览01FIFO调度器按提交顺序执行应用,先到先服务,但可能造成大应用阻塞小应用的情况。FIFO调度器详解02容量调度器保障小作业快速启动,但可能牺牲集群整体利用率,导致大作业执行时间更长。容量调度器解析03公平调度器动态平衡资源,作业间共享公平,确保高利用率和小作业及时完成。公平调度器运作机制04四、YARN的运行机制MapReduce与Spark的区别02使用MapReduce实现词频统计任务导入词频统计指的是对一系列文本文件中出现的所有单词进行分析、统计,输出各单词出现的次数。词频统计是MapReduce最典型的编程实例,就像“HelloWorld”在编程语言中的地位。通过基于MapReduce的编程实践,可以更好地理解MapReduce编程思想,有利于后续的MapReduce排错、调优工作。MapReduce编程的操作步骤具体有哪些呢?Map需要实现的逻辑是分割单词,输出内容为<单词,1>。在Map阶段,文件中的文本数据被读入,以<key,value>的形式提交给Map函数进行处理,其中,key是当前读取到的行号,value是当前读取到的行的内容。<key,value>提交给Map函数以后,就运行自定义的Map处理逻辑,对value进行处理,然后以特定的键值对的形式进行输出,这个输出将作为中间结果,提供给Reduce阶段作为输入数据。以下是Map处理逻辑的具体代码:一、编写Map方法二、编写reduce方法本任务中,Reduce需要实现的逻辑是对输入结果中的数字序列进行求和。经过Shuffle阶段,Map阶段得到的中间结果分发给对应的Reduce任务处理。对于Reduce阶段而言,输入是<key,value-list>形式,比如<′Hadoop′,<1,1>>。Reduce函数就是对输入中的value-list进行求和,得到词频统计结果。以下是Reduce处理逻辑的具体代码:三、编写main方法

(一)编写main方法为了让TokenizerMapper类和IntSumReducer类能够协同工作,完成最终的词频统计任务,需要在主函数中通过Job类设置Hadoop程序运行时的环境变量,具体代码如下:三、编写main方法

(二)完整的词频统计程序在编写词频统计Java程序时,需要新建一个名称为WordCount.java的文件,该文件包含了完整的词频统计程序代码,WordCount.java文件被放在了“/usr/loca/hadoop”目录下。四、使用命令行生成jar文件把Hadoop安装目录设置为当前工作目录,命令如下:$cd/usr/local/hadoop执行命令,设置CLASSPATH变量,该变量是为了让javac编译程序可以找到Hadoop相关的jar包,如图5-7所示。$exportCLASSPATH=″/usr/local/hadoop/share/hadoop/common/hadoop_x0002_common-3.3.4.jar:/usr/local/hadoop/share/hadoop/mapreduce/hadoop-MapReduce_x0002_client-core-3.3.4.jar:/usr/local/hadoop/share/hadoop/common/lib/commons-cli-1.2.jar:$CLASSPATH″五、运行词频统计程序启动Hadoop。$start-dfs.sh为了避免其他任务对本次任务的影响,应先删除HDFS上/user/hadoop路径下的input文件夹和output文件夹。$hdfsdfs-rm-rinput$hdfsdfs-rm-routput删除后重新创建input文件夹,如图5-9所示。$hdfsdfs-mkdirinput03使用MapReduce完成电商销售数据的统计任务导入某电商销售公司会议上,经理表示公司要使用MapReduce对电商销售数据进行统计,可能要用到自定义分区和自定义数据类型,自定义数据类型根据场景的不同需要实现不同的接口,自定义分区可以把数据分到不同的Reducer中。经理给了大家一份后台导出的数据,让大家先了解一下MapReduce中的自定义分区和自定义数据类型,然后使用MapReduce统计每个买家收藏商品的数量,并根据收藏日期进行自定义分区。利用MapReduce对电商销售数据进行统计的操作步骤具体有哪些呢?用户收藏分析整理buyer_favoritel数据,按买家ID和商品ID统计收藏次数,分析用户收藏行为时间规律。数据处理方法提取收藏日期,按月划分,计算每个用户每月收藏商品数量,识别用户收藏高峰期。一、使用MapReduce完成电商销售数据统计的流程Mapper处理的键值对按key分到不同Reducer,相同key的值会归并到同一个Reducer中,Partitioner决定key的分配。分片与键值对生成Map任务的输出经由分区和排序后,由Reducer执行用户定义的reduce函数进行计算。数据处理Map到ReduceMapReduce作业将输入数据切分,每个Map任务处理一个分片,生成键值对列表。MapReduce作业流程010203二、自定义分区(一)MapReduceParitioner类分区目标是使相同key的值分到同一Reducer,默认使用HashPartitioner,依据key的哈希值进行分区,确保数据分布均匀分区的目的与默认分区器01、Partitioner数量等于Reducer任务数,用于划分数据。仅当有多个Reducer任务时,才会创建分区,以确保同分区数据被同一任务处理Partitioner与Reducer02、二、自定义分区(一)MapReduceParitioner类数据分区机制当某key数据量远超其他key,可选择将其单独分区或均匀分布其他key,避免Reducer处理不均。0102分区问题与解决方案低效分区导致部分Reduer任务处理数据过多,延长作业运行时间。解决方案是自定义分区器,根据业务需求调整分区逻辑,实现数据均衡分配,从而提高作业效率。二、自定义分区(一)MapReduceParitioner类分析具体的业务逻辑,确定大概有多少个分区。分析业务逻辑与分区数量01编写一个继承自org.apache.hadoop.mapreduce.Partitioner的类,以自定义分区逻辑。编写分区器类02根据特定逻辑,重写getPartition方法,以实现数据库或配置读取后返回相同数字的目标。重写分区方法03通过main方法中job.setPartitionerClass(DataPartit

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论