yarn多租户管理

yarn多租户配置管理(CapacityScheduler)

hadoop的版本为2.7

一:  多租户实现前,只有一个default队列

yarn多租户管理_第1张图片

 

 

二 配置文件修改

yarn-site.xml





    
        yarn.resourcemanager.scheduler.class
        org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler  
    

    
                yarn.resourcemanager.scheduler.monitor.enable
                true
       

    
        yarn.resourcemanager.hostname
        FoxLog17.engine.wx
    

    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    

    
        yarn.nodemanager.resource.cpu-vcores
        4
    


    
        yarn.nodemanager.resource.memory-mb
        16000
    

    
       
         yarn.nodemanager.vmem-pmem-ratio
        2.1
    

    
        yarn.nodemanager.vmem-check-enabled
        false
    

    
        yarn.resourcemanager.store.class
        org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore
    

    
        yarn.resourcemanager.fs.state-store.uri
        /tmp/yarn/system/rmstore
    

    
        yarn.scheduler.maximum-allocation-mb
        6192
    

    
                yarn.scheduler.minimum-allocation-mb
                1280
       

       
                yarn.resourcemanager.recovery.enabled
                true
       



    
        yarn.log-aggregation-enable
        true
    
    
    
          yarn.log-aggregation.retain-seconds
            607800
    

    
        yarn.log-aggregation.retain-check-interval-seconds
        10800                                                           

    
        yarn.nodemanager.local-dirs
        /hdpdata/hadoop/tmp/nm-local-dirs
    

    
        yarn.nodemanager.log-dirs
        /hdpdata/hadoop/tmp/nm-log-dirs
    

    
        yarn.nodemanager.log.retain-seconds
        10800
    

        
            yarn.nodemanager.remote-app-log-dir
           /tmp/logs
        

        
                yarn.nodemanager.remote-app-log-dir-suffix
               logs
        

        
               yarn.nodemanager.delete.debug-delay-sec
              600
        




             
        
        
            yarn.acl.enable
            true
        

      <property>

        <name>yarn.admin.aclname>

        <value>hadpvalue>

      property>




 mapred-site.xml

"1.0"?>
"text/xsl" href="configuration.xsl"?>





    
        mapreduce.framework.name
        yarn
    

    
        mapreduce.reduce.shuffle.parallelcopies
        10
    
        
    
    

    
        mapreduce.jobhistory.address
        FoxLog17.engine.wx:10020
    
    
        mapreduce.jobhistory.webapp.address        
            FoxLog17.engine.wx:19888
    


        


             
                     mapreduce.map.memory.mb
                             2048
                                 

        
                mapreduce.map.java.opts
                        -Xmx1536M
                            

        
                mapreduce.reduce.memory.mb
                        4096
                            

        
                mapreduce.reduce.java.opts
                        -Xmx3584M
                            

    
        mapred.child.env
        LD_LIBRARY_PATH=/home/hadoop/lzo/lib
    
    
    
    
              mapreduce.cluster.acls.enabled
        true
    


capacity-scheduler.xml




  
    yarn.scheduler.capacity.maximum-applications
    10000
    
      Maximum number of applications that can be pending and running.
    
  

  
    yarn.scheduler.capacity.maximum-am-resource-percent
    0.1
    
      Maximum percent of resources in the cluster which can be used to run 
      application masters i.e. controls number of concurrent running
      applications.
    
  

  
    yarn.scheduler.capacity.resource-calculator
    org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator
    
      The ResourceCalculator implementation to be used to compare 
      Resources in the scheduler.
      The default i.e. DefaultResourceCalculator only uses Memory while
      DominantResourceCalculator uses dominant-resource to compare 
      multi-dimensional resources such as Memory, CPU etc.
    
  

  
    yarn.scheduler.capacity.root.queues
    default,analysis  
    
      The queues at the this level (root is the root queue).
    
  

  
    yarn.scheduler.capacity.root.default.capacity
    70    
    Default queue target capacity.
  

  
    yarn.scheduler.capacity.root.default.user-limit-factor
    1.4    
    
      Default queue user limit a percentage from 0.0 to 1.0.
    
  

  
    yarn.scheduler.capacity.root.default.maximum-capacity
    100
    
      The maximum capacity of the default queue. 
    
  

  
    yarn.scheduler.capacity.root.default.state
    RUNNING
    
      The state of the default queue. State can be one of RUNNING or STOPPED.
    
  

  
    yarn.scheduler.capacity.root.default.acl_submit_applications
    *
    
      The ACL of who can submit jobs to the default queue.
    
  

  
    yarn.scheduler.capacity.root.default.acl_administer_queue
    *
    
      The ACL of who can administer jobs on the default queue.
    
  

  
    yarn.scheduler.capacity.node-locality-delay
    40
    
      Number of missed scheduling opportunities after which the CapacityScheduler 
      attempts to schedule rack-local containers. 
      Typically this should be set to number of nodes in the cluster, By default is setting 
      approximately number of nodes in one rack which is 40.
    
  
  
    
    
        yarn.scheduler.capacity.root.analysis.capacity
        30       
    

    
        yarn.scheduler.capacity.root.analysis.user-limit-factor
        1.9    <!--可以配置为允许单个用户获取更多资源的队列容量的倍数。如果值小于1,那么该用户使用的资源仅限该队列资源,而不会大量去占用其他队列的闲暇资源。-->
    

    
        yarn.scheduler.capacity.root.analysis.maximum-capacity
        50      
    

    
        yarn.scheduler.capacity.root.analysis.state
        RUNNING     
    

    
        yarn.scheduler.capacity.root.analysis.acl_submit_applications
        *
    

    
        yarn.scheduler.capacity.root.analysis.acl_administer_queue
        *
    


以上配置的解释,仅个人理解的观点,可以结合官方文档进行对比。

 

三: 更新yarn参数

yarn rmadmin -refreshQueues

查看ui:

yarn多租户管理_第2张图片

 

 

四: 提交任务指定queue(推荐方法,也存在其他方式,不进行列举)

mapreduce:代码中指定队列;  

config.set("mapred.job.queue.name", "analysis");

hive:修改配置文件;因为hive一般是用于OLAP平台,可以把队列限制死;

hive-site.xml

    mapreduce.job.queuename
    analysis

spark:运行脚本指定queue 或 代码中指定

1- 脚本方式
--queue analysis

2- 代码方式
saprkConf.set("yarn,spark.queue", "your_queue_name")

 

五:声明点

1- 抢占资源基于先等待后强制抢占的原则。默认配置是不强制抢占资源。队列借出去的资源被回收后才会归还;也可以强制抢回资源(一般会有延时,默认配置不会强制抢回资源)。以container为单位。
2- 资源可以共用,并且可以达到最大限制资源,一般要配合user-limit-factor参数(默认为1,所以不能占用大量队列外资源,所以该参数一般设置大些);
3- CapacityScheduler资源调度器是没办法解决因资源短缺造成的任务等待问题。
4- 如果资源不足够多,会启动较少的container。(例如想启动一个四个container的任务,由于资源不足,只够启动两个,那么会先启动两个container,如果有资源释放,则会启动预期的四个container)

 

六: Fair Scheduler与Capacity Scheduler对比(来自Hadoop技术内幕深入解析YARN架构设计与实现原理)

FairScheduler的优点:提高小应用程序响应时间。由于采用了最大最小公平算法,小作业可以快速获取资源并运行完成。
    随着Hadoop版本的演化,Fair Scheduler和Capacity Scheduler的功能越来越完善,包括层级队列组织方式、资源抢占、批量调度等,也正因如此,两个调度器同质化越来越严重。目前看来,两个调度器在应用场景、支持的特性、内部实现等方面非常接近,而由于Fair Scheduler支持多种调度策略,因此可以认为Fair Scheduler具备了Capacity Scheduler具有的所有功能。

 

建议扩展阅读:董西城--Hadoop技术内幕深入解析YARN架构设计与实现原理 6.5 和 6.6节。

 

你可能感兴趣的:(yarn多租户管理)