邕宁| 海淀| 元阳| 贵州| 迭部| 灞桥| 绥宁| 嵊泗| 宜良| 平房| 多伦| 喀喇沁左翼| 景东| 罗城| 宜良| 六安| 惠来| 盖州| 抚顺县| 孟州| 巩留| 尚志| 大冶| 平谷| 巴楚| 大安| 邱县| 大竹| 札达| 城阳| 临湘| 泸州| 富蕴| 修武| 乌拉特前旗| 德州| 乾县| 贾汪| 察哈尔右翼后旗| 景县| 水富| 榕江| 彬县| 凌云| 丰县| 阳原| 永泰| 阳朔| 肃北| 淮南| 东西湖| 印台| 高明| 曲江| 温江| 德江| 寒亭| 栾城| 清丰| 上饶市| 桂平| 丰都| 乾安| 大港| 青白江| 平和| 安福| 襄樊| 金堂| 茶陵| 揭西| 乐山| 桐城| 安陆| 中宁| 沁源| 龙南| 连云港| 乐山| 定结| 石阡| 龙江| 策勒| 南平| 古蔺| 苏家屯| 会同| 杞县| 噶尔| 蒙山| 吉安县| 四子王旗| 东西湖| 霍山| 云集镇| 安县| 秦安| 承德市| 盐津| 兰西| 黄骅| 西山| 南岔| 张家港| 梅县| 涿鹿| 富拉尔基| 乾安| 马龙| 庐山| 韩城| 新干| 台北市| 灵璧| 中卫| 辽源| 荣成| 阿坝| 瓯海| 宝兴| 弓长岭| 武平| 双城| 宁国| 凯里| 盘锦| 红岗| 吉安县| 凌海| 措勤| 平乐| 东辽| 淇县| 郑州| 弓长岭| 十堰| 清镇| 邵武| 乌什| 正定| 安远| 安乡| 正镶白旗| 安远| 南涧| 固始| 阿拉善左旗| 苍溪| 马山| 邯郸| 通辽| 汉口| 衡南| 建水| 山海关| 正阳| 盂县| 阳城| 萨迦| 廊坊| 宜城| 海林| 公安| 兴文| 密云| 唐海| 裕民| 锦屏| 松阳| 山阳| 祁门| 嵊州| 鹿寨| 筠连| 高雄县| 吉木萨尔| 绥江| 梅县| 茶陵| 翁牛特旗| 天祝| 淮南| 泗阳| 澄城| 南安| 项城| 广西| 科尔沁左翼中旗| 固阳| 定日| 定远| 当阳| 岑巩| 永和| 邕宁| 冠县| 许昌| 鄱阳| 景东| 武宁| 遵义县| 荥经| 郸城| 麟游| 简阳| 金塔| 革吉| 大连| 赵县| 泰宁| 嘉兴| 下陆| 泸定| 自贡| 石泉| 本溪满族自治县| 札达| 南皮| 北安| 儋州| 合阳| 青河| 黄石| 韩城| 甘洛| 凤翔| 达县| 五华| 康乐| 友好| 合江| 威信| 成都| 南澳| 盐都| 赣县| 林芝县| 温泉| 盂县| 永安| 察哈尔右翼后旗| 山丹| 青田| 临夏县| 井陉矿| 红星| 紫云| 卢龙| 政和| 井研| 台湾| 永新| 博兴| 繁峙| 鄂州| 衡南| 调兵山| 成都| 吴堡| 如皋| 陆河| 比如| 户县| 确山| 现金赌博
|
|
51CTO旗下网站
|
|
移动端

深入浅出Hadoop YARN

在详细介绍 Yarn 之前,我们先简单聊聊 Yarn ,Yarn 的全称是 Yet Another Resource Negotiator,意思是“另一种资源调度器”,这种命名和“有间客栈”这种可谓是异曲同工之妙。

作者:终日而思一来源:阿里云栖社区|2019-01-17 15:29

一. Hadoop Yarn 是什么

在古老的 Hadoop1.0 中,MapReduce 的 JobTracker 负责了太多的工作,包括资源调度,管理众多的 TaskTracker 等工作。这自然是不合理的,于是 Hadoop 在 1.0 到 2.0 的升级过程中,便将 JobTracker 的资源调度工作独立了出来,而这一改动,直接让 Hadoop 成为大数据中最稳固的那一块基石,而这个独立出来的资源管理框架,就是 Yarn 。

在详细介绍 Yarn 之前,我们先简单聊聊 Yarn ,Yarn 的全称是 Yet Another Resource Negotiator,意思是“另一种资源调度器”,这种命名和“有间客栈”这种可谓是异曲同工之妙。这里多说一句,以前 Java 有一个项目编译工具,叫做 Ant,他的命名也是类似的,叫做 “Another Neat Tool”的缩写,翻译过来是”另一种整理工具“。

既然都叫做资源调度器了,那么自然,它的功能也是负责资源管理和调度的,接下来,我们就深入到 Yarn 这个东西内部一探究竟吧。

二. Yarn 架构

深入浅出Hadoop YARN

我们主要围绕上面这张图展开,不过在介绍图中内容时,需要先了解 Yarn 中的 Container 的概念,然后会介绍图中一个个组件,最后看看提交一个程序的流程。

2.1 Container

容器(Container)这个东西是 Yarn 对资源做的一层抽象。就像我们平时开发过程中,经常需要对底层一些东西进行封装,只提供给上层一个调用接口一样,Yarn 对资源的管理也是用到了这种思想。

深入浅出Hadoop YARN

如上所示,Yarn 将CPU核数,内存这些计算资源都封装成为一个个的容器(Container)。需要注意两点:

  • 容器由 NodeManager 启动和管理,并被它所监控。
  • 容器被 ResourceManager 进行调度。

NodeManager 和 ResourceManager 这两个组件会在下面讲到。

2.2 三个主要组件

再看最上面的图,我们能直观发现的两个主要的组件是 ResourceManager 和 NodeManager ,但其实还有一个 ApplicationMaster 在图中没有直观显示。我们分别来看这三个组件。

ResourceManager

我们先来说说上图中最中央的那个 ResourceManager(RM)。从名字上我们就能知道这个组件是负责资源管理的,整个系统有且只有一个 RM ,来负责资源的调度。它也包含了两个主要的组件:定时调用器(Scheduler)以及应用管理器(ApplicationManager)。

定时调度器(Scheduler):从本质上来说,定时调度器就是一种策略,或者说一种算法。当 Client 提交一个任务的时候,它会根据所需要的资源以及当前集群的资源状况进行分配。注意,它只负责向应用程序分配资源,并不做监控以及应用程序的状态跟踪。

应用管理器(ApplicationManager):同样,听名字就能大概知道它是干嘛的。应用管理器就是负责管理 Client 用户提交的应用。上面不是说到定时调度器(Scheduler)不对用户提交的程序监控嘛,其实啊,监控应用的工作正是由应用管理器(ApplicationManager)完成的。

ApplicationMaster

每当 Client 提交一个 Application 时候,就会新建一个 ApplicationMaster 。由这个 ApplicationMaster 去与 ResourceManager 申请容器资源,获得资源后会将要运行的程序发送到容器上启动,然后进行分布式计算。

这里可能有些难以理解,为什么是把运行程序发送到容器上去运行?如果以传统的思路来看,是程序运行着不动,然后数据进进出出不停流转。但当数据量大的时候就没法这么玩了,因为海量数据移动成本太大,时间太长。但是中国有一句老话山不过来,我就过去。大数据分布式计算就是这种思想,既然大数据难以移动,那我就把容易移动的应用程序发布到各个节点进行计算呗,这就是大数据分布式计算的思路。

NodeManager

NodeManager 是 ResourceManager 在每台机器的上代理,负责容器的管理,并监控他们的资源使用情况(cpu,内存,磁盘及网络等),以及向 ResourceManager/Scheduler 提供这些资源使用报告。

三. 提交一个 Application 到 Yarn 的流程

深入浅出Hadoop YARN

这张图简单地标明了提交一个程序所经历的流程,接下来我们来具体说说每一步的过程。

Client 向 Yarn 提交 Application,这里我们假设是一个 MapReduce 作业。

ResourceManager 向 NodeManager 通信,为该 Application 分配第一个容器。并在这个容器中运行这个应用程序对应的 ApplicationMaster。

ApplicationMaster 启动以后,对 作业(也就是 Application) 进行拆分,拆分 task 出来,这些 task 可以运行在一个或多个容器中。然后向 ResourceManager 申请要运行程序的容器,并定时向 ResourceManager 发送心跳。

申请到容器后,ApplicationMaster 会去和容器对应的 NodeManager 通信,而后将作业分发到对应的 NodeManager 中的容器去运行,这里会将拆分后的 MapReduce 进行分发,对应容器中运行的可能是 Map 任务,也可能是 Reduce 任务。

容器中运行的任务会向 ApplicationMaster 发送心跳,汇报自身情况。当程序运行完成后, ApplicationMaster 再向 ResourceManager 注销并释放容器资源。

以上就是一个作业的大体运行流程。

为什么会有 Yarn ?

上面说了这么多,最后我们来聊聊为什么会有 Yarn 吧。

直接的原因呢,就是因为 Hadoop1.0 中架构的缺陷,在 MapReduce 中,jobTracker 担负起了太多的责任了,接收任务是它,资源调度是它,监控 TaskTracker 运行情况还是它。这样实现的好处是比较简单,但相对的,就容易出现一些问题,比如常见的单点故障问题。

要解决这些问题,只能将 jobTracker 进行拆分,将其中部分功能拆解出来。彼时业内已经有了一部分的资源管理框架,比如 mesos,于是照着这个思路,就开发出了 Yarn。这里多说个冷知识,其实 Spark 早期是为了推广 mesos 而产生的,这也是它名字的由来,不过后来反正是 Spark 火起来了。。。

闲话不多说,其实 Hadoop 能有今天这个地位,Yarn 可以说是功不可没。因为有了 Yarn ,更多计算框架可以接入到 Hdfs 中,而不单单是 MapReduce,到现在我们都知道,MapReduce 早已经被 Spark 等计算框架赶超,而 Hdfs 却依然屹立不倒。究其原因,正式因为 Yarn 的包容,使得其他计算框架能专注于计算性能的提升。Hdfs 可能不是最优秀的大数据存储系统,但却是应用最广泛的大数据存储系统,Yarn 功不可没。

【编辑推荐】

  1. 如何将kafka中的数据快速导入Hadoop?
  2. 三大方法保护Hadoop集群免遭攻击!
  3. Hadoop架构已凋谢吗 ?
  4. Hadoop运行在Kubernetes平台实践
  5. 深入理解Hadoop之HDFS架构
【责任编辑:未丽燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

数据挖掘:概念与技术

本书第1版曾被KDnuggets的读者评选为最受欢迎的数据挖掘专著,是一本可读性极佳的教材。它从数据库角度全面系统地介绍了数据挖掘的基本概念...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊
吴屯 谌家矶街道 北呈乡 立发乡 仙庾镇
大沙河水库 辽宁省康平监狱 王佐村 北长山乡 火花镇
斗牛游戏 澳门葡京娱乐官网 澳门百家乐游戏 网上投注游戏 ag电子游戏哪个最会爆
永利娱乐网址 澳门百老汇线上 梭哈游戏博彩 澳门葡京赌场 威尼斯人网址
番摊游戏赌场 澳门葡京平台 澳门真人网站网址 捕鱼达人网页版 澳门大发888娱乐赌场
巴黎人平台 明升平台 mg电子注册 奔驰宝马老虎机下载 真人博彩
老虎机定位器 澳门大富豪网址 现金三公注册网址 牛牛游戏下载 现金骰宝 年度十大电子游戏 大小点游戏 玩什么游戏可以挣钱 电子游戏厅 方法奇葩赌博网 巴黎人网站 pt电子游戏哪个最会爆 澳门巴黎人游戏 澳门龙虎斗注册 澳门大富豪网站 押大小排行 真钱打牌 明升网站 十三水技巧 电子游戏下载 二十一点平台 现金网游戏开户平台 澳门百老汇游戏官网 皇博压大小 真钱捕鱼 跑马机游戏 赌博技巧 巴比伦赌场官网 现金三公 地下网址 捕鱼游戏技巧 英皇网站 手机玩游戏赚钱平台 现金网排行 pt电子游戏注册 赌博技巧 电脑玩游戏赚钱平台 海立方游戏 ag电子游戏排行 希尔顿官网 太阳网上压大小 现金赌钱游戏 现金棋牌游戏 真人网站网址 地下开户 九五至尊娱乐网址 澳门梭哈游戏官网 奇葩袖赌博网 鸿胜国际压大小 博狗扑克游戏 德州扑克游戏规则 庄闲代理 奔驰宝马老虎机下载 现金三公开户注册 免费试玩电子游戏 GT压大小 新濠天地注册 现金老虎机网站 纸牌赌博种类 乐天堂开户 澳门永利平台 电脑版捕鱼达人 玩电子游戏入门 斗牛游戏 bbin压大小 网上电子游戏网址 澳门网络下注平台 明升国际网址 明升娱乐 捕鱼达人电子游戏 mg电子游戏试玩 二十一点游戏赌场 澳门万利赌场官网 大小对比网站 现金电子游戏 电子游戏实用技术 老虎机破解器 澳门梭哈官网 澳门百老汇赌场注册 千炮捕鱼兑换现金 网上合法赌场 PT电子游戏 波克棋牌官方下载 天天棋牌 凤凰棋牌 美少女战士电子游戏 什么游戏可以赚人民币 银河国际娱乐 澳门番摊官网 澳门梭哈官网 胜博发电子游戏 电子游戏打鱼机 澳门现金网 大三巴网站 PT电子游戏 澳门银河国际娱乐