HADOOP 1.x的缺陷:
1,可扩展性差,jobtracker 承担了作业控制和资源分配两项功能。
2,可靠性差,设计使用slave/master 结构,存在单点问题。
3,资源利用率低,map,reduce之间会出现资源空闲。
4,无法兼容其他计算架构,如storm,spark等。
YARN的优势:
1,资源利用率高
2,减少了运维成本
3,数据共享
YARN 结构划分:
1,ResourceManager :用于资源分配
<1> 调度器:根据容量,队列等限制条件分配资源。最小单位为 “资源容器” (resource container)
<2>应用程序管理器:与调度器协商资源启动ApplicationMaster ,并监控AM,失败需重启。
2,ApplicationMaster : 用于任务调度
<1> 与RM协商获取资源(container)
<2>将得到的任务进一步非配给内部任务
<3>与NM通信已启动/停止任务
<4>监控任务状态,失败重启任务
3,NodeManager
<1>NM是每个节点上的资源和任务管理器,向RM汇报container运行情况和资源使用情况。
<2>接收并处理AM的Container启动/停止等请求。
4,Container
<1>动态资源划分单位,根据应用程序需要动态划分。
<2>支持CPU和内存划分,使用了轻量级资源隔离机制Cgroups 进行资源隔离。
工作流程:
1,client 向YARN提交应用程序,包括AM程序,启动AM命令,用户程序等。
2,RM位程序分配Container,并与NM通信,要求他在Container 中启动应用程序AM。
3,AM向RM注册,用户通过RM可以直接查看程序运行状态。申请资源,监控任务运行状况,直到结束。(4-7步骤)
4,AM采用轮询方式通过RPC申请和领取资源。
5,AM申请到资源后,与NM沟通,启动任务。
6,NM设置运行环境(jar包,环境变量),通过脚本启动任务。
7,各个任务通过RPC向AM汇报任务运行情况和进度,可以在任务失败时及时重启任务。
8,任务完成后,AM向RM申请注销和关闭自己。
新特性:
1,append功能,可以追加文件内容,以这种形式修改HDFS文件。
2,HDFS RAID:新的分布式文件系统(Distributed Raid File System),采用Erasule codes 增强对数据的保护,有效的减少副本数。
3,Symlink:hdfs符号连接,类似软连接。
4,Security: 通过Kerberos 和 DeletionToken 实现安全验证和授权机制。
5,Namenode Federation:横向扩展多个Namenode,分管目录。可以解决内存扩展问题。
6,Namenode HA:Namenode 热备份实现,避免单点故障。