`
zhangxiong0301
  • 浏览: 359642 次
社区版块
存档分类
最新评论

(转)HADOOP2.6基于标签的调度

阅读更多

在最新的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配置成一样的,便于管理:
  1. <property>
  2. <name>yarn.nodemanager.address</name>
  3. <value>0.0.0.0:45454</value>
  4. </property>
复制代码

 

步骤3:配置label重启恢复功能。这样,label信息会保存到hdfs上(默认是保存在内存中的),之后yarn重新启动,可以自动恢复所有label信息:
  1. <property>
  2. <name>yarn.node-labels.manager-class</name>
  3. <value>org.apache.hadoop.yarn.server.resourcemanager.nodelabels.RMNodeLabelsManager</value>
  4. </property>
复制代码

 

步骤4:修改capacity scheduler相关配置,设置每个队列对应的label,以及每中label的资源上下限。具体配置,可参考相关资源。
分享到:
评论

相关推荐

    spark-2.4.4-bin-hadoop2.6.tgz

    这个压缩包文件"spark-2.4.4-bin-hadoop2.6.tgz"包含了运行Spark所需的所有组件和依赖,以便在Hadoop 2.6环境中运行。 1. **Spark核心概念**: Spark的核心是弹性分布式数据集(Resilient Distributed Datasets, ...

    spark-2.4.0-bin-hadoop2.6.tgz

    这里我们讨论的是Spark的2.4.0版本,与Hadoop 2.6版本集成的预编译二进制包"spark-2.4.0-bin-hadoop2.6.tgz",这主要用于在Linux环境中安装和运行Spark。 1. **Spark核心概念**:Spark的核心组件是弹性分布式数据集...

    spark-1.6.3-bin-hadoop2.6.tgz

    总的来说,"spark-1.6.3-bin-hadoop2.6.tgz"这个压缩包包含了一个完整的Spark 1.6.3发行版,预编译为与Hadoop 2.6兼容。安装这个版本的Spark,用户可以利用其强大的数据处理能力和与Hadoop的紧密集成,进行大规模...

    hadoop 2.6 Windows64位 编译版本

    Hadoop 2.6是Apache Hadoop项目的一个稳定版本,主要设计用于大数据处理和分析。在Windows 64位环境下编译Hadoop源代码是一项技术挑战,因为Hadoop最初是为Linux环境开发的。不过,通过一些特定的配置和工具,可以在...

    spark-2.3.4-bin-hadoop2.6.tgz

    这个压缩包"spark-2.3.4-bin-hadoop2.6.tgz"是专门为与Hadoop 2.6兼容的Spark二进制发行版,适合那些已经在使用或计划使用Hadoop生态系统的用户。 首先,Spark的核心组件包括: 1. **Spark Core**:这是Spark的基础...

    hadoop2.6 dll

    标签 "spark" 和 "hadoop2.6" 表明我们关注的是这两个技术的交互。Spark是一个快速、通用且可扩展的数据处理引擎,它可以运行在Hadoop之上,利用Hadoop的存储和计算能力。Hadoop 2.6是Hadoop的一个版本,包含了一...

    spark-1.6.0-bin-hadoop2.6.tgz

    Spark-1.6.0-bin-hadoop2.6.tgz 是针对Linux系统的Spark安装包,包含了Spark 1.6.0版本以及与Hadoop 2.6版本兼容的构建。这个安装包为在Linux环境中搭建Spark集群提供了必要的组件和库。 **1. Spark基础知识** ...

    spark-2.4.6-bin-hadoop2.6.tgz

    最后,Spark-2.4.6与Hadoop 2.6的兼容性意味着它可以在广泛部署的Hadoop集群上运行,利用HDFS进行数据存储,并通过YARN或Mesos进行资源调度。这种兼容性使得Spark可以在现有的Hadoop生态系统中无缝集成,避免了数据...

    hadoop2.6.rar

    在这个名为“hadoop2.6.rar”的压缩包中,我们很显然获取的是Hadoop 2.6.0版本的安装资源。Hadoop 2.6.0是在Hadoop 2.x系列中的一个重要版本,它在Hadoop 2.4.x的基础上进行了一系列的优化和改进,提供了更高的稳定...

    spark-2.0.0-bin-hadoop2.6.tgz (内含有Pyspark 2.7.12)

    在"spark-2.0.0-bin-hadoop2.6.tgz"压缩包中,包含的不仅是Spark 2.0.0的基础二进制文件,还预配置了对Hadoop 2.6的支持,这意味着用户可以直接在具有Hadoop环境的系统上部署和运行这个版本的Spark,而无需额外的...

    spark-2.3.3-bin-hadoop2.6.tgz

    "spark-2.3.3-bin-hadoop2.6.tgz" 是Spark 2.3.3版本预编译的二进制包,针对Hadoop 2.6版本进行了优化。这个压缩包包含了运行Spark所需的所有组件和依赖库,使得用户可以在本地或者集群环境中快速部署和使用Spark。 ...

    spark-2.1.2-bin-hadoop2.6.tgz

    在给定的压缩包文件"spark-2.1.2-bin-hadoop2.6.tgz"中,我们找到了Spark的一个特定版本(2.1.2)与Hadoop 2.6版本的集成构建。这个包主要用于在YARN(Yet Another Resource Negotiator)资源管理器上运行Spark作业...

    spark1.3与hadoop2.6环境配置

    在与 Hadoop 2.6 集成时,我们通常选择 YARN 模式,因为 YARN 提供了资源管理和调度功能,可以充分利用集群资源。 1. **YARN 模式配置**: - 安装 Hadoop 2.6:确保所有节点上都已正确安装并配置了 Hadoop,包括...

    spark-2.0.2-bin-hadoop2.6

    Spark-2.0.2-bin-hadoop2.6 是该框架的一个特定版本,与Hadoop 2.6版本兼容,这意味着它可以充分利用Hadoop生态系统中的存储和计算资源。 在Spark 2.0.2中,主要包含以下几个关键组件: 1. **Spark Core**:这是...

    spark-2.2.0-bin-hadoop2.6.tgz

    Hadoop2.6是Hadoop生态系统中的一个版本,它为分布式存储和计算提供了基础支持。`spark-2.2.0-bin-hadoop2.6.tgz`是一个压缩包,包含了Spark 2.2.0在YARN(Hadoop Yet Another Resource Negotiator)模式下运行所需...

    spark-1.3.1-bin-hadoop2.6.tgz

    Spark-1.3.1-bin-hadoop2.6.tgz是一个针对Linux和Windows系统的安装包,包含了Apache Spark 1.3.1版本以及与Hadoop 2.6兼容的依赖。这个压缩包为用户提供了在本地或集群环境中搭建Spark计算平台的基础。 1. **Spark...

    hadoop2.6集群配置

    ### Hadoop 2.6 集群配置详解 #### 一、环境配置 ##### 1.1 服务器环境 1. **IP地址配置**:根据实际情况为每台服务器分配唯一的IP地址,例如: - hadoop140 的 IP 地址为 192.168.50.140 - hadoop141 的 IP ...

    spark-2.41-hadoop2.6

    在下载并解压"spark-2.4.1-bin-hadoop2.6"压缩包后,用户通常会找到以下组件: 1. bin目录:包含Spark的各种可执行脚本,如启动Spark Shell的`bin/spark-shell`,启动Spark Submit的`bin/spark-submit`等。 2. jars...

    spark-2.3.1-bin-hadoop2.6.tgz

    Spark 2.3.1是Apache Spark的一个稳定版本,它是一个快速、通用且可扩展的大数据处理框架。...通过下载并解压"spark-2.3.1-bin-hadoop2.6.tgz",你可以开始搭建本地或集群的Spark环境,探索这个框架的更多可能性。

Global site tag (gtag.js) - Google Analytics