`

Hadoop 新特性、改进、优化和Bug分析系列5

    博客分类:
  • jvm
 
阅读更多

重大消息:我的Hadoop新书《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》已经开始在各大网站销售了,购书链接地址: 当当购书网址京东购书网址卓越购书网址。新书官方宣传主页: http://hadoop123.com/

 


Hadoop jira链接:https://issues.apache.org/jira/browse/YARN-3
所属范围(新特性、改进、优化或Bug):新特性
修复版本:2.0.3-alpha及以上版本
所属分支(Common、HDFS、YARN或MapReduce):YARN
涉及模块:nodemanager
英文标题:“Add support for CPU isolation/monitoring of containers”

 

背景介绍

YARN作为一个资源管理系统,主要由两个组件构成,分别是ResourceManager和NodeManager,其中,ResourceManager负责整个集群上资源的管理和分配,而NodeManager则负责单个节点的资源管理和任务启动,这两个组件必须充分发挥各自的作用才能完成资源的有效利用,缺一不可。ResourceManager将资源分配给应用程序的ApplicationMaster,比如将资源<node1,1CPU, 2GB>分配给appMaster1,而appMaster1则会进一步与node1上的NodeManager通信,启动一个占用1CPU和2GB内存的任务,为了确保该任务“占且仅占”这些资源,NodeManager必须提供合理的隔离机制,提供一个资源容器保证这些资源的前提下,还要防止它多占用资源干扰其他任务。

与之对比,MRv1采用了JVM进行资源隔离,而JVM仅能对内存资源进行限定,其他资源,包括CPU、网络等资源则无法隔离。在资源隔离上,YARN要不MRv1要先进得多。

解决方案

提供资源隔离机制是YARN NodeManager的责任,针对不同的资源,YARN采用了不同的资源隔离机制,而本文涉及到的YARN-3则全面介绍了YARN的资源隔离机制,总结起来,当前YARN针对CPU和内存两种资源提供了隔离机制,其中,CPU采用了CGroups轻量级资源隔离机制,而内存则采用了线程监控的方案。

由于YARN的目标是构建一个通用的资源管理平台,不仅仅限于Java编写的MapReduce这类应用,更多的是非java程序,因此,MRv1基于JVM的资源隔离方案是不可行的。

对于CGroups而言,它可以限制应用程序的内存使用上限,当内存超过某个阈值时,它将直接将其杀死。对于一些应用程序而言,有些情况下会出现内存暴增而又骤降的现象,因此采用硬性限制的策略是缺乏灵活性的,基于这种考虑,YARN仍采用了MRv1中的基于线程监控的方案,该方案启动一个线程监控当前正在运行的任务的进程树,如果发现内存暴增而又骤降,则认为是正常现象,不会将任务杀死,因此,该方案更加友好。

由于CPU资源的多少不会影响任务的生死(只影响任务执行的快慢),因此,YARN采用了CGroups对CPU资源进行隔离,需要注意的是,CGroups采用的是CPU资源下限控制法,该方法是一种公平共享的方法,举个例子,如果一个节点上有8个核(pcore:vcore=1:1),那么如果只运行一个任务(pcore=1),则它最多使用800%的CPU,如果运行2个任务(pcore=1),则每个任务最多可使用400%的CPU,依次类推……

当前,YARN的资源隔离方面还有很多需要改进的地方,比如,支持更细粒度的资源隔离,例如将任务绑定到某个CPU上(已经在做了,使用taskset命令);支持更多类型的资源隔离,比如网络和磁盘IO等(这个依赖于CGroups的发展,当前CGoups在这方面还不完善)。

如何配置?

【注】 配置参数是在https://issues.apache.org/jira/browse/YARN-2中引入的。这部分内容我已在我的博客文章“YARN/MRv2 ResourceManager深入剖析——资源调度器”中进行了详细介绍。

当前YARN支持内存和CPU两种资源类型的管理和分配。当NodeManager启动时,会向ResourceManager注册,而注册信息中会包含该节点可分配的CPU和内存总量,这两个值均可通过配置选项设置(在yarn-site.xml文件中),具体如下:

(1)yarn.nodemanager.resource.memory-mb

该节点可分配的物理内存总量,默认是8*1024MB。

(2)yarn.nodemanager.vmem-pmem-ratio

每单位的物理内存总量对应的虚拟内存量,默认是2.1,表示每使用1MB的物理内存,最多可以使用2.1MB的虚拟内存总量。

(3)yarn.nodemanager.resource.cpu-core(默认是8

可分配的CPU总个数,默认是8

(4)yarn.nodemanager.vcores-pcores-ratio

为了更细粒度的划分CPU资源,YARN将每个物理CPU划分成若干个虚拟CPU,默认值为2用户提交应用程序时,可以指定每个任务需要的虚拟CPU个数。在MRAppMaster中,每个Map Task和Reduce Task默认情况下需要的虚拟CPU个数为1,用户可分别通过mapreduce.map.cpu.vcores和mapreduce.reduce.cpu.vcores进行修改(对于内存资源,Map Task和Reduce Task默认情况下需要1024MB,用户可分别通过mapreduce.map.memory.mb和mapreduce.reduce.memory.mb修改)。

(在最新版本中,yarn.nodemanager.resource.cpu-core和yarn.nodemanager.vcores-pcores-ratio两个参数被遗弃,引入一个新参数yarn.nodemanager.resource.cpu-vcore,表示虚拟CPU个数,具体请阅读YARN-782

为了启用CGroups和内存线程监控,你可以按照该文档” Hadoop MapReduce Next Generation – Cluster Setup”说明进行配置,安装时请一定要先阅读这篇文章:Using YARN with CGroups

扩展阅读:

(1)“Hook up cgroups CPU settings to the number of virtual cores allocated”:https://issues.apache.org/jira/browse/YARN-600

(2)“CgroupsLCEResourcesHandler tries to write to cgroup.procs”:https://issues.apache.org/jira/browse/YARN-799

(3)“Support CGroup ceiling enforcement on CPU”:https://issues.apache.org/jira/browse/YARN-810

原创文章,转载请注明: 转载自董的博客

本文链接地址: http://dongxicheng.org/mapreduce-nextgen/hadoop-jira-yarn-3/

 

买了本博主的 《Hadoop 技术内幕 深入解释MapReduce架构设计与实现原理》 把博客放到我空间里慢慢看

 

分享到:
评论

相关推荐

    hadoop.dll & winutils.exe For hadoop-3.0.0

    每个版本都可能包含性能优化、新特性、bug修复和兼容性增强。Hadoop 3.0.0是一个重要的里程碑,引入了许多新功能,例如更强大的NameNode(HDFS的主节点)、YARN的多ResourceTypes支持以及对大规模集群的优化。 4. *...

    hadoop-common-0.23.8.jar_hadoop_

    使用"Hadoop-common-0.23.8.jar",开发者和数据分析师能够构建和运行各种Hadoop应用,实现大数据的存储、处理和分析。在实际应用中,这个jar文件通常会与Hadoop的其他组件一起部署,共同构成一个完整的Hadoop集群。 ...

    hadoop-2.7.7.tar.gz

    Hadoop 2.7.7是Hadoop发展过程中的一个重要版本,提供了许多改进和优化,旨在提升性能、稳定性和易用性。在这个版本中,用户可以体验到一系列的功能更新和bug修复。 在使用hadoop-2.7.7.tar.gz之前,首先需要下载这...

    hadoop-2.7.1

    Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它的核心设计目标是处理和存储大规模数据。...通过理解并掌握这些知识点,开发者和数据工程师能够有效地利用Hadoop处理大规模数据,实现高效的数据分析和挖掘。

    大数据hadoop权威指南

    3.0版本中的MapReduce进行了包括FileOutputCommitter实现更新、优化数据流操作、修复bug、增加新特性和支持动态命令在内的一系列改进,以提升性能和用户体验。 7. Q&A环节 文档最后通常会有一系列问题和答案,这些...

    hadoop-eclipse-plugin.rar

    2.7.x系列是Hadoop的稳定版本,2.7.3和2.7.4在2.7.2的基础上进行了一些bug修复和性能优化。在这个阶段,Hadoop生态系统更加成熟,增加了对新特性的支持,比如更高效的HDFS副本选择策略,更灵活的MapReduce配置选项,...

    hadoop-2.0.4官方源代码

    这个【标题】"hadoop-2.0.4官方源代码"代表着Hadoop的2.0.4版本的原始代码,这是一次重要的发布,因为它引入了许多改进和新特性。【描述】"hadoop-2.0.4官方源代码"简洁明了地指出了该压缩包的内容,即Hadoop的源码...

    hadoop-eclipse插件2.8.1版本和2.6.5版本

    2.8.1版本则对应于Hadoop 2.8.x系列,这个系列引入了一些重要的改进和优化。例如,它包含了YARN(Yet Another Resource Negotiator)资源管理框架的增强,这使得集群资源调度更加高效。此外,这个版本可能包含更多...

    Hadoop最新代码(2012/4/4)

    4. **Hadoop Common**:包含了一系列Hadoop项目共用的库和工具,如网络通信库、I/O库等。 在2012年4月4日的代码中,我们可以期待看到以下可能的改进和特性: - **性能优化**:可能包括对HDFS读写速度的提升,...

    hadoop-2.7.3.zip

    本文件“hadoop-2.7.3.zip”是针对Hadoop集群的2.7.3版本,这个版本在Hadoop的发展历程中占有重要地位,因为它引入了许多改进和新特性。 首先,让我们了解一下Hadoop的核心组件。Hadoop主要由两个主要部分组成:...

    hadoop-3.2.2-src.tar.gz

    5. 其他组件:例如HBase(分布式NoSQL数据库)、Hive(基于Hadoop的数据仓库工具)、Pig(数据分析平台)、Oozie(工作流调度系统)等,它们都是建立在Hadoop基础上的生态系统应用。 在3.2.2版本中,Hadoop可能进行...

    hadoop-common-2.2.0-bin

    每个版本的Hadoop都有其特定的特性、改进和修复的bug。2.2.0是一个重要的里程碑,因为它引入了许多性能优化和稳定性提升,比如更好的资源调度、更高效的I/O操作以及对YARN(Yet Another Resource Negotiator)的...

    hadoop-eclipse-plugin-2.6.5和2.7.1

    例如,从2.6.5升级到2.7.1可能包括了优化HDFS的容错机制、提升MapReduce的执行效率、增加新的API等改进。 总结起来,`hadoop-eclipse-plugin`是Hadoop开发的重要工具,它为开发者提供了一种高效、直观的开发方式,...

    elasticsearch-hadoop-8.5.3.zip

    **Elasticsearch for Apache Hadoop (ES-Hadoop)** 是一个数据集成工具,它允许用户将Apache Hadoop与Elasticsearch无缝连接,实现大数据分析和实时搜索的完美结合。Elasticsearch是一个分布式、RESTful风格的搜索和...

    hadoop-2.6.0-cdh5.10.0.tar.gz

    Hadoop 2.6.0-cdh5.10.1是Hadoop 2.x.y系列的一个次要版本,它的发布旨在提供增强的功能、性能改进以及对之前稳定版本2.4.1的bug修复。这个版本的Hadoop由Cloudera公司作为CDH(Cloudera Distribution Including ...

    spark-2.4.8-bin-hadoop2.7.tgz

    5. **GraphX**:用于图计算,提供Pregel API,支持大规模图形数据的分析和处理。 在Spark 2.4.8中,有以下值得注意的改进和特性: 1. **DataFrame和Dataset优化**:提升了DataFrame和Dataset操作的性能,优化了查询...

    hadoop-2.5.2.tar.gz

    Hadoop 2.5.2是在Hadoop 2.x系列的一个稳定版本,带来了许多性能优化和新特性。 Hadoop主要由两个关键组件构成:HDFS(Hadoop Distributed File System)和MapReduce。HDFS是一种分布式文件系统,能够将大型数据集...

    Hadoop 2.7.4 win10 64位 bin文件夹

    3. **Hadoop 2.7.4 版本特性**: Hadoop 2.7.4是Hadoop YARN(Yet Another Resource Negotiator)模型的一个稳定版本,引入了诸多改进和修复。YARN使得Hadoop可以更高效地管理和调度集群资源,支持多计算框架并存。...

    win10环境下hadoop-3.3.1编译后的源码包

    - Hadoop 3.x版本引入了多项改进和新特性,如YARN(Yet Another Resource Negotiator)的性能优化、多NameNode支持、Erasure Coding等。 - 3.3.1版本可能会包含一些bug修复和性能提升,具体可以查看官方发布说明。...

Global site tag (gtag.js) - Google Analytics