撸撸撸做最好的导航网站,饰品网站建设策划书,discuz论坛官网,如何做代刷网站试想一下#xff0c;你现在所在的公司有一个hadoop的集群。但是A项目组经常做一些定时的BI报表#xff0c;B项目组则经常使用一些软件做一些临时需求。那么他们肯定会遇到同时提交任务的场景#xff0c;这个时候到底如何分配资源满足这两个任务呢#xff1f;是先执行A的任务… 试想一下你现在所在的公司有一个hadoop的集群。但是A项目组经常做一些定时的BI报表B项目组则经常使用一些软件做一些临时需求。那么他们肯定会遇到同时提交任务的场景这个时候到底如何分配资源满足这两个任务呢是先执行A的任务再执行B的任务还是同时跑两个 如果你存在上述的困惑可以多了解一些yarn的资源调度器。 在Yarn框架中调度器是一块很重要的内容。有了合适的调度规则就可以保证多个应用可以在同一时间有条不紊的工作。最原始的调度规则就是FIFO即按照用户提交任务的时间来决定哪个任务先执行但是这样很可能一个大任务独占资源其他的资源需要不断的等待。也可能一堆小任务占用资源大任务一直无法得到适当的资源造成饥饿。所以FIFO虽然很简单但是并不能满足我们的需求。 yarn默认还提供了两种调度规则capacity和fair share。本篇就主要介绍下capacity调度器 什么是capacity调度器 Capacity调度器说的通俗点可以理解成一个个的资源队列。这个资源队列是用户自己去分配的。比如我大体上把整个集群分成了AB两个队列A队列给A项目组的人来使用。B队列给B项目组来使用。但是A项目组下面又有两个方向那么还可以继续分比如专门做BI的和做实时分析的。那么队列的分配就可以参考下面的树形结构 root
------a[60%]|---a.bi[40%]|---a.realtime[60%]
------b[40%] a队列占用整个资源的60%b队列占用整个资源的40%。a队列里面又分了两个子队列一样也是2:3分配。 虽然有了这样的资源分配但是并不是说a提交了任务它就只能使用60%的资源那40%就空闲着。只要资源实在空闲状态那么a就可以使用100%的资源。但是一旦b提交了任务a就需要在释放资源后把资源还给b队列直到ab平衡在3:2的比例。 粗粒度上资源是按照上面的方式进行在每个队列的内部还是按照FIFO的原则来分配资源的。 特性 capacity调度器具有以下的几个特性 层次化的队列设计这种层次化的队列设计保证了子队列可以使用父队列设置的全部资源。这样通过层次化的管理更容易合理分配和限制资源的使用。容量保证队列上都会设置一个资源的占比这样可以保证每个队列都不会占用整个集群的资源。安全每个队列又严格的访问控制。用户只能向自己的队列里面提交任务而且不能修改或者访问其他队列的任务。弹性分配空闲的资源可以被分配给任何队列。当多个队列出现争用的时候则会按照比例进行平衡。多租户租用通过队列的容量限制多个用户就可以共享同一个集群同事保证每个队列分配到自己的容量提高利用率。操作性yarn支持动态修改调整容量、权限等的分配可以在运行时直接修改。还提供给管理员界面来显示当前的队列状况。管理员可以在运行时添加一个队列但是不能删除一个队列。管理员还可以在运行时暂停某个队列这样可以保证当前的队列在执行过程中集群不会接收其他的任务。如果一个队列被设置成了stopped那么就不能向他或者子队列上提交任务了。基于资源的调度协调不同资源需求的应用程序比如内存、CPU、磁盘等等。关于调度器的配置 配置调度器 在ResourceManager中配置它要使用的调度器配置方式是修改conf/yarn-site.xml设置属性 yarn.resourcemanager.scheduler.classorg.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler 配置队列 调度器的核心就是队列的分配和使用了修改conf/capacity-scheduler.xml可以配置队列。 Capacity调度器默认有一个预定义的队列——root,所有的队列都是它的子队列。队列的分配支持层次化的配置使用.来进行分割比如yarn.scheduler.capacity.queue-path.queues. 下面是配置的样例比如root下面有三个子队列: propertynameyarn.scheduler.capacity.root.queues/namevaluea,b,c/valuedescriptionThe queues at the this level (root is the root queue)./description
/propertypropertynameyarn.scheduler.capacity.root.a.queues/namevaluea1,a2/valuedescriptionThe queues at the this level (root is the root queue)./description
/propertypropertynameyarn.scheduler.capacity.root.b.queues/namevalueb1,b2,b3/valuedescriptionThe queues at the this level (root is the root queue)./description
/property 队列属性 yarn.scheduler.capacity..capacity它是队列的资源容量占比(百分比)。系统繁忙时每个队列都应该得到设置的量的资源当系统空闲时该队列的资源则可以被其他的队列使用。同一层的所有队列加起来必须是100%。 yarn.scheduler.capacity..maximum-capacity队列资源的使用上限。由于系统空闲时队列可以使用其他的空闲资源因此最多使用的资源量则是该参数控制。默认是-1即禁用。 yarn.scheduler.capacity..minimum-user-limit-percent每个任务占用的最少资源。比如你设置成了25%。那么如果有两个用户提交任务那么每个任务资源不超过50%。如果3个用户提交任务那么每个任务资源不超过33%。如果4个用户提交任务那么每个任务资源不超过25%。如果5个用户提交任务那么第五个用户需要等待才能提交。默认是100即不去做限制。 yarn.scheduler.capacity..user-limit-factor每个用户最多使用的队列资源占比如果设置为50.那么每个用户使用的资源最多就是50%。 运行和提交应用限制 yarn.scheduler.capacity.maximum-applications / yarn.scheduler.capacity..maximum-applications设置系统中可以同时运行和等待的应用数量。默认是10000. yarn.scheduler.capacity.maximum-am-resource-percent / yarn.scheduler.capacity..maximum-am-resource-percent设置有多少资源可以用来运行app master即控制当前激活状态的应用。默认是10%。 队列管理 yarn.scheduler.capacity..state队列的状态可以使RUNNING或者STOPPED.如果队列是STOPPED状态那么新应用不会提交到该队列或者子队列。同样如果root被设置成STOPPED那么整个集群都不能提交任务了。现有的应用可以等待完成因此队列可以优雅的退出关闭。 yarn.scheduler.capacity.root..acl_submit_applications访问控制列表ACL控制谁可以向该队列提交任务。如果一个用户可以向该队列提交那么也可以提交任务到它的子队列。 yarn.scheduler.capacity.root..acl_administer_queue设置队列的管理员的ACL控制管理员可以控制队列的所有应用程序。同样它也具有继承性。 注意ACL的设置是user1,user2 group1,group2这种格式。如果是*则代表任何人。空格表示任何人都不允许。默认是*. 其他属性 yarn.scheduler.capacity.resource-calculator资源计算方法默认是org.apache.hadoop.yarn.util.resource.DefaultResourseCalculator,它只会计算内存。DominantResourceCalculator则会计算内存和CPU。 yarn.scheduler.capacity.node-locality-delay调度器尝试进行调度的次数。一般都是跟集群的节点数量有关。默认40一个机架上的节点数 一旦设置完这些队列属性就可以在web ui上看到了。可以访问下面的连接 xxx:8088/scheduler 修改队列配置 如果想要修改队列或者调度器的配置可以修改 vi $HADOOP_CONF_DIR/capacity-scheduler.xml 修改完成后需要执行下面的命令 $HADOOP_YARN_HOME/bin/yarn rmadmin -refreshQueues 注意 队列不能被删除只能新增。更新队列的配置需要是有效的值同层级的队列容量限制想加需要等于100%。参数 1 Hadoop YARN配置参数剖析(5)—Capacity Scheduler相关参数 2 capacity调度器官方文档 3 《Hadoop Yarn权威指南》 转载于:https://www.cnblogs.com/xing901022/p/6174178.html