产品模拟器v100r001c培训材料hd基础技术mapreduce_第1页
产品模拟器v100r001c培训材料hd基础技术mapreduce_第2页
产品模拟器v100r001c培训材料hd基础技术mapreduce_第3页
产品模拟器v100r001c培训材料hd基础技术mapreduce_第4页
产品模拟器v100r001c培训材料hd基础技术mapreduce_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、2014年9月16日二大数据Insight HD MapReduceFu1234MapReduce功能与架构Y RN的资源管理和任务调度MR开发接口介绍e ample详解MapReduce介绍MapReduce基于发布的分布式计算框架MapReduce设计开发,用于大规模数据集(大于1TB)的并行运算,它的特点如下:易于编程:程序员仅需描述需要做什么, 而具体怎么去做就交由系统的执行框架处理。良好的扩展性:可以通过添加机器以达到扩展集群能力的目的。高容错性:通过计算迁移或者数据迁移等策略提高集群的可用性与容错性。MapRedcue适合做什么大规模数据集的离线批处理计算任务分而治之,子任务相对独

2、立MapRedcue不适合做什么实时的交互式计算,要求快速响应,低延迟,比如SQL查询流式计算、实时分析,比如点击计算等 子任务之间相互依赖(迭代计算)谁在使用MapReduceMapReduce在Hadoop中位置MapReduce:HiveHBaseMap/ReduceDFS是MapReduce的开源实现。是对并行计算的封装,使用户通过一些简单的逻辑即可完成复杂的并行计算。将一个大的运算任务分解到集群每个节点上,充分运用集群资源,缩短运行时间。YARN:Yet Another Resource Negotiator(另一种资源协商),是一个资源调度框架YarnYarn是Hadoop2.0中

3、的资源管理系统,它是一个通用的资源管理模块,可为 各类应用程序进行资源管理和调度Yarn是轻量级弹性计算,除了MapReduce框架,还可以支持其他框架,比如Spark、Storm等;多种框架管理,共享集群资源:资源利用率高运维成本低数据共享方便MapReduceStormSPark其他(离线处理)(处理) (迭代计算)Yarn(集群资源管理)HDFS(分布式)Yarn的产生 (MRv1与MRv2架构对比)下一代MapReduce将JobTracker的两个主要功能(即资源管理与作业控制)分拆成两个独立的进程,而且每个作业管理控制进程只负责管理一个作业从资源管理角度看,下一代MapReduce

4、框架实际上衍生出了一个资源管理Yarn,它使得Hadoop不再局限于仅支持管理和调度MapReduce一种计算模型,而是可无限融入多种计算框架,且对这些框架进行MRv1与Yarn对比相比与MRv1,Yarn的优势更快地MapReduce计算YARN利用异步模型对MapReduce框架的一些关键逻辑结构进行了重写,具有更快地计算速度。YARN还具有向后兼容性,用户在MRv1上运行的作业,无需任何修改即可运行在YARN之上对多框架的支持与MRv1相比,YARN不再是一个单纯的计算框架,而是一个框架管理器,用户可以将各种各样的计算框架移植到YARN之上,由YARN进行管理和资源分配框架升级更容易在Y

5、ARN中,各种计算框架不再是作为一个服务部署到集群的各个节点上(比如MapReduce框架,不再需要部署 JobTracler、TaskTracker等服务),而是被封装成一个用户程序库(lib)存放在客户端,当需要对计算框架进行升级时,只需升级用户程序库即可MRv1的局限性扩展性差JobTracker同时兼备了资源管理和作业控制两个功能,这成为系统的一个最大瓶颈,严重制约了Hadoop集群扩展性可靠性差MRV1采用了master/slaver结构,其中,master存在单点故障问题,一旦它出现故障将导致整个集群不可用资源利用率低MRv1采用了基于槽位的资源分配模型,槽位是一种粗粒度的资源划分

6、,通常一个任务不会用完槽位对应的资源,且其他任务也无法使用这些空闲资源无法支持多种技术框架MRv1不能支持多种计算框架并存,例如内存计算框、流式计算框架和迭代式集散框架等Yarn的架构ResourceManager负责集群资源管理和计算框架管理,主要包括调度与应用程序管理调度器:根据容量、队列等限制条件,将系统中的资源分配给各个正在运行的应用程序应用程序管理器负责管理整个系统中的所有应用程序,包括应用程序提交,与调度器协商资源,启动并状态NodeManagerAppMaster运行节点资源管理和容器管理,RM是系统中将资源分配给各个应用的最终决策者。AppMaster各种计算框架的实现(例如M

7、RAppMaster)向 ResourceManager申请资源,通知NodeManager管理相应的资源Container是Yarn中的资源抽象,它封装了某个节点上的资源,如内存、CPU、磁盘、网络等度Yarn的架构MR V2 架构(物理架构)基于YARN框架下的MR实现MR V2 架构(逻辑架构)MR AppS:使用MR的外部系统,如Hive。外部系统需要JobCnt开发包。YARNApp:基于YARN框架上的应用,如MR应用。YARNService:基于YARN框架集群服务,主要提供资源管理服务。o b j e c t M R V 2 _ L o g i c a l _ A r c h

8、i t e c t u r eMR AppSH i v eJ o b Cn tB r o w s e rA p p M g rA p p A t t e m p t M g rA p p S c h e d u l e rW e b P r o x yN o d e M g rC o n t a i n e r M g rC o n t a i n e r L a u n c hL i n u xJ a v aD F SR M - H AW e b U I S e r v i c eY a r n R P C S e r v i c eS t r e a m i n gD i s t r i

9、b u t e C a c h eJ o b M g rM a p T a s k R u n n e rR e d u c e T a s k R u n n e rJ o b S c h e d u l e rS h u f f l eJ o b H i s t o r yY a r n R P C Cn tM R A p p H AC o u n t e rD i s t r i b u t e SMRAppMaster架构图 - MR所有的功能都集中在MRAppMasterAMRMProtocolContainerAllocatorContainerLauncherContainerM

10、anagerMap TaskNode ManagerReduce TaskNode ManagerReduce TaskMap TaskTaskAttemptListenerTaskHeartbeandlerTask CleanerJobToken SecretManagerRecovery ServiceSpeculatorMRCntServiceResource ManagerCntMRAppMaster功能说明ContainerAllocator与ResourceManager通信,为作业申请资源。TaskCleaner失败任务或者被杀死任务产生的结果,它结果。ContainerLaun

11、cher了一个线程池,异步删除这些任务产生的与NodeManager通信,要求其启动一个Container。TaskAttemptListener管理各个任务的心跳信息,如果一个任务一段时间从系统中移除。Recovery Service汇报心跳,则认为它死掉了,会将其当一个MRAppMaster故障后,它将被调度到另外一个节点上重新运行,为了避免重新计算,MRAppMaster首先会从HDFS上 Speculator上次运行产生的运行日志,并恢复作业运行状态。完成推测执行功能。当一个任务运行速度明显慢于其他任务时,Speculator会为该任务启动一个备份任务,让其同慢任务一同处理同一份数据,

12、谁先计算完成则将谁的结果作为最终结果,另一个任务将被杀掉。该机制可有效防止“拖后腿”任务拖慢整个作业的执行进度。1234MapReduce功能与架构Y RN的资源管理和任务调度MR开发接口介绍e ample详解资源表示模型每个节点由多个固定内存大小(512MB)的分配组成。Container可以分配该内存整数倍大小。每个节点有多个核,Container可以分配1个或多个核一个Container同时包含内存与CPU两种资源Pmem-ratio为物理内存对应最多可使用的虚拟内存总量Pcores-ratio为可分配的虚拟CPU个数资源分配模型1、调度器一群队列的信息。用户可以向一个或者多个队列提交应

13、用。每次NM心跳的时候,调度器根据一定的规则选择一个队列,再在队列上选择一个应用,尝试在这个应用上分配资源。2、调度器会优先匹配本地资源的申请请求,其次是同机架的,最后是任意机器的。本地优化YARN所运行的应用的绝大部分输入都是hdfs上的文件。而hdfs上的文件的是分块多副本的。假设文件系统的备份因子是3。则每一个文件块都会在3个机器上有副本。在YARN运行应用的时候,AM会将输入文件进行切割,然后,AM向RM申请的container来运行task来处理这些被切割的文件段。假如输入文件在ABC三个机器上有备份,那如果AM申请到的container在这3个机器上的其中一个,那这个task就无须

14、从其它机器上传输要处理的文件段,节省网络传输。这就是Hadoop的本地优化。YARN的实现本地优化的方式是AM给RM提交的资源申请的时候,会同时发送本地申请(申请本节点上的container),机架申请(申请同机架上其他节点的 container)和任意申请(申请其他节点上的container)。然后,RM的匹配这些资源申请的时候,会先匹配本地申请,再匹配机架申请,最后才匹配任意申请。延迟调度调度器在匹配本地申请失败的时候,匹配机架申请或者任意申请成功的时候,允许略过这次的资源分配,直到达到延迟调度次数上限。调度器比较比较项FifoSchedulerCapacityScheduler设计目的最

15、简单的调度器,易于理解和上手多用户的情况下,最大化集群的吞吐和利用率树状组织队列。无论父队列还是子队列都会有资源参数限制,子队列的资源队列组织方式单队列限制计算是基于父队列的。应用提交到叶子队列。父子队列之间有容量关系。每个队列限制了资源使用量,全局最大资源使用资源限制无量,最大活跃应用数量等。队列ACL限制可以限制应用提交权限可以限制应用提交权限和队列开关权限,父子队列间的ACL会继承。队列排序算法无按照队列的资源使用量最小的优先应用选择算法先进先出先进先出本地优先分配支持支持延迟调度不支持支持资源抢占不支持不支持容量调度器的特点容量保证:管理员可为每个队列设置资源最低保证和资源使用上限,而

16、所有提交到该队列的应用程序共享这些资源。灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列该队列。支持优先级:队列支持任务优先级调度(默认是FIFO)的资源会归还给多重租赁:支持多用户共享集群和多应用程序同时运行。为防止单个应用程序、用户或者队列独占集群资源,管理员可为之增加多重约束(比如单个因不该用程序同时运行的任务数等)。动态更新配置文件:管理员可根据需要动态修改各种配置参数,以实现在线集群管理。容量调度器的任务选择调度时,首先按以下策略选择一个合适队列:资源利用量最低的队列优先,比如同级的两个队列Q1和Q2,它们的容量均为30

17、,而Q1已使用10,Q2已使用12,则会优先将资源分配给Q1最小队列层级优先,例如:QueueA与QueueB.childQueueB,则QueueA优先;资源回收请求队列优先。然后按以下策略选择该队列中一个任务:按照任务优先级和提交时间顺序选择,同时考虑用户资源量限制和内存限制。对于同优先级的任务,选择算法参见“DRF(主资源公平调度算法)”章节容量调度器的优缺点优点:支持多任务并行执行,提高资源利用率动态调整资源分配,提高任务执行效率缺点:队列设置和队列选择无法自动进行,用户需要了解大量系统信息,才能设置和选择队列。队列资源限制队列的资源容量(百分比) 总共有default、QueueA、

18、 QueueB、QueueC、QueueD五个队列,每个队列都有一个队列 名.capacity配置Default队列容量为整个集群资源的20%QueueA队列容量为整个集群资源的40%QueueB队列容量为整个集群资源的30%并且5个队列的容量配置之和为100%队列资源限制共享空闲资源队列的资源使用上限(百分比),由于存在资源共享,因此一个队列使用的资源可能超过其容量(QueueA.capacity),而最多使用资源量可通过该参数限制。如果某个队列任务较少,可将剩余资源共享给其他队列,如果QueueA的um-capacity配置为100,假设当前只有QueueA在运行任务,理论上QueueA可

19、以占用整个集群100%的资源。用户限制每个用户最低资源保障(百分比)任何时刻,一个队列中每个用户可使用的资源量均有一定的限制,当一个队列中同时运行多个用户的任务时,每个用户的可使用资源量在一个最小值与最大值之间浮动,其中,最小值取决于正在运行的任务数目,而最大值则有minimum-user- limit-percent决定。以上图为例,QueueA的minimum-user-limit-percent为25,当两个用户向该队列提交任务时,每个用户可使用的资源量过50%;如果三个用户提交任务,则每个用户可使用资源量过33%;如果四个或者用户提交任务,则每个用户可使用资源量过25%。用户限制每个用

20、户最多可使用的资源量(百分比)以上图为例,在任何时刻,每个用户使用的资源量功能可以防止单个用户独占队列的资源。过该队列容量的10%,此任务限制AppMaster最大可使用的资源量(百分比)此参数控制并发运行的应用程序数量,如上图配置,表示每个任务的AppMaster最大能使用集群10%的资源。最大活跃任务数整个集群中允许的最大活跃任务数,包括运行或挂起状态的所有任务,每个队列允许的最大任务数则由队列的容量与用户的最大容量(user-limit-factor)共同决定,当提交的任务申请数据达到限制以后,新提交的任务将会被。不同队列的任务优先使用本队列资源CapacityScheduler将整个系

21、统资源分成若干队列,实际上相当于将整个Hadoop集群逻辑上划分为若干个用用相对独立资源的子集群,不同队列之间是相互的,所以分配在不同队列中的两个任务,无论其优先级如何设置是互不干扰的。同一队列中的任务优先级优先级只针对同一个队列中的不同任务;相同队列中,先后提交两个执行时间较长的任务,先提低优先级的任务,后提高优先级的任务,后提交的高优先级的任务先执行完。例如,一个任务分解成了多个map子任务,先提交低优先级的任务,在执行了50%的map子任务时有高优先级的任务提交到队列,队列的资源会优先分配给高优先级的任务,这样低优先级任务的map子任务的完成率就停在50%,等到高优先级的任务执行完成之后

22、,才继续执行余下50%的map任务。DRF(主资源公平调度算法)DRF(Dominant Resource Fairness)是一种支持多资源的max-min fair 资源分配机制,其中max表示maxCPU,mem,而min表示minuser1,user2,=maxCPU1,mem1, maxCPU2,mem2, DRF被证明非常适合应用于多资源和复杂需求的环境中,因此被越来越多的系统采用,包括Apache Mesos(集群管理器)DRF算法的公平满足四个特性。共享性(Sharing Incentive),即DRF确保各用户平均占用资源;真实性(Strategy-Proofness),即每

23、个用户都不能通过来获得资源;效率性(Pareto-Efficient),即每个用户都不能在未减少其他用户占有的资源的情况下增加自己的资源份额;非抢占性(Envy-Free),即每个用户都不能抢占其他用户的资源。DRF(主资源公平调度算法)示例举例说明,假设系统有9 CPUs 和18 GB RAM,有两个用户(或者框架)分别运行了两种任务,需要的资源量分别为 和 。对于用户A,每个任务要消耗总CPU的1/9和总内存的2/9,因而A的支配性资源为内存对于用户B,每个任务要消耗总CPU的1/3和总内存的1/18,因而B的支配性资源为CPU。DRF将均衡所有用户的支配性资源(最大化所有用户的主资源)A

24、获取的资源量为:,可运行3个task;获取了2/3的RAMs B获取的资源量为,可运行2个task;获取了2/3的CPUs这样分配,每个用户获取了相同比例的支配性资源DRF(主资源公平调度算法)示例DRF算法的一个可能的调度序列如下图所示:1234MapReduce功能与架构Y RN的资源管理和任务调度MR开发接口介绍e ample详解MR开发接介绍序号方法说明1Job(Configuration conf, String jobName),Job(Configuration conf)新建一个MapReduce客户端,用于配置作业属性,提交作业。2setMapperClass(Class c

25、ls)接口,指定MapReduce作业的Mapper类,默认为空。也可以在“mapred-site.xml”中配置“mapreduce.job.map.class”项。3setReducerClass(Class cls)接口,指定MapReduce作业的Reducer类,默认为空。也可以在“mapred-site.xml”中配置“mapreduce.job.reduce.class”项4binerClass(Class cls)指定作业的biner类,默认为空。也可以在“mapred-site.xml”中配置“bine.class”项。需要保证reduce的输入输出key,value类型相同

26、才可以使用,谨慎使用。5setInputFormatClass(Class cls)接口,指定MapReduce作业的InputFormat类,默认为TextInputFormat。也可以在“mapred-site.xml”中配置“mapreduce.job.inputformat.class”项。该设置用来指定处理不同格式的数据时需要的InputFormat类,用来数据,切分数据块6setJarByClass(Class cls)接口,指定执行类所在的jar包本地位置。java通过class文件找到执行jar包,该jar上传到HDFS。7setJar(String jar)指定执行类所在的j

27、ar包本地位置。直接设置执行jar包所在位置,该jar上传到 HDFS。与setJarByClass(Class cls)选择使用一个。也可以在“mapred- site.xml”中配置“mapreduce.job.jar”项口MR开发接介绍序号方法说明8setOutputFormat(Class theClass)接口,指定MapReduce作业的OutputFormat类,默认为TextOutputFormat。也可以在 “mapred-site.xml”中配置“mapred.output.format.class”项,指定输出结果的数据格式。例如默认的TextOutputFormat把每

28、条key,value写为文本行。通常场景不配置特定的OutputFormat。9setOutputKeyClass(Class theClass)接口,指定MapReduce作业的输出key的类型,也可以在“mapred-site.xml”中配置 “mapreduce.job.output.key.class”项10setOutputValueClass(Class theClass)接口,指定MapReduce作业的输出value的类型,也可以在“mapred-site.xml”中配置“mapreduce.job.output.value.class”项11setPartitionerCla

29、ss(Class theClass)指定MapReduce作业的Partitioner类。也可以在“mapred-site.xml”中配置 “mapred.partitioner.class”项。该方法用来分配map的输出结果到哪个reduce类,默认使用HashPartitioner,均匀分配map的每条键值对。例如在hbase应用中,不同的键值对应的region不同,这就需要设定特殊的partitioner类分配map的输出结果。12pressorClass(Clas s codecClass)指定MapReduce作业的map任务的输出结果压缩类,默认不使用压缩。也可以在“mapred-

30、site.xml”中配置“mapredpress”和“mapredpress.codec”项。当map的输出数据大,减少网络压力,使用压缩传输中间数据。13setJobPriority(JobPriority prio)指定MapReduce作业的优先级,共有5个优先级别,VERY_HIGH,HIGH,NORMAL,LOW,VERY_LOW,默认级别为NORMAL。也可以在“mapred-site.xml”中配置 “mapreduce.job.priority”项。口MR开发接介绍说明:开发接口类:.apache.hadoop.mapreduce.Job上面仅介绍了一些常用的接口。序号方法说明14setQueueName(String queueName)指定MapReduce作业的提交队列。默认使用default队列。也可以在“mapred-site.xml”中配置“mapreduce.job.queuename”项。15setNumMapTasks(n)接口,指定MapReduce作业的map个数。也可以在

温馨提示

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

最新文档

评论

0/150

提交评论