Hadoop2.x 让你真正明白yarn

http://dataunion.org/27202.html


相同点

hadoop2.x的发展是由于hadoop1.x的问题造成的。

那么是什么问题造成的。比较流行的说法是jobtracker的问题,比如单点故障,任务过重。我们知道了除了Jobtracker,同时还有一个TaskTracker。我们看下图:

1

上图中,有一个JobTracker,多个TaskTracker。

Yarn比较

我们在来看yarn

2

我们看到有一个ResourceManager,多个NodeManager。

也就是说hadoop1.x mapreduce框架与hadoop2.x yarn,他们的框架相同之处,都是分布式的。

再次总结相同处:

JobTracker一个,TaskTracker多个

resourceManager一个,NodeManager多个

不同点

既然他们框架结构是相同的,那么到底是什么原因,淘汰JobTracker机制。

这时候我们就需要看看JobTracker到底干了哪些事情。

3

再看上图:JobTacker概述

JobTacker其承担的任务有:接受任务、计算资源、分配资源、与DataNode进行交流。

在hadoop中每个应用程序被表示成一个作业,每个作业又被分成多个任务,JobTracker的作业控制模块则负责作业的分解和状态监控。

*最重要的是状态监控:主要包括TaskTracker状态监控、作业状态监控和任务状态监控。主要作用:容错和为任务调度提供决策依据。

TaskTracker概述

TaskTracker是JobTracker和Task之间的桥梁:一方面,从JobTracker接收并执行各种命令:运行任务、提交任务、杀死任务等;另一方面,将本地节点上各个任务的状态通过心跳周期性汇报给JobTracker。TaskTracker与JobTracker和Task之间采用了RPC协议进行通信

TaskTracker的功能:

1.汇报心跳:Tracker周期性将所有节点上各种信息通过心跳机制汇报给JobTracker。这些信息包括两部分:

*机器级别信息:节点健康情况、资源使用情况等。

*任务级别信息:任务执行进度、任务运行状态等。

2.执行命令:JobTracker会给TaskTracker下达各种命令,主要包括:启动任务(LaunchTaskAction)、提交任务(CommitTaskAction)、杀死任务(KillTaskAction)、杀死作业(KillJobAction)和重新初始化(TaskTrackerReinitAction)。

slot概述

slot不是CPU的Core,也不是memory chip,它是一个逻辑概念,一个节点的slot的数量用来表示某个节点的资源的容量或者说是能力的大小,因而slot是 Hadoop的资源单位。

yarn详解

Yarn的基本思想是拆分资源管理的功能,作业调度/监控到单独的守护进程

这里面出现了很多名词:

ResourceManager,NodeManager,ApplicationMaster,Container,同样下面亦是yarn结构图。

ResourceManager是全局的,负责对于系统中的所有资源有最高的支配权。

ApplicationMaster 每一个job有一个ApplicationMaster 。

NodeManager,NodeManager是基本的计算框架。

NodeManager 是客户端框架负责 containers, 监控他们的资源使用 (cpu, 内存, 磁盘, 网络) 和上报给 ResourceManager/Scheduler.

ApplicationMaster首先它是一个框架库,它的功能官网说的不够系统,大意,由于NodeManager 执行和监控任务需要资源,所以通过ApplicationMaster与ResourceManager沟通,获取资源。换句话说,ApplicationMaster起着中间人的作用。

转换为更专业的术语:AM负责向ResourceManager索要NodeManager执行任务所需要的资源容器,更具体来讲是ApplicationMaster负责从Scheduler申请资源,以及跟踪这些资源的使用情况以及任务进度的监控。

ResourceManager有两个组件:调度器和应用程序管理器。

调度器(Scheduler)是可插拔的,比如有Fair Scheduler、Capacity Scheduler等,当然调度器也可以自定义。

应用程序管理器

负责接收提交的任务,指定ApplicationMaster申请资源(container) ,协调并提供在ApplicationMaster容器失败时的重启功能。

而下图也是官网提供内容,大家可以参考下。

4

总结

为了更好的理解,我们就需要跟hadoop1.x比较:

为何要使用yarn。

我们看到JobTracker的功能被分散到各个进程中包括ResourceManager和NodeManager:

比如监控功能,分给了NodeManager,和Application Master。

ResourceManager里面又分为了两个组件:调度器及应用程序管理器。

也就是说Yarn重构后,JobTracker的功能,被分散到了各个进程中。同时由于这些进程可以被单独部署所以这样就大大减轻了单点故障,及压力。

同时我们还看到Yarn使用了Container,而hadoop1.x中使用了slot。slot存在的缺点比如只能map或则reduce用。Container则不存在这个问题。这也是Yarn的进步。

 

文章来源:About

注:转载文章均来自于公开网络,仅供学习使用,不会用于任何商业用途,如果侵犯到原作者的权益,请您与我们联系删除或者授权事宜,联系邮箱:contact@dataunion.org。转载数盟网站文章请注明原文章作者,否则产生的任何版权纠纷与数盟无关。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值