设为首页 收藏本站
查看: 541|回复: 0

[经验分享] hadoop资源调度器

[复制链接]

尚未签到

发表于 2016-12-6 09:24:00 | 显示全部楼层 |阅读模式
  hadoop支持多用户环境,在生产环境中,往往一个大的hadoop集群,供多个应用如Hive,Mahout等之类的使用。在多用户环境下,有的用户提交的工作量很大、很频繁,而有的很少,还有的优先级很高,那么如何保证“按需”来为各个用户分配资源(内存、CPU、带宽、IO、磁盘)呢?这就需要用到资源调度器。
  这里,我对hadoop的资源调度做个简单的归纳总结:
  一、基本术语
  用户分组管理
  用于按组为单位组织管理,某个用户只能向固定分组中提交作业,只能使用固定分组中配置的资源;同时可以限制每个用户提交的作业数,使用的资源量等
  作业管理
  包括作业提交权限控制,作业运行状态查看权限控制等。如:可限定可提交作业的用户;可限定可查看作业运行状态的用户;可限定普通用户只能修改自己作业的优先级,kill自己的作业;高级用户可以控制所有作业等。
  用户(User)
  Hadoop使用Linux用户管理,Hadoop中的用户就是Linux中的用户
  分组(group)
  Hadoop使用Linux分组管理,Hadoop中的分组就是Linux中的分组
  池(pool)
  Hadoop Fair Scheduler中的概念,一个pool可以是一个user,一个group,或者一个queue。
  队列(Queue)
  队列是Hadoop提出的概念,一个Queue可以由任意几个Group和任意几个User组成。
  二、资源调度管理简介
  Hadoop的资源管理核心
  存储容量管理
  HDFS存储管理
  计算容量管理
  MR任务槽管理
  任务调度器
  三、存储容量管理
  主要是对HDFS的管理:
  HDFS本身也是一种文件系统,与Linux文件系统有类似之处
  对用户组、用户、路径设置Quotas(包括空间大小和文件数量)
  Hadoop dfsadmin -setSpaceQuota size path
  hadoop dfsadmin -setQuota number path
  Hadoop共享Linux的用户组和用户
  HDFS的权限控制:用户和用户组
  四、计算容量管理
  主要是对MapReduce任务槽的管理,任务槽也可以理解为服务器的资源综合统称:
  CPU(如何设置MR,见下面备注)
  内存(设置子任务的jvm参数和GC参数。在1 . 0以后的版本中,可以全局M/R内存和Job               M/R内存)
  网络带宽
  磁盘IO
  单台主机或整个集群资源是有限的。在多任务、多用户环境下,大量并发提交和执行任务是非常常见的,这就导致资源不足而竞争,如何保证在有限资源或业务约束下有序调度和执行任务,需要有一个协调者,这就是Hadoop的资源调度器。
  Hadoop的调度器
  FIFO(default)。先进先出调度器 
  Hadoop默认提供。
  Fair Scheduler(plugin)。公平调度器
  Facebook提供。
  Capacity Scheduler (plugin)。容量调度器
  Yahoo提供。
  1、FIFO Scheduler
  先进先出调度器
  优点:
  Hadoop默认提供。非常简单、JobTracker无负担
  支持五级优先级,每级一个队列,从队列优先级高低提取任务执行。五级分别是:Very Low 、Low 、Normal 、High 、Very Hign;
  在同级队列中,按提交Job的时间先后顺序执行
  无需额外配置
  缺点:
  完全忽略不同作业的需求差异
  
DSC0000.png
 
  2、Fair Scheduler 
  公平分享调度器:在多个用户之间共享集群资源。它按资源池来组织作业,并把资源按时间公平地分到这些资源池里。在每一个资源池内,会使用公平共享地方法在运行作业之间共享容量。
  特征:
  支持多用户(默认一个用户对一个池,依赖于Linux多用户环境)
  资源公平共享(公平共享量由优先级决定,同优先级按FIFO调度)
  保证最小共享量
  支持时间片抢占
  限制作业并发量,以防止中间数据塞满磁盘
  
DSC0001.jpg
 
  3、Capacity Scheduler 
  容量调度器:使多个用户可以安全地共享一个大的集群,应用程序可以在容量限度下获取到需要的资源,最大化集群的吞吐率和利用率。它按队列来组织作业,每个队列会配置一定比例的计算资源,且所有提交到队列中的作业共享该队列中的资源。
  特征:
  层次化的队列
  层次化的队列支持在一个组织内子队列的优先共享资源,从而提供了更多的控制和预
  测的能力,不支持抢占
   资源容量保证
  队列实现了一种资源的划分,所有的应用都会被指定到特定的队列,这些应用所能使用到的资源受到队列所拥有资源的限制
  安全性 
  每一个队列都有一个严格的ACL来控制那些用户可以访问队列,并且有一个safe-guard来保证用户不能够看或者修改其他用户的应用,而且每个队列或系统都可以设置管理员角色。 
  弹性
  空闲的资源可以分配给任何队列,这样可能超出队列的资源限制。也就是说,如果集群有空闲的资源,而有些队列需要的资源超出了分给他的限制,这些空闲的资源将被分配给这些队列,这样就保证了资源的可预测性和弹性,从而防止了人工孤岛,帮助实现资源的优化利用。
  多用户
  系列的综合设置可以防止单一的应用或用户占用队列或集群的全部资源,防止集群被单用户过度使用,从而保证了多用户可以共同使用集群
  可操作性
  RuntimeConfiguration:一些设置可以在运行时进行配置,例如资源分配的容量,                     ACL
  基于资源的调度 
  支持资源密集型的应用,应用可以被指定分配超出缺省设置的更多的资源
  
DSC0002.jpg
 
  Fair VS Capacity
  相同点
  均支持多用户多队列,即:适用于多用户共享集群的应用环境
  单个队列均支持优先级和FIFO调度方式
  均支持资源共享,即某个queue中的资源有剩余时,可共享给其他缺资源的queue
  异同点
  核心调度策略不同。 计算能力调度器的调度策略是,先选择资源利用率低的queue,然后在queue中同时考虑FIFO和memory constraint因素;而公平调度器仅考虑公平,而公平是通过作业缺额体现的,调度器每次选择缺额最大的job(queue的资源量,job优先级等仅用于计算作业缺额)。
  内存约束。计算能力调度器调度job时会考虑作业的内存限制,为了满足某些特殊job的特殊内存需求,可能会为该job分配多个slot;而公平调度器对这种特殊的job无能为力,只能杀掉这种task。
  单一用户环境下,Fair只能共享一个池,Capacity可以多队列

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-310329-1-1.html 上篇帖子: Hadoop常用配置总结 下篇帖子: 远程调试hadoop各组件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表