章
目
录
1.YARN什么?
YARN:(Yet Another Resources Negotiator): Hadoop2.0以后版本提供的job调度和分布式资源管理框架(运算资源调度系统)
2.YARN产生背景
在旧版本的MapReduce中的JobTracker/TaskTracker在可扩展性、消耗内存、可靠性和线程模型方面存在很多问题,需要开发者做很多调整来修复。
1)JobTracker单点故障问题;如果Hadoop集群的JobTracker挂掉,则整个分布式集群都不能使用了。
2)JobTracker承受的访问压力大,影响系统的扩展性。
3)不支持MapReduce之外的计算框架,比如Storm、Spark、Flink等。
从Hadoop 0.23.0版本开始,Hadoop 的MapReduce框架被动了“大手术”,发生了根本变化,新的Hadoop MapReduce框架被命名为MapReduce V2,也叫YARN。
3.为什么要使用YARN?
与旧MapReduce相比,YARN采用了一种分层的集群框架,具有以下几个优势:
1)Hadoop2.0提出了HDFSFederation;它让多个NameNode分管不同的目录进而实现访问隔离和横向扩展。对于运行中NameNode的单点故障,通过 NameNode热备方案(NameNode HA)实现 。
2) YARN通过将资源管理和应用程序管理两部分剥离开来,分别由ResourceManager和ApplicationMaster进程来实现。其中,ResouceManager专管资源管理和调度,而ApplicationMaster则负责与具体应用程序相关的任务切分、任务调度和容错等。
3)YARN具有向后兼容性,用户在MR1上运行的作业,无需任何修改即可运行在YARN之上。
4)对于资源的表示以内存为单位(在目前版本的 Yarn 中没有考虑 CPU的占用),比之前以剩余 slot 数目为单位更合理。
5)支持多个框架,YARN不再是一个单纯的计算框架,而是一个框架管理器,用户可以将各种各样的计算框架移植到YARN之上,由YARN进行统一管理和资源分配,由于将现有框架移植到YARN之上需要一定的工作量,当前YARN仅可运行MapReduce这种离线计算框架。
6)框架升级容易,在YARN中,各种计算框架不再是作为一个服务部署到集群的各个节点上(比如MapReduce框架,不再需要部署JobTracker、 TaskTracker等服务),而是被封装成一个用户程序库(lib)存放在客户端,当需要对计算框架进行升级时,只需升级用户程序库即可。