在最新的hadoop 2.6.0版本中,YARN引入了一种新的调度策略:基于标签的调度机制。该机制的主要引入动机是更好地让YARN运行在异构集群中,进而更好地管理和调度混合类型的应用程序。
注意,截止这篇文章发布时,只有apache hadoop 2.6.0和hdp 2.2两个发行版具有该特性(CDH5.3尚不支持,CDH5.4会支持),在hadoop自带的调度器重,只有 Capacity Scheduler支持该特性,FIFO Scheduler和Fair Scheduler尚不支持。、
什么是Label based scheduling?
故名思议,Label based scheduling是一种调度策略,就像priority-based scheduling一样,是调度器调度众多调度策略中的一种,可以跟其他调度策略混合使用,实际上,hadoop也是这样做的。但是,相比于其他调度策略,基于标签的调度策略则复杂的多,这个feature的代码量非常大,基本上需要修改YARN的各个模块,包括API, ResourceManager,Scheduler等。该策略的基本思想是:用户可以为每个nodemanager标注几个标签,比如highmem,highdisk等,以表明该nodemanager的特性;同时,用户可以为调度器中每个队列标注几个标签,这样,提交到某个队列中的作业,只会使用标注有对应标签的节点上的资源。举个例子:
比如最初你们的hadoop集群共有20个节点,硬件资源是32GB内存,4TB磁盘;后来,随着spark地流行,公司希望引入spark计算框架,而为了更好地运行spark程序,公司特地买了10个大内存节点,比如内存是64GB,为了让spark程序与mapreduce等其他程序更加和谐地运行在一个集群中,你们希望spark程序只运行在后来的10个大内存节点上,而之前的mapreduce程序既可以运行在之前的20个节点上,也可以运行在后来的10个大内存节点上,怎么办?有了label-based scheduling后,这是一件非常easy的事情,你需要按一以下步骤操作:
步骤1:为旧的20个节点打上normal标签,为新的10个节点打上highmem标签;
步骤2:在capacity scheduler中,创建两个队列,分别是hadoop和spark,其中hadoop队列可使用的标签是nornal和highmem,而spark则是highmem,并配置两个队列的capacity和maxcapacity。
如何配置使用Label based scheduling?
首先,要选择apache hadoop 2.6或hdp2.2(可使用ambari部署)发行版。
之后按照以下步骤操作:
步骤1:添加系统级别的label(相当于所有label的全集),注意,各个节点上的label必须都在系统级别的label中。
yarn rmadmin -addToClusterNodeLabels normal,highmem
步骤2:为各个节点分别添加label(可动态修改)
yarn rmadmin -replaceLabelsOnNode “nodeId,label1,label2,…,labeln”
注意,nodeId是nodemanager的唯一标示,注意,一个节点上可以有多个nodemanager,每个nodemanager的nodeid可以在ResourceManager界面上看到,通常有host和PRC port拼接而成,默认情况下,各个nodemanager的RPC port是随机选取的,你可以将所有的nodemanager配置成一样的,便于管理:
步骤3:配置label重启恢复功能。这样,label信息会保存到hdfs上(默认是保存在内存中的),之后yarn重新启动,可以自动恢复所有label信息:
步骤4:修改capacity scheduler相关配置,设置每个队列对应的label,以及每中label的资源上下限。具体配置,可参考相关资源。
相关推荐
Hadoop2.6版本稳定版API文档CHM文件
本资源是spark-2.0.0-bin-hadoop2.6.tgz百度网盘资源下载,本资源是spark-2.0.0-bin-hadoop2.6.tgz百度网盘资源下载
spark-1.6.3-bin-hadoop2.6.tgz
hadoop2.6基于yarn的安装配置
hadoop2.6 hadoop.dll winutils.exe d
hadoop2.6-common-bin 解决在Windows上操作hadoop出现 Could not locate executable问题
hadoop的windows安装版本,经本人测试,使用没什么问题,公司本地开发用的这个版本,可搭载hive1.2.2使用
spark-2.3.4-bin-hadoop2.6.tgz
hadoop 2.6源代码的Windows64位编译版本。
解压后改名并修改spark-env.sh和slaves,提前安装scala11.x和hadoop2.6。
spark-2.4.6-bin-hadoop2.6.tgz 官网下载不了的,可以这里下载哦,csdn很稳定哦
hadoop2.6基于yarn安装配置详解.pdf
spark-2.4.0-bin-hadoop2.6.tgz-----------------------------------------------linux spark安装
hadoop2.6,window7 64bit,hadoop.dll、winutils.exe文件下载
java web程序演示调用hadoop2.6运行集群MR程序示例;
hadoop2.6集群配置,各种HA,可以按照文档,直接上手!
spark-2.4.4-bin-hadoop2.6.tgz
windows环境下使用python2.7配置spark1.6-hadoop2.6时使用工具
基于hadoop2.6的最新版的spark安装包,此版本对应的jdk需要在jdk8以上,请悉知
hdfs源码剖析 基于hadoop2.6 hdfs源码剖析 基于hadoop2.6