大数据开发笔记(二):Yarn分布式集群操作系统

简介: Apache Hadoop YARN 是 apache Software Foundation Hadoop的子项目,为分离Hadoop2.0资源管理和计算组件而引入。YARN的诞生缘于存储于HDFS的数据需要更多的交互模式,不单单是MapReduce模式。Hadoop2.0 的YARN 架构提供了更多的处理框架,不再强迫使用MapReduce框架。

Yarn分布式集群操作系统


Apache Hadoop YARN 是 apache Software Foundation Hadoop的子项目,为分离Hadoop2.0资源管理和计算组件而引入。YARN的诞生缘于存储于HDFS的数据需要更多的交互模式,不单单是MapReduce模式。Hadoop2.0 的YARN 架构提供了更多的处理框架,不再强迫使用MapReduce框架。


Yarn定位: 分布式集群操作系统


1、资源管理和调度


2、支持多个不同计算框架


3、Mapreduce框架彻底重构


1.介绍下Yarn的框架?(重要)


Yarn的框架也是经典的主从结构,和HDFS的一样,大体上yarn由一个ResourceManager和多个NodeManager构成,RM为主节点,NM为从节点。

image.png


  • ResourceManager 是Master上一个独立运行的进程,负责集群统一的资源管理、调度、分配等等;


  • ApplicationManager相当于这个Application的监护人和管理者,负责监控、管理这个Application的所有


  • Attempt在cluster中各个节点上的具体运行,同时负责向Yarn ResourceManager申请资源、返还资源等;


  • NodeManager是Slave上一个独立运行的进程,负责上报节点的状态(磁盘,内存,cpu等使用信息);


  • Container是yarn中分配资源的一个单位,包涵内存、CPU等等资源,YARN以Container为单位分配资源;


(1) 抽象解读:

资源级别:


Resource Manger :链家总部 ----分配资源


NodeManager :链家分店店长 --- 监管工作,检查定期美容院分店


美容院总部--开100家分店


任务级别:


ApplicationManager:美容院老板--监控分店


Contianer: 美容店分店----干活


ResourceManager:


1、接收客户端请求


2、为系统资源分配


3、与NM进行心跳交互,监控集群


4、调度组件Scheduler


RM挂掉: 单点故障:基于Zookeeper实现HA,主提供服务, 备同步主的信息,如果主挂掉,立即主备切换


ApplicationManager/ApplicationMaster (MR任务启动时候jps有MRAppmaster,任务完成就没了)


1、应用程序的Master


2、每一个Job对应一个AM


3、AM和RM不在一个机器


4、AM申请RM资源调度


5、AM联合NM监控job


AM挂掉: RM负责重启 无需重新运行已完成的任务


NodeManager:(只管内存资源)


1、对应1.0TaskTracker的角色


2、负责启动应用程序的Container


3、监控内部容器资源使用情况,心跳RM


NM挂掉: 心跳消失,RM通知AM进一步处理


Container:


1、任务运行环境的封装


2、AM及普通任务均运行在Container中


3、资源代表


container数量=min(2*cores, 1.8*disks, 总内存大小/最小容量)


(2)具体解读:

ResourceManager是一个全局的资源管理器,负责整个系统的资源调度管理和分配,包括处理客户端请求、启动并监控ApplicationMaster,监控NodeManager,以及分配和调度资源。


ResourceManager中由两个组件构成: Schedule调度器和ApplicationManager应用程序管理器


Schedule调度器会根据容量、队列等限制条件,对应用程序的资源需求进行资源分配。(调度器有三种:先进先出调度器,容量调度器和均分调度器)


ApplicationManager则主要负责管理整个系统中所有应用程序,接受job请求,为应用分配一个Container来运行ApplicationMaster并管理,它和ApplicationMaster的区别是Master运行在NodeManger上的,而ApplicationManager是ResourceManager内部的一个组件。


ApplicationMaster


负责管理yarn内运行的应用程序的每个实例,负责协调来自ResourceManager的资源,并通过NodeManager监控容器的执行和资源使用情况。


NodeManager


在集群上有多个,它负责每个节点上的资源使用,处理ApplicationManager的请求,以及负责接受ResourceManager的资源分配命令,分配具体的Container给应用,同时还将Container的使用情况报告给ResourceManager。


这里的Container实际上是一个资源抽象概念,代表系统上分配的资源,包括内存、磁盘、IO等。


具体工作过程如下:

1. 当客户端应用程序向ResourceManager提交应用需要的资源请求后,ResourceManager中的ApplicationManager接受到请求,并返回一个Container给NodeManger,告诉NodeManager启动一个ApplicationMaster实例。


2.ApplicationMaster启动后向ResourceManager注册,此时客户端可以和ApplicationMaster直接交互,并告诉它需要的资源请求;后续ApplicationMaster继续发送资源请求给ResourceManager,待ResourceManager的Schedule处理后返回具体的Container信息,ApplicationMaster接收到资源信息后会分配给各个NodeManager来启动运行job任务(比如mr程序,内部是多个map task、reduce task)。


3. 在运行过程中,客户端和ApplicationMaster保持交互,可以得知程序的运行情况。ApplicationMaster此时主要监控和管理任务运行,而NodeManager会定时向ResourceManager汇报自身的运行状况和Container的使用信息,待程序运行完毕后,ApplicationMaster关闭,并向ResourceManager归还所有Container。


概括来说其过程如下:


应用程序提交 --> 申请资源 --> 启动ApplicationMaster --> 申请运行任务的Container


--> 分发Container --> 运行task任务 --> task任务结束 --> 回收Container


Yarn总结:


1.Yarn 工作流程:


1.用户client将应用程序提交到RM上


2.RM为应用程序ApplicationMaster申请资源,并且与nodemanager心跳通信,来启动Application Master


3.ApplicationMaster与RM进行通信,为内部要执行的任务申请资源,一旦得到资源后,Application Master和Nodemanager通信,来启动对应任务


4.所有任务完成ApplicationMaster向RM注销,整个应用程序结束。


        另外JobHistoryServer(作业历史服务,记录在yarn中调度的作业历史运行情况) 和 Timeline Server(写日志数据),需要手动开启。


2.Yarn的动态性是指什么?


是指多个应用程序的ApplicationMaster动态地和ResourceManager进行沟通,不断地申请资源,释放,再申请,再释放资源的过程。


3.Yarn的调度器有哪三种?他们的区别是什么?(重要)


yarn中有三种调度器选择:


FIFO Scheduler(先进先出调度器),


Capacity Scheduler(容量调度器),


Fair Scheduler(均分调度器)


三种调度器区别



hadoop1.x使用的默认调度器就是FIFO。FIFO采用队列方式将一个一个job任务按照时间先后顺序进行服务,比较好理解,哪个任务先进来就先完成它,在继续下一个任务。


hadoop2.x使用的默认调度器是Capacity Scheduler。Capacity Schedule调度器以队列为单位划分资源,队列有独立的资源,队列的结构和资源是可以进行配置的。


Fair Scheduler调度器会为所有job任务动态调整系统资源,且是平均分配的形式,让任务公平的共享集群资源




相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
2天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
2天前
|
算法 调度
电动汽车集群并网的分布式鲁棒优化调度matlab
电动汽车集群并网的分布式鲁棒优化调度matlab
|
2天前
|
运维 Cloud Native 持续交付
构建未来:以云原生为基石的分布式系统架构深入理解操作系统的内存管理机制
【4月更文挑战第30天】 随着企业数字化转型的不断深入,传统的IT架构已难以满足市场对于敏捷性、可扩展性和成本效益的需求。云原生技术作为推动这一变革的关键因素,其设计理念和实现方式正在重塑软件开发和运维模式。本文将探讨云原生架构的核心组件,包括容器化、微服务、持续集成/持续部署(CI/CD)、以及无服务器计算等,并分析其在构建分布式系统中的作用与挑战。通过实际案例,我们将展示如何利用云原生技术构建高效、弹性和可维护的分布式系统。
|
2天前
|
负载均衡 Java 网络架构
【SpringCloud】如何理解分布式、微服务、集群
【SpringCloud】如何理解分布式、微服务、集群
24 1
|
2天前
|
Java 网络安全 Apache
搭建Zookeeper集群:三台服务器,一场分布式之舞
搭建Zookeeper集群:三台服务器,一场分布式之舞
52 0
|
2天前
|
存储 算法 调度
【软件设计师—基础精讲笔记2】第二章 操作系统2
【软件设计师—基础精讲笔记2】第二章 操作系统1
26 1
|
2天前
|
存储 算法 Unix
【软件设计师—基础精讲笔记2】第二章 操作系统1
【软件设计师—基础精讲笔记2】第二章 操作系统
67 1
|
2天前
|
存储 负载均衡 NoSQL
【分布式技术架构】「Tomcat技术专题」 探索Tomcat集群架构原理和开发分析指南
【分布式技术架构】「Tomcat技术专题」 探索Tomcat集群架构原理和开发分析指南
54 1
|
2天前
|
存储 分布式计算 大数据
现代化数据库技术——面向大数据的分布式存储系统
传统的关系型数据库在面对大规模数据处理时遇到了诸多挑战,而面向大数据的分布式存储系统应运而生。本文将深入探讨现代化数据库技术中的分布式存储系统,包括其优势、工作原理以及在大数据领域的应用。
|
2天前
|
Java Linux 开发工具
Centos7搭建minio分布式集群
Centos7搭建minio分布式集群