Hadoop:以下内容为V3.3版本
资源管理器(ResourceManager):整个集群所有资源的管理者。作用:处理客户端请求、监控NodeManager、启动或监控ApplicationMaster、资源的分配与调度。
容器(Container):对任务运行环境的抽象,虚拟化技术容器,相当于一台独立的服务器,里面封装了任务运行所需要的资源,如内存、cpu、磁盘、网络等。好处:任务运行完直接释放。
Application Master:单个任务运行的老大,任务在Container内运行客户端提交一个job,就会产生一个ApplicationMaster。作用:为应用程序申请资源并分配给内部的任务、任务的监控与容错。
hadoop3默认的调度器
图中queueA分配最多20%资源,queueB分配50%,queueC分配30%。其中queueC,配置租户ss、cls。
hadoop3默认的容量调度器可以改为公平调度器
同队列所有任务共享资源,在时间尺度上获得公平的资源。如queueA,20%资源,4个任务,每个5%。
以下执行yarn rmadmin -refreshQueues可刷新队列配置
default 队列占总内存的 40%,最大资源容量占总资源 60%(容量调度器允许借用其他队列剩余的资源,这里限制不超过60%), hive 队列占总内存的 60%, 最大资源容量占总资源 80%。
在 capacity-scheduler.xml 中配置如下:
vcore和内存固定值配置,参考官网
yarn.scheduler.capacity.<queue-path>.maximum-allocation-mb
:每个队列在资源管理器上分配给每个容器请求的最大内存限制。此设置覆盖集群配置 yarn.scheduler.maximum-allocation-mb。该值必须小于等于集群最大值。
yarn.scheduler.capacity.<queue-path>.maximum-allocation-vcores
:每个队列在资源管理器中分配给每个容器请求的虚拟内核的最大限制。此设置会覆盖集群配置 yarn.scheduler.maximum-allocation-vcores。该值必须小于或等于集群最大值。
限制用户提交、操作权限
在capacity-scheduler.xml中配置如下:
任务优先级,在资源紧张时,优先级高的任务将优先获取资源。默认情况,Yarn将所有任务的优先级限制为0,若想使用任务的优先级功能,须开放该限制。
修改yarn-site.xml文件,增加以下参数,为给任务优先级配置5个等级:
通过以下命令修改正在执行的任务的优先级。
例如:
创建两个队列,分别是test和test2(以用户所属组命名)。若用户提交任务时指定队列,则任务提交到指定队列运行;若未指定队列,test用户提交的任务到root.group.test队列运行,test2提交的任务到root.group.test2队列运行(注:group为用户所属组)。
公平调度器的配置涉及到两个文件,一个是yarn-site.xml,另一个是公平调度器队列分配文件fair-scheduler.xml(文件名可自定义)。
修改yarn-site.xml文件,加入以下参数:
配置fair-scheduler.xml: