一文揭秘Hadoop家族大管家YARN
小Ke同学 | 2023-03-27 11:31:26  1054 浏览

在大数据分析和计算领域,那必须是Hadoop的天下啊!经过多年的发展,Hadoop家族也在不断的壮大、完善、成熟,现已包含HDFS、MapReduce、Zookeeper、HBase、Hive、Pig、Mahout、Sqoop、Flume、Ambari等组件。


HDFS是分布式文件系统,负责超大数据的存储;HBase是提供高可靠、高性能、实时读写的分布式列式数据库,主要存储非结构化数据(底层依托HDFS);MapReduce是数据计算模型,负责海量的、负责的数据计算任务处理;Hive是数据仓库,以MapReduce为底层能力进行数据计算分析;Zookeeper是分布式服务协调框架,用于分布式应用构建和管理;Ambrari负责Hadoop集群的安装、配置、部署管理;Flume提供高可用、高可靠、分布式的日志采集。


总而言之,Hadoop家族真的是非常强大啊,各种各样的技术组件都有,这些技术组件拆开在各个领域,都是一等一的高手,每个组件都有自己的资源调度系统管理自己任务的资源分配,为业务解决着各种各样的问题,日子过的风生水起。


但是当这些高手们都聚集在一起时,问题就出现了,有的组件可能申请不到资源,有的组件可能申请了过多资源不用,从而导致有的服务不能运转、有的服务资源过度浪费。不过姜还是老的辣,我们一起来看看Hadoop是如何解决这场家族危机的吧?


Yarn(YetAnother Resource Negotiator)是Hadoop的集群资源调度框架,提供资源管理和任务调度两大能力,为上层服务提供统一的资源管理和调度,提供资源利用率。

image.png

在介绍YARN之前,我们先来看看相关的名词解释。在YARN中有四个名词,即ResourceManager、ApplicationMaster、NodeManager、Container,ResourceManager是全局的资源管理器(大管家),负责管理整个Hadoop集群的基础资源(比如CPU、内存),根据容量、队列等情况,将资源分配给到各个正在运行当中的应用程序;ApplicationMaster是具体应用程序运行时的管控者(小管家),它协调来自大管家的资源,分配资源给到应用程序内部使用,在任务运行时进行监控,任务执行失败时重新申请资源并启动任务;NodeManager是应用程序中具体实例的资源管理(小小管家),它负责管理自己节点的整个生命运行周期,接受来自小管家的安排(如启动、停止);Container负责具体实例的运行(长工),在负责运行每个一个实例任务,比如Spark计算任务,同时接受小小管家的安排。

image.png

YARN是一个非常强大、非常可靠的资源共享型平台,它的应用场景也很多,比如用于Spark任务调度,接收spark的任务并处理,比如用于MapReduce任务的生命周期管理,我们以Spark任务调度为例,来看看YARN的工作流程是怎么样呢?


现在我们要执行一个Spark计算任务,Spark客户端向YARN提交计算任务的应用程序申请;YARN的ResourceManager大管家收到请求之后,在整个资源池中寻找是否有资源可用,找到之后生成一个Container长工,并分配NodeManager小小管家进行管理,同时启动应用程序的ApplicationMaster小管家;小管家在执行应用程序的任务之前,先把自己在大管家进行报备,这样用户就可以在大管家那里查看应用程序的运行状态并进行管理了。


在长工Container的任务开始执行后,小管家通过轮询的方式不断向大管家申请资源,并且把申请到的资源又分配给小小管家,安排它为长工准备好工作环境、随时恭候干活,在干活的过程中,大管家、小管家、小小管家不断的进行通信交流,随时知道各个长工的工作状态、任务完成情况,在出现问题时及时出手进行解决,保障任务的顺利完成。任务完成之后,小管家向大管家会报工作,释放资源。

image.png

YARN不止聚焦于Hadoop家族内的资源管理,为了使自己变得更加强大,它还开放了ApplicationMaster小管家的能力。通过上面的运行流程我们也能看到,大管家、小小管家、长工都和业务没关系,只是任务执行流水线上的一环,只有小管家才和业务紧密管理。YARN允许第三方框架集成ApplicationMaster,支持了更多的业务类型,扩展了自己的范围。我们常看到的MapReduceOn YARN、SparkOn YARN、StormOn YARN等解决方案便是在YARN原生能力的集成扩展。


所谓没有规矩,不成方圆。在一个技术生态出现之后,必然有对应的管理体系出现,正如Docker容器出现之后,容器调度系统DockerSwarm、Kubernetes就出现了一样,Hadoop生态系统出现壮大后,YARN也随之应运而生,一切都是为了更好的服务于业务。通过本文的讲解,你明白了YARN是啥?如何工作?如何管控整个Hadoop家族了吗?


标签: