Hadoop day04(MapReduce+YARN)

一、MapReduce

1、分布式计算概念

概念:将该应用分解成许多小的部分,分配给多台计算机进行处理。可以节约整体计算时间,提高计算效率。

相对:集中式计算

2、MapRuce介绍

概念:是分布式计算框架,用于编写分布式应用程序,该程序可靠、容错处理大型硬件集群上的海量数据。是一种面向海量数据处理的一种指导思想,也是用于对大规模数据进行分布式计算的编程模型。易于使用和高度可拓展

起源:2004年谷歌的一篇论文

特点:易于编程:MapReduce框架提供了用于二次开发的接口,简单实现一些接口,就可以完成一个分布式程序。任务计算交给计算框架去处理,将分布式部署到Hadoop集群上运行,集群节点可以拓展到成百上千个等。 

          良好的拓展性:计算机资源得到不满足的时候,可以通过增加机器来扩展他的计算能力。

          高容错性:Hadoop集群是分布式搭建和部署的,任何单一机器节点宕机了,可以把上面的计算转移到另一个节点上运行,不会影响整个任务完成。

          适合海量数据的离线处理:可以处理GB、TB和PB级别的数据

局限性:实时计算性能差:主要应用于离线作业,无法做到秒级或者是亚秒级的数据响应。

              不能进行流式计算:流式计算的特点是数据源源不断的计算,且数据是动态的;而MapReduce作为离线计算框架,主要是针对静态数据集,数据是不能动态变化的。

3、MapReduce实例进程

      一个完整的MapReduce程序在分布式运行时有三类

           1)MRAppMaster:负责整个MR程序的过程调度及状态协调。

            2)MapTask: 负责Map阶段的整个数据处理流程。

            3)ReduceTask:负责reduce阶段的整个数据处理流程。

4、阶段组成 

   1 个MapReduce 编程模型只能包含一个Map阶段和一个Reduce阶段,或者只有Map阶段

    不能有诸多map阶段、多个reduce阶段的情景

     如果业务逻辑非常复杂,只能多个MapReduce程序串行运行。

 

5、数据类型

      整个MR程序中,数据都是以Key-value键值对的形式流传的

       在实际业务中,需要考虑每个阶段的输入输出kv分别是什么

        MR内置很多默认属性,比如排序、分组等,都是和数据的k有关,所以 极其重要。

6、官方示例

       完整的MR程序=用户编写的代码+Hadoop自己实现的代码   ”+“=整合

       用户负责map、reduce俩阶段业务问题,Hadoop负责底层所有的技术问题

       企业中很小涉及到MR直接编程(因为慢),官方提供示例,展示MR及其内部执行程序,以及后面Spark背后也有MR。 

  1)计算pi值

2)WordCount

map阶段的核心:把输入的数据进行切割,全部标记1,输出格式<单词,1>

shuffle阶段的核心:经过MR程序内部自带默认的排序分组等功能,把key相同的单词作为一组数据构成新的kv对。((排序过程也叫key的字典序

reduce阶段的核心:处理shuffle完的一组数据,该组数据就是该单词所有的键值对。对所有的1累加求和,就是单词的总次数。

在Web UI上显示的结果

3)执行过程:

map阶段:

1)第一阶段:把输入目录下文件按照一定标准逐个进行逻辑切片,形成切片规划

  默认Split size =Block size(128M),每一个切片由一个MapTask处理(getSplits)

      第二阶段:对切片中的数据按照一定的规则读取解析返回<key,value>对

      默认是按行读取数据。key是每一行的起始位置偏移量,value是本行的文本内容(TextInputFormat)

      第三阶段:调用Mapper类中的map方法处理数据

       每读取解析出来的一个<key,value>,调用一次map方法

      第四阶段:按照一定的规则对Map输出的键值对进行分区partition。默认不分区,因为只有一个reducetask(分区数量=reducetask数量

       第五阶段:Map数据输出数据写入内存缓冲区,达到比例溢出到磁盘上,溢出spill的时候根据key进行排序sort默认根据key字典序排序。(为解决频繁的直接到磁盘导致性能下降,设置的缓冲区)

      第六阶段:对所有溢出文件进行最终的merge合并成为一个文件

reduce阶段:

第一阶段(copy):RuduceTask会主动从MapTask复制拉取属于需要自己处理的数据(主动拉取 +copy)

第二阶段(merge+sort):拉取的数据,全合并merge(即将分散的数据合并成一个大的数据,在对合并后的数据排序

第三阶段:对排序后的键值对,调用reduce方法键相等的键值对调用一次reduce方法。最后把这些输出的键值对写入到HDFS文件中。

 

7、Shuffle机制

shuffle:将map端的无规则输出按照指定的规则“打乱”成具有一定规则的数据,以便reduce端接收处理。一般把从map产生输出开始到Reduce取得数据作为输入之前的过程成为shuffle

 弊端:慢,因为频繁涉及到数据在内存、磁盘之间的多次往复。

二、YARN

1、yarn介绍

简介:是一种新的Hadoop资源管理器(资源协调者),通用资源管理系统和调度平台,可以为上层应用提供统一的资源管理和调度。在为集群的利用率、资源统一管理和数据共享等方面带来了巨大好处。

概述:

 

功能:资源管理系统:集群的硬件资源,和程序运行相关,比如内存、cpu等

           调度平台:多个程序同时申请计算资源如何分配,调度的规则(算法)

           通用:不仅支持MR,理论上也支持各种计算程序

2、框架、组件

    3大组件:

     ResourceManager(RM):yarn集群中主角色,决定系统中所有应用程序之间资源分配的最终权限,及最终仲裁者。

     NodeManager(NM):yarn中的从角色,一天机器上一个,负责管理本机器上的计算机资源

     根据RM命令,启动Container容器、监视容器的资源使用情况。并且向RM主角色汇报资源使用情况。

      ApplicationMaster(AM):用户提交的每个应用程序均包含一个AM。(应用程序内的“老大”),负责程序内部各阶段的资源申请,监督程序的执行情况。

3、程序提交yarn流程

1)核心交互流程

2)整体概述

用户向yarn提交应用程序后,yarn将分俩个阶段运行该应用程序

第一阶段:客户端申请资源启动运行本次程序的ApplicationMaster

第二阶段:由ApplicationMater根据本次程序内部具体情况,为其申请资源,并监控他的整个运行过程,直到运行完成。

3)MR提交YARN交互流程

第一步:用户通过客户端向yarn中ResourceManager提交应用程序(比如Hadoop jar提交MR程序)

第二步:ResourceManager为该应用程序分配第一个Container(容器),并与之对应NodeManager通信,要求它在这个Container中启动这个应用程序的ApplicationMaster。

第三步:ApplicationMaster启动成功后,向RM注册并保持通信,用户可以通过RM查看运行状态(处理进度%)

第四步:AM为本次程序内部的各个Task任务向RM申请资源,并监控它的运行状态。

第五步:AM申请到资源后,对NM通信,要求启动任务。

第六步:NM为任务设置好运行环境后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。

第七步:各个任务通过RPC协议向AM汇报进度和状态,让AM随时掌握各个任务情况,以便于重新启动任务,用户可以通过AM查看任务状态。

第八步:任务完成后,AM向RM注销并关闭自己。

4、yarn资源调度器Scheduler

资源有限,在繁忙的集群上,根据一些定义的策略为应用程序分配资源

1)三种调度器:

FIFO Scheduler  :先进先出   无需配置  易于执行

                      缺点:优先级不会变高,高优先级的作业需要等待,不适合共享集群。

Capacity Scheduler: Hadoop3.x默认调度策略,允许多个组织共享整个集群资源,通过为每个组织分配专门的队列,然后在为每个队列分配一定的集群资源。

                     优点:层次化的队列设计、容量保证、安全、弹性分配

Fair Scheduler:公平调度,公平的共享大型集群中资源(以下不是各1/3)

                  优点:分层队列,按层级机构划分资源;基于用户或组的队列映射;资源抢占,根据应用配置,抢占和分配资源,默认不启动资源抢占。

                  特点:保证最小配额、允许资源共享、默认不限制每个队列和用户可以同时运行应用的数量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值