我是靠谱客的博主 愤怒眼神,最近开发中收集的这篇文章主要介绍Yarn的多租户配置实现资源隔离,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Yarn的多租户配置实现资源隔离

  1. 资源隔离介绍:资源隔离目前有2种,静态隔离和动态隔离。

    1. 静态隔离

    ​ 所谓静态隔离是以服务隔离,是通过cgroups(LINUX control groups) 功能来支持的。

    1. 动态隔离

      动态隔离只要是针对 YARN以及impala, 所谓动态只是相对静态来说,其实也不是动态。

  2. 第一步:hadoop102配置yarn-site.xml

    
    <!--  指定我们的任务调度使用fairScheduler的调度方式  -->
    <property>
    	<name>yarn.resourcemanager.scheduler.class</name>
    	<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
    </property>
    
    <!--  指定我们的任务调度的配置文件路径  -->
    <property>
    	<name>yarn.scheduler.fair.allocation.file</name>
    	<value>/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/fair-scheduler.xml</value>
    </property>
    
    <!-- 是否启用资源抢占,如果启用,那么当该队列资源使用
    yarn.scheduler.fair.preemption.cluster-utilization-threshold 这么多比例的时候,就从其他空闲队列抢占资源
      -->
    <property>
    	<name>yarn.scheduler.fair.preemption</name>
    	<value>true</value>
    </property>
    <property>
    	<name>yarn.scheduler.fair.preemption.cluster-utilization-threshold</name>
    	<value>0.8f</value>
    </property>
    
    
    <!-- 默认提交到default队列  -->
    <property>
    	<name>yarn.scheduler.fair.user-as-default-queue</name>
    	<value>true</value>
    	<description>default is True</description>
    </property>
    
    <!-- 如果提交一个任务没有到任何的队列,是否允许创建一个新的队列,设置false不允许  -->
    <property>
    	<name>yarn.scheduler.fair.allow-undeclared-pools</name>
    	<value>false</value>
    	<description>default is True</description>
    </property>
    
    
  3. 第二步:hadoop102添加fair-scheduler.xml配置文件

    <?xml version="1.0"?>
    <allocations>
    <!-- users max running apps  -->
    <userMaxAppsDefault>30</userMaxAppsDefault>
    <!-- 定义我们的队列  -->
    <queue name="root">
    	<minResources>512mb,4vcores</minResources>
    	<maxResources>102400mb,100vcores</maxResources>
    	<maxRunningApps>100</maxRunningApps>
    	<weight>1.0</weight>
    	<schedulingMode>fair</schedulingMode>
    	<aclSubmitApps> </aclSubmitApps>
    	<aclAdministerApps> </aclAdministerApps>
    
    	<queue name="default">
    		<minResources>512mb,4vcores</minResources>
    		<maxResources>30720mb,30vcores</maxResources>
    		<maxRunningApps>100</maxRunningApps>
    		<schedulingMode>fair</schedulingMode>
    		<weight>1.0</weight>
    		<!--  所有的任务如果不指定任务队列,都提交到default队列里面来 -->
    		<aclSubmitApps>*</aclSubmitApps>
    	</queue>
    
    <!-- 
    
    weight
    资源池权重
    
    aclSubmitApps
    允许提交任务的用户名和组;
    格式为: 用户名 用户组
    
    当有多个用户时候,格式为:用户名1,用户名2 用户名1所属组,用户名2所属组
    
    aclAdministerApps
    允许管理任务的用户名和组;
    
    格式同上。
     -->
    	<queue name="hadoop">
    		<minResources>512mb,4vcores</minResources>
    		<maxResources>20480mb,20vcores</maxResources>
    		<maxRunningApps>100</maxRunningApps>
    		<schedulingMode>fair</schedulingMode>
    		<weight>2.0</weight>
    		<aclSubmitApps>hadoop hadoop</aclSubmitApps>
    		<aclAdministerApps>hadoop hadoop</aclAdministerApps>
    	</queue>
    
    	<queue name="develop">
    		<minResources>512mb,4vcores</minResources>
    		<maxResources>20480mb,20vcores</maxResources>
    		<maxRunningApps>100</maxRunningApps>
    		<schedulingMode>fair</schedulingMode>
    		<weight>1</weight>
    		<aclSubmitApps>develop develop</aclSubmitApps>
    		<aclAdministerApps>develop develop</aclAdministerApps>
    	</queue>
    
    	<queue name="test1">
    		<minResources>512mb,4vcores</minResources>
    		<maxResources>20480mb,20vcores</maxResources>
    		<maxRunningApps>100</maxRunningApps>
    		<schedulingMode>fair</schedulingMode>
    		<weight>1.5</weight>
    		<aclSubmitApps>test1,hadoop,develop test1</aclSubmitApps>
    		<aclAdministerApps>test1 group_businessC,supergroup</aclAdministerApps>
    	</queue>
    </queue>
    </allocations>
    
    
  4. 第三步:将修改后的配置文件分发下去

    将node01修改后的yarn-site.xml和fair-scheduler.xml配置文件分发到其他服务器上面去
    	scp yarn-site.xml  fair-scheduler.xml node02:$PWD
    
  5. 第四步:重启yarn集群

    sbin/start-yarn.sh
    
  6. 第五步:创建普通用户以及修改hdfs上的tmp文件夹权限

    hadoop102创建普通用户hadoop,用于测试我们使用hadoop用户提交任务到hadoop队列当中去
    useradd hadoop
    passwd hadoop
    
    hadoop102执行以下命令,修改hdfs上面tmp文件夹的权限,不然普通用户执行任务的时候会抛出权限不足的异常
    
    yarn jar /export/servers/hadoop-2.6.0-cdh5.14.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.0.jar pi 10 20
    
    
  7. 第六步:浏览器查看任务调度

    http://hadoop1021:8088/cluster/scheduler

最后

以上就是愤怒眼神为你收集整理的Yarn的多租户配置实现资源隔离的全部内容,希望文章能够帮你解决Yarn的多租户配置实现资源隔离所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部