1、本科生学士学位论文基于云平台的 Hadoop 自动部署工具实现 A Tool for Deploying Hadoop in Cloud姓 名: 学 号: 院 系: 信息科学技术学院 专 业: 计算机科学与技术 指导老师: 年 月北京大学本科学位论文 基于云平台的 Hadoop 自动部署工具实现II北京大学本科毕业论文导师评阅表学生姓名 学生学号 论文成绩 良学院(系) 信息科学技术学院 学生所在专业 计算机导师姓名 导师单位/所在研究所软件研究所 导师职称 讲师论文题目(中、英文)基于云平台的 Hadoop 自动部署工具实现A Tool for Deploying Hadoop in Clo
2、ud导师评语同学的论文基于云平台的 Hadoop 自动部署工具实现,在燕云云计算平台为用户提供大数据分析服务,具有实用价值。论文思路清晰、结构合理、写作规范。论文的主要不足之处在于没有对虚拟机Hadoop 集群性能进行进一步地实例研究。同学已初步掌握了计算机科学与技术学科的基础理论和专业知识,具有一定的研究能力和工程实践能力。论文已经达到了学士学位论文水平要求,同意提交答辩。导师签名:年 月 日 北京大学本科学位论文 基于云平台的 Hadoop 自动部署工具实现III摘要随着信息化在企业环境中的不断深入,企业中积累了海量的数据。挖掘出这些数据隐藏的价值,对于企业发展至关重要。因此企业迫切需要打
3、造大数据分析服务来提升竞争优势,启迪创新,推动收益增长。然而,目前主流的大数据分析服务一般都基于公有云。这给企业使用大数据带来了不便:首先,公有云要求企业将数据传入云中,在目前的因特网速率下,上 G 上 T 的数据的传输将费时费力。其次,数据在公有云中分析,其分析过程无法控制,分析的结果也可能会留在公有云中。最后,数据一旦离开企业的管辖范围,其安全性和私密性就无法得到保障。这对很多数据至上的企业来说是无法接受的。为此,本文设计并实现了基于企业私有云平台的 Hadoop 自动部署工具,为企业提供快速高效且安全自主的大数据分析服务。本文的主要工作内容包括:1. 介绍研究背景,分析目前基于公有云的大
4、数据分析服务的不足。2. 介绍了燕云私有云计算平台,MapReduce 编程模型和最新的 Hadoop 分布式计算平台。3. 设计并实现了 Hadoop 自动部署工具。4. 在北京大学软件研究所自主研发的燕云私有云计算平台中对 Hadoop 自动部署工具进行了实例验证。讨论了基于虚拟机的 Hadoop 集群的性能瓶颈并提出了相应的解决方案。关键词:大数据分析服务,云计算,Hadoop 分布式计算平台北京大学本科学位论文 基于云平台的 Hadoop 自动部署工具实现IVA Tool for Deploying Hadoop in CloudAbstract:With the rapid deve
5、lopment and popularization of the Internet, vast amounts of data have been accumulated in the Private Cloud of numerous modern companies. Undoubtedly, it is of vital importance for companies to exploit datas potential value for their future commercial development. Traditional companies ,however, hav
6、e no access to deal with the big data technologically . Thus companies urgently need the big data analysis services in order to create a competitive advantage, enlighten innovation and promote gains.Currently, the generally offered big data analysis services is in the public cloud, which brings much
7、 inconvenience to many firms :Firstly, it is time-consuming and resource-wasting for firms to upload their data to the public cloud under the low network transmission speed. Additionally, during the analysis process , commercial data cannot be controlled in the public cloud which may keep the ultima
8、te results .Most importantly, the datas safety and privacy cannot be guaranteed once left the companies network, especially for those state-owned enterprises whose data may involve sensitive information. Based on such issues, this paper designs and implements a tool for deploying hadoop in cloud, wh
9、ich can help companies provide big data analysis services in their own private cloud safely, swiftly, effectively .This paper is made up of the following sections:1. Introduction of the research background (including the Yan Cloud platform, MapReduce programming model and the Hadoop distributed comp
10、uting platform) and a summary of the Public Cloud disadvantages in the big data analysis services .2. Design and Implementation a tool for deploying Hadoop in cloud.3. Verification of the Hadoop tool to provide big data analysis services in Yan Cloud (a platform developed by Software Engineering Ins
11、titute of Peking University) and some suggestions to optimize the Hadoop in virtual machines .Keywords: Big Data Analysis Services , Cloud Computing,Hadoop北京大学本科学位论文 基于云平台的 Hadoop 自动部署工具实现V目录第一章 引言 .11.1 论文研究背景 11.2 现有 Hadoop 自动部署工具介绍 .21.2.1 亚马逊 Elastic MapReduce 21.2.2 微软 Azure HDInsight 31.2.3 阿里
12、 Open Data Processing Service .31.2.4 小结 31.2.5 现有解决方案的不足 31.3 本文工作和结构 41.3.1 本文主要工作 41.3.2 本文结构 5第二章 基于云的 Hadoop 自动部署工具相关技术 .62.1 燕云云管理系统 62.2 MapReduce 编程模型及 Hadoop 介绍 .72.2.1 MapReduce 编程模型介绍 72.2.2 Hadoop 概述 .82.2.3 Hadoop HDFS 介 绍 82.2.4 Hadoop MapReduceV2(Yarn) 框架简介 102.2.5 HADOOP 一 般 部 署 流 程
13、.14第三章 基于云的 Hadoop 自动部署工具的设计与实现 .153.1 用况捕获 .153.2 Hadoop 自动部署工具的体系架构 163.2.1 体系结构 .163.2.2 各模块介绍 .173.3 面向对象分析顺序图 .223.4 新建 Hadoop 集群的流程图 243.5 基于云的 Hadoop 部署工具的优势 25第四章 基于云的 Hadoop 自动部署工具验证 .264.1 新建 Hadoop 集群 26北京大学本科学位论文 基于云平台的 Hadoop 自动部署工具实现VI4.2 提交 MapReduce 任务 .284.3 工具运行结果 .294.4 虚拟集群 Hadoo
14、p 性能分析 29第五章 工作总结和展望 315.1 本文工作总结 .315.2 工作展望 .31参考文献 .32致谢 .33北京大学本科学位论文 基于云平台的 Hadoop 自动部署工具实现1第 一 章 引 言1.1 论文研究背景云计算和大数据分析是全球企业最为关注的两大 IT 话题。大数据分析提供了独具价值的洞察,帮助企业打造竞争优势,启迪创新,推动收益增长。而作为 IT 服务的交付模式,云计算可以增强业务灵活性,增强生产力,同时增加效率、降低成本。根据美国国家标准与技术研究院(NIST)定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资
15、源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。继个人计算变革、互联网变革之后,云计算被看作第三次 IT 浪潮。云计算和大数据分析技术都在不断发展,对于许多企业而言,云计算正在走进现实,并通过部署私有云引领时代潮流。另一方面, 企业正将越来越多的数据存储于云环境中,这些数据不仅类型更为复杂,而且生成速度远远超过以往的记录。据中国移动研究院称,随着全球信息化进程的加快,数据量的增加已经到达了前所未有的速度,2011年创造的信息数据达到180亿GB,而且每年以60%多增加,到2020年全球一年产生的数字信息将达到
16、35ZB,相当于350万亿GB。数据在持续地增多变大,多到现有数据技术无法分析处理,但这些海量数据具有庞大的潜在价值,通过这些数据可以做很多有意义的事情。例如,梅西百货利用大数据分析来实时定价,美国运通使用大数据来预测未来流失客户,国家电网使用大数据来进行城市节电等等。如何能以更加快速、高效、低成本的方式从海量数据中挖掘有价值的、可理解的知识,对于任何企业来说都是相当迫切的事情。从技术上看, 大数据与云计算的关系就像一枚硬币的正反面一样密不可分。大数据必然无法用单台的计算机进行处理,必须采用分布式架构。它的特色在于对海量数据进行分布式数据挖掘,因此它必须依托云计算的分布式处理、分布式数据库和云
17、存储、虚拟化技术。云计算的目的是通过互联网更好地调用、扩展和管理计算及存储资源和能力,以节省企业的 IT 部署成本,其处理对象是IT 资源、处理能力和各种应用。而大数据的目的是充分挖掘海量数据中的信息,北京大学本科学位论文 基于云平台的 Hadoop 自动部署工具实现2发现数据中的价值,其处理对象是各种数据。可以说,大数据为云计算提供了很有价值的用武之地。因此,云计算和大数据的有机结合很有意义,这将发挥二者最大的优势。云计算能为大数据提供弹性而又强大的存储和计算能力,更加迅速的获得海量数据中的潜在价值;而来自大数据的业务需求,能为云计算的落地找到更多的实际应用。众多的大数据处理工具中,使用最为
18、广泛的是 Apache Hadoop。它是一款开源的分布式计算平台,目前已经成为管理规模化大数据的准标准平台。借助简单编程模型,Hadoop 能够轻松处理整个计算机集群的庞大数据集,而将 Hadoop集群迁移部署到云上运行,用户不仅可以在短短几分钟内启动一个 Hadoop 集群,而且可以根据数据规模来轻松增加或减少集群的规模。另一方面,用户可以更专注于数据分析而不是平台搭建,同时云计算的动态伸缩性也可以帮助用户达到节省资源和能耗的目的。因此研究 Hadoop 集群在云端的自动化部署是一项很有实际价值的研究内容。1.2 现有 Hadoop 自动部署工具介绍很多云服务商都开始提供基于 Hadoop
19、 分布式计算平台的大数据分析服务,目前最流行的有亚马逊,微软和阿里巴巴等公司。下面本文将分别介绍这三家公司提供的大数据分析服务,并分析这种服务模式的优缺点。1.2.1 亚马逊 Elastic MapReduceAmazon Elastic MapReduce (Amazon EMR) 是一种 Web 服务,让用户能够轻松快速地处理大量数据。Amazon EMR 基于 Hadoop 开源分布式计算平台,将数据分布在可重新调整大小的 Amazon EC2 实例集群中并进行处理。Amazon EMR 可用于各种应用程序中,包括日志分析、Web 索引、数据仓库、机器学习、财务分析、科学模拟和生物信息学
20、。客户每年启动使用数百万的 Amazon EMR 集群。 Amazon EMR 可以迅速、轻松地预配置所需的容量,并随时添加或移除容量。在处理要求不确定或者不能预料的情况下,这将非常有用。例如,如果处理大多数发生在夜间,那么,白天可能需要 100 个实例,而夜间则可能需要 500 个实例。另一种情况是,北京大学本科学位论文 基于云平台的 Hadoop 自动部署工具实现3可能在短期内需要巨大的计算资源。借助于 Amazon EMR,用户可以迅速地预配置数百或者数千个实例,并在工作完成后随时关闭,避免为空闲的容量付费。1.2.2 微软 Azure HDInsightHDInsight 是 Micr
21、osoft 所提供的基于 Hadoop 的服务,它将 100% 的 Apache Hadoop 解决方案引入到云中。HDInsight 是一个基于云的现代数据平台,可管理任何类型(无论是结构化还是非结构化)、任何规模的数据,可利用它获得大型数据的完全价值。借助 HDInsight,用户可以通过 Microsoft 的现代数据平台无缝地处理所有类型的数据,该数据平台简单且易于管理,可提供完全在云中运行的、开放式企业级 Hadoop 服务。由于与 Microsoft 数据平台相集成,因此,可以使用 PowerPivot、Power View 和其他 Microsoft BI 工具来分析 Hadoo
22、p 数据。1.2.3 阿里 Open Data Processing Service开放数据处理服务(Open Data Processing Service, 简称 ODPS)是基于飞天分布式平台,由阿里云自主研发的海量数据离线处理服务。 ODPS 以Restful API 的形式提供针对 PB 级别数据的、实时性要求不高的批量处理能力,主要应用于数据分析与统计、数据挖掘、商业智能等领域。阿里金融、淘宝指数、数据魔方等阿里巴巴关键数据业务的离线处理作业都运行在 ODPS 上。1.2.4 小结前 3 小节主要讨论了目前最流行的云服务商们提供的大数据解决方案。对于很多中小企业来说,它们可以把数据
23、迁入到云中,从而减少服务器的投入成本和维护成本,而且可以大大提高系统的安全性和可靠性。另一方面,云服务商提供的大数据处理服务降低了大数据平台的技术难度,显著提高了运算性能,使得企业可以对大数据进行更深度的挖掘,提供给企业核心应用软件更精准的数据,从而产生更高级的增值应用,让企业更有效的提高管理和降低费用。1.2.5 现有解决方案的不足北京大学本科学位论文 基于云平台的 Hadoop 自动部署工具实现4目前,大多数云服务提供商都意识到了大数据处理服务的重要性并提出了相应的解决方案。 它们一般都是基于自家的公有云和 Hadoop 开源分布式计算平台来为用户提供大数据分析服务。这种方案存在的问题在于
24、: 企业需要将数据导入到云服务商提供的公有云当中。当数据规模特别大时,这是很耗费时间和带宽资源的,很有可能得不偿失。花费在数据传输上的时间和金钱成本会让企业对大数据服务望而却步。 企业数据存储在公有云中,数据的私密性无法得到保证。这对很多企业来说是无法接受的。尤其是那些国有企业,它们的数据是其核心,可能会涉及到国家安全等各个方面。数据的私密性对于这种企业来说相当重要。因此使用基于公有云提供的大数据服务是行不通的。 服务质量不受企业自身控制。整个大数据分析服务基于一个遥远的数据中心,服务质量可能会受到网络等因素的影响。因此,针对上文提出的基于公有云的大数据分析服务的问题,本文实现了一个基于云的
25、Hadoop 自动部署工具。利用本工具,企业可以很方便地在自家的私有云当中提供大数据分析服务,从而带来下面这些优势: 数据传输快捷:数据本来就存储在企业的数据中心当中,企业可以采用磁盘拷贝或磁盘直接挂载等方式实现数据的快速传输。 数据私密性可以保证:私有云部署在企业数据中心的防火墙内,因而可以提供对数据私密性最有效的控制。 服务质量稳定:私有云一般在防火墙之后,所以当公司员工访问那些基于私有云的应用时,是不会受到网络不稳定的影响。下文将会详细介绍基于云的 Hadoop 自动部署工具。1.3 本文工作和结构1.3.1 本文主要工作本文的主要工作包括: 1. 介绍研究背景,分析目前基于公有云的大数
26、据分析服务的不足。2. 介绍了燕云云计算平台,MapReduce 编程模型和最新的 Hadoop 分布式计算平台。3. 设计并实现了基于云平台的 Hadoop 自动部署工具。北京大学本科学位论文 基于云平台的 Hadoop 自动部署工具实现54. 在北京大学软件研究所自主研发的燕云云计算平台中对 Hadoop 自动部署工具进行了实例验证。讨论了基于虚拟机的 Hadoop 集群的性能瓶颈并提出了相应的解决方案。1.3.2 本文结构本文的组织如下:第二章介绍基于云的 Hadoop 自动部署工具所需要的相关技术,分析解决方案采用这些技术的必要性和可行性。第三章讨论和分析基于云平台的 Hadoop 自
27、动部署工具的设计架构,并介绍了相关实现细节。第四章基于燕云云计算平台进行了测试和验证,并对实验结果进行了讨论分析。最后,第五章对全文的工作进行回顾总结,提出下一步的工作构想。北京大学本科学位论文 基于云平台的 Hadoop 自动部署工具实现6第 二 章 基 于 云 的 HADOOP 自 动 部 署 工 具 相 关 技 术2.1 燕 云 云 管 理 系 统燕云是由北京大学软件研究所系统软件研究室自主研发的云计算平台,利用先进的云计算技术,将虚拟化数据中心资源转变为弹性云计算环境,帮助企业快速构建公共、私有和混合基础架构云服务(IaaS),为用户提供自服务门户,实现按需获取计算、网络和存储资源,管
28、理大量的异构虚拟化资源。同时,燕云系统提供开放的 API 接口,为用户提供安全、可扩展的基础架构云。通过燕云云计算平台,用户不仅可以方便地申请到所需要的计算资源,而且可以灵活的定制所拥有的资源,如用户拥有虚拟机的操作权限,可以根据需要定制操作系统,安装所需的软件。它的一个显著特点就是用户可以根据需要灵活的申请或者终止资源的使用。图 2-1与其他云平台相比,燕云主要有 3 大优势:北京大学本科学位论文 基于云平台的 Hadoop 自动部署工具实现7 高度安全:全中文界面,高度友好,同时可提供出色的安全性,可确保多租户环境中的用户不会影响其他用户获得的服务质量。通过可屏蔽恶意网络流量的策略,可以有
29、效防止外部安全威胁。 完美兼容主流异构平台:燕云平台支持业界主流的虚拟机管理程序,存储无关性和存储技术协议的广泛支持,使客户有完全的自由来选择合适的基础设施组件,而不会受限于单一的供应商。 秒级快速部署:创建虚机更快速,每创建一台虚机耗时 510 秒,远远领先于同类产品所需的 310 分钟;同时,在平台部署的便捷方面也有出色表现。燕云构建的基础架构云服务,使数据中心管理人员可以快速、简单地在现有基础架构上构建和交付按需申请的弹性云服务。燕云用户可充分利用云计算来提高效率,实现无限的可扩展性,并快速地为最终用户交付基础架构资源。2.2 MAPREDUCE 编 程 模 型 及 HADOOP 介 绍
30、2.2.1 MAPREDUCE 编 程 模 型 介 绍MapReduce是Google于2004年提出的能并发处理海量数据的并行编程模型, 同时也是一种高效的任务调度模型。MapReduce的最大优势在于屏蔽底层实现细节, 有效降低并行编程难度, 提高编程效率。开发人员只需将精力放在应用程序本身, 而关于集群的处理问题, 比如数据分块、资源分配调度、负载平衡、容错处理、节点通信等则交由平台来处理。“Map”,“Reduce”的概念和主要思想,都是从函数式编程语言和矢量编程语言借鉴而来的。Map函数负责分块数据的处理,Reduce函数负责对分块数据处理的中间结果进行归约。 MapReduce其实
31、就是Divide/Conquer的过程, 通过把问题Divide,使这些Divide后的Map运算高度并行,再将Map 后的结果进行Reduce, 得到最终的结果,如图2-1所示。北京大学本科学位论文 基于云平台的 Hadoop 自动部署工具实现8图 2-2正是由于 MapReduce 有函数式和矢量编程语言的共性,使得这种编程模式特别适合于海量数据的搜索、挖掘、分析和机器智能学习等。MapReduce 可以处理TB 和PB 量级的数据,并在处理TB 级别以上海量数据的业务上有着明显的优势。2.2.2 HADOOP 概 述Hadoop 是 Google 云计算技术的开源实现,主要用于处理大规模
32、非结构化数据。它的核心是 Hadoop 分布式文件系统 HDFS 和分布式编程框架MapReduce。HDFS 具有高容错性和高扩展性等优点,允许用户将 Hadoop 部署在价格低廉的服务器上,形成分布式系统;MapReduce 分布式编程模型允许用户在不了解分布式系统底层细节的情况下开发并行应用程序。因此通过 Hadoop 可以轻松地组织计算机资源,搭建自己的分布式计算平台,完成海量数据的处理。2.2.3 Hadoop HDFS 介 绍HDFS(Hadoop Distributed File System) 是管理网络中跨多台计算机存储的文件系统。HDFS 是一个高度容错性和可扩展性的系统,
33、适合部署在廉价的普通商业机器上。HDFS 的设计理念如下:北京大学本科学位论文 基于云平台的 Hadoop 自动部署工具实现91. 存储超大文件。2. 流式数据访问。HDFS 是建立在最有效的数据处理模式是一次写多次读(write-once,read-many-times)的模式的概念之上的,HDFS 存储的数据集作为 hadoop 的分析对象。在数据集生成后,长时间在此数据集上进行各种分析。每次分析都将设计该数据集的大部分数据甚至全部数据,因此读取整个数据集的时间延迟比读取第一条记录的时间延迟更重要。(流式读取最小化了硬盘的寻址开销,只需要寻址一次,然后就一直读啊读。硬盘的物理构造导致寻址开
34、销的优化跟不上读取开销。所以流式读取更加适合硬盘的本身特性。当然大文件的特点也更适合流式读取。与流数据访问对应的是随机数据访问,它要求定位、查询或修改数据的延迟较小,比较适合于创建数据后再多次读写的情况,传统关系型数据库很符合这一点)3. 让它能运行在普通的硬件之上,即便硬件出现故障,也可以通过容错策略来保证数据的高可用。HDFS 中一个文件被分为大小固定的若干个文件块,支持流失数据访问。HDFS 把 Hadoop 云平台中的节点分成两类:NameNode( 唯一的) 和DataNode。NameNode 管理文件系统的命名空间,维护着文件系统树及整棵树内所有的文件和目录。NameNode 也
35、记录着每个文件中各个块所在的数据节点信息,这些信息会在系统启动时由数据节点重建。DataNode 是文件系统的工作节点,它们根据需要存储并检索数据块,定期向 NameNode 发送它们所存储的块的列表。DataNode 用数据块作为最基本的存储单位,默认数据块大小为 64 MB。程序与NameNode 进行通信,然后从 DataNode 上存取文件。NameNode 在内存中保存着文件系统中每个文件和目录的引用,但集群规模扩大时,这便造成了一个瓶颈。于是在 hadoop 2.x 发行版中引入了一个新的概念:Hadoop Fedoration。它允许集群拥有不止一个 NameNode,这样每个N
36、ameNode 只负责维护文件系统中的一部分,例如一个 NameNode 维护/user 目录,另一个 NameNode 可以维护/share 目录。在 Fedoration 中,每个 NameNode 维护两部分信息:1)由 namespace 元数据组成的 namespace volume;2)包含其负责维护的某一部分文件系统中的北京大学本科学位论文 基于云平台的 Hadoop 自动部署工具实现10的所有文件的 block 位置信息的 block pool。namespace volume 各自之间是独立的,这就意味着 NameNode 之间不用交互,而且某个 NameNode 当机并不影
37、响其他 NameNode 的正常使用。相对于 namespace volume 而言,Block pool 并不是分区的,所以 datanodes 需要向集群中的每个 NameNode 注册,并且可能要存储来自多个 block pool 的数据。2.2.4 Hadoop MapReduceV2(Yarn) 框架简介Hadoop 包含了 GFS 的开源实现 HDFS 和 MapReduce 框架的开源实现。目前MapReduce 已经有了两代。本文首先会介绍第一代的 MapReduce,然后介绍它的缺陷和 Apache 引进第二代 MapReduce 的原因。第一代的MapReduce程序的流程
38、及设计思路如图2-2所示。图 2-31. 首先用户程序 (JobClient) 提交了一个 job,job 的信息会发送到 Job Tracker 中,Job Tracker 是 Map-reduce 框架的中心,他需要与集群中的机器定时通信 (heartbeat), 需要管理哪些程序应该跑在哪些机器上,需要管理所有 job 失败、重启等操作。2. TaskTracker 是 Map-reduce 集群中每台机器都有的一个部分,他做的事情主要是监视自己所在机器的资源情况。北京大学本科学位论文 基于云平台的 Hadoop 自动部署工具实现113. TaskTracker 同时监视当前机器的 ta
39、sks 运行状况。TaskTracker 需要把这些信息通过 heartbeat 发送给 JobTracker,JobTracker 会搜集这些信息以给新提交的 job 分配运行在哪些机器上。上图虚线箭头就是表示消息的发送 - 接收的过程。可以看得出原来的 map-reduce 架构是简单明了的,在最初推出的几年,也得到了众多的成功案例,获得业界广泛的支持和肯定,但随着分布式系统集群的规模和其工作负荷的增长,原框架的问题逐渐浮出水面,主要的问题集中如下:MapReduce 也不是万能的, 它的不足主要有5点:1. JobTracker 是 Map-reduce 的集中处理点,存在单点故障。2.
40、 JobTracker 完成了太多的任务,造成了过多的资源消耗,当 Job 非常多的时候,会造成很大的内存开销,潜在来说,也增加 JobTracker 失败的风险,这也是业界普遍总结出老 Hadoop 的 Map-Reduce 只能支持 4000 节点主机的上限。3. 在 TaskTracker 端,以 map/reduce task 的数目作为资源的表示过于简单,没有考虑到 cpu 及内存的占用情况,如果两个大内存消耗的 task 被调度到了一块,很容易出现内存溢出。4. 在 TaskTracker 端,把资源强制划分为 map task slot 和 reduce task slot, 如
41、果当系统中只有 map task 或者只有 reduce task 的时候,会造成资源的浪费,也就是前面提过的集群资源利用的问题。5. 从操作的角度来看,现在的 Hadoop MapReduce 框架在有任何重要的或者不重要的变化 ( 例如 bug 修复,性能提升和特性化 ) 时,都会强制进行系统级别的升级更新。更糟的是,它不管用户的喜好,强制让分布式集群系统的每一个用户端同时更新。这些更新会让用户为了验证他们之前的应用程序是不是适用新的 Hadoop 版本而浪费大量时间。针对第一代MapReduce(MRv1)的缺点,Apache推出了 MapReduceV2 ,即:Yarn。与MRv1 相
42、比, YARN 不再是一个单纯的离线计算环境, 而是一个通用的计算框架管理平台, 不仅支持MapReduce,也支持其它流行的计算框架,如: 迭代计算、流式计算、内存计算、在线计算、实时处理、MPI 等。使用者可以将各种计算框架移植到YARN 上, 由YARN 进行资源的统一管理和分配, 使各个框架北京大学本科学位论文 基于云平台的 Hadoop 自动部署工具实现12共享一个集群, 大大降低运维成本和硬件成本。Apache YARN 由Resource Manager(RM)和Node Manager(NM)组成. 相较于MRv1,其最大特点是将JobTracker 的两个主要功能“作业调度/
43、监控”和“资源管理”进行分拆, 总体上采用双层调度架构, 如图2-3所示。图 2-4RM 由Scheduler和Applications Manager(ASM)组成。Scheduler和NM 协调完成资源管理的功能, NM负责单个节点的资源管理和监控, 定期将资源使用情况汇报给RM。运行在YARN 上的任何一个作业(如Hadoop Job 、Spark Job)都是一个Application Master(AM), Scheduler 根据容量、队列等限制条件, 将系统中的资源分配给各个正在运行的AM。 YARN 自带了多个资源调度器, 如FIFO、Capacity Scheduler、Fa
44、ir Scheduler 等。YARN 对资源进行抽象, 称之为Container, 它将某个节点上的CPU、内存、磁盘等资源封装在一起。AM只有获得至少一个Container 后才能启动任务, AM本身也必须运行在一个Container中。ASM负责管理系统中所有应用程序的AM; 获取第一个Container 用于启动AM;监控AM的运行状态; 在AM失败时对其重启。每个应用程序均会有一个AM, 与NM 合作, 在合适的容器中运行对应的Task, 并监控这些Task 执行。事实上,每一个应用的 ApplicationMaster 是一个详细的框架库,它结合从 ResourceManager
45、获得的资源和 NodeManager 协同工作来运行和监控任务。北京大学本科学位论文 基于云平台的 Hadoop 自动部署工具实现13上图中 ResourceManager 支持分层级的应用队列,这些队列享有集群一定比例的资源。从某种意义上讲它就是一个纯粹的调度器,它在执行过程中不对应用进行监控和状态跟踪。同样,它也不能重启因应用失败或者硬件错误而运行失败的任务。ResourceManager 是基于应用程序对资源的需求进行调度的;每一个应用程序需要不同类型的资源因此就需要不同的容器。资源包括:内存,CPU,磁盘,网络等等。可以看出,这同现 Mapreduce 固定类型的资源使用模型有显著区别
46、,它给集群的使用带来负面的影响。资源管理器提供一个调度策略的插件,它负责将集群资源分配给多个队列和应用程序。调度插件可以基于现有的能力调度和公平调度模型。上图中 NodeManager 是每一台机器框架的代理,是执行应用程序的容器,监控应用程序的资源使用情况 (CPU,内存,硬盘,网络 ) 并且向调度器汇报。每一个应用的 ApplicationMaster 的职责有:向调度器索要适当的资源容器,运行任务,跟踪应用程序的状态和监控它们的进程,处理任务的失败原因。Yarn 框架相对于老的 MapReduce 框架优势如下:1. 这个设计大大减小了 JobTracker(也就是现在的 Resourc
47、eManager)的资源消耗,并且让监测每一个 Job 子任务 (tasks) 状态的程序分布式化了,更安全、更优美。2. 在新的 Yarn 中,ApplicationMaster 是一个可变更的部分,用户可以对不同的编程模型写自己的 AppMst,让更多类型的编程模型能够跑在 Hadoop 集群中,可以参考 hadoop Yarn 官方配置模板中的 mapred-site.xml 配置。3. 对于资源的表示以内存为单位 ( 在目前版本的 Yarn 中,没有考虑 cpu 的占用 ),比之前以剩余 slot 数目更合理。4. 老的框架中,JobTracker 一个很大的负担就是监控 job 下的
48、 tasks 的运行状况,现在,这个部分就扔给 ApplicationMaster 做了,而 北京大学本科学位论文 基于云平台的 Hadoop 自动部署工具实现14ResourceManager 中有一个模块叫做 ApplicationsMasters( 注意不是 ApplicationMaster),它是监测 ApplicationMaster 的运行状况,如果出问题,会将其在其他机器上重启。5. Container 是 Yarn 为了将来作资源隔离而提出的一个框架。这一点应该借鉴了 Mesos 的工作,目前是一个框架,仅仅提供 java 虚拟机内存的隔离 ,hadoop 团队的设计思路应该后续能支持更多的资源调度和控制 , 既然资源表示成内存量,那就没有了之前的 map slot/reduce slot 分开造成集群资源闲置的尴尬情况。2.2.5 HADOOP 一 般 部 署 流 程1. 准备多台 linux 系统物理机作为 Hadoop 集群的各个节点。2. 安装 SUN JDK 并设置环境变量。3. 修改各台物理机主机名(不能重名)并配置