手记

Hadoop资源管控简介

2018-06-12 10:35:475128浏览

叁金

3实战 · 33手记 · 1推荐

HDFS磁盘配额管理

HDFS的磁盘配额管理功能分为两种:

  1. Name Quotas:用户限制HDFS指定目录下文件或文件夹的数量
  2. Space Quotas:用于限制HDFS指定目录的最大使用空间(注,此处设置的空间包含备份所占用的空间,比如备份数量为3 则上传一个1G的文件,Space会减少3G)

相关命令:

# set HDFS name quotas
hadoop dfsadmin -setQuotas <max_number> <directory>

# set HDFS space quotas
hadoop dfsadmin -setSpaceQuotas <max_size> <directory>

# clear HDFS name quotas
hadoop dfsadmin -clrQuotas <directory>

# clear HDFS space quotas
hadoop dfsadmin -clrSpaceQuotas <directory>

YARN资源配额管理

资源调度和资源隔离是Yarn作为一个资源管理系统,最重要也是最基础的两个功能。其中资源的调度由ResourceManager完成,而资源的隔离由各个NodeManager完成。这里的资源本文主要介绍两种,一种是内存,一种是CPU。

Yarn内存资源管理

在Yarn中关于内存资源的调度器有两种,分别是Capacity SchedulerFair Scheduler

Capacity Scheduler即计算能力调度器是Apache版本Hadoop的默认调度器,由Yahoo贡献。Fair Scheduler即公平调度器是CDH版本的默认调度器,由FaceBook贡献。两者都提供了多用户共享Hadoop集群资源的方法,帮助提高资源的利用率和降低集群管理成本。在设计思想方面Capacity Scheduler是将资源按比例分配给各个队列,并且添加各种严格的限制策略以防止个别用户或者队列独占资源。Fair Scheduler是基于最大最小公平算法将资源分配给各个资源池或者用户。

Capacity Scheduler特点:

  1. 容量保证: 每个队列可以设定最低资源保证和最高资源使用上限,而提交到该队列的任务则共享该队列的资源。
  2. 灵活性:如果一个队列资源有剩余,而其他队列资源紧张,可以先借用资源给其他队列。而一旦该队列有应用程序 提交,则其他队列释放资源后会归还给该队列。
  3. 多种租赁:支持多用户共享集群和多应用程序同时运行。管理员可以为之增加多种约束(某队列最大运行的任务数等)
  4. 安全保证:每个队列都有严格的ACL列表规定它的访问用户,每个用户可以指定哪些用户可以查看自己应用程序的状 态或者控制应用程序(例如杀死应用程序)。管理员可以指定队列管理员和系统管理员
  5. 动态配置更新:管理员可以根据需要动态修改配置参数

Fair Scheduler特点:

  1. 根据用户名来分配资源池
  2. 根据权重获得额外的空闲资源,在每个资源池的配置项中,有个weight属性(默认为1),标记了资源池的权重,当资源池中有任务等待,并且集群中有空闲资源时候,每个资源池可以根据权重获得不同比例的集群空闲资源
  3. 最小资源保证,在每个资源池中,允许配置该资源池的最小资源,这是为了防止把空闲资源共享出去还未回收的时候,该资源池有任务需要运行时候的资源保证
  4. 动态更新资源配额,Fair Scheduler除了需要在yarn-site.xml文件中启用和配置之外,还需要一个XML文件来配置资源池以及配额,而该XML中每个资源池的配额可以动态更新,之后使用命令:yarn rmadmin –refreshQueues 来使得其生效即可,不用重启Yarn集群

Capacity Scheduler和Fair Scheduler的对比

相同点:

  1. 均支持多用户多队列,即:适用于多用户共享集群的应用环境
  2. 单个队列均支持优先级和FIFO调度方式
  3. 均支持资源共享,即某个queue中的资源有剩余时,可共享给其他缺资源的queue
    不同点:
  4. 核心调度策略不同。 计算能力调度器的调度策略是,先选择资源利用率低的queue,然后在queue中同时考虑FIFO和memory constraint因素;而公平调度器仅考虑公平,而公平是通过作业缺额体现的,调度器每次选择缺额最大的job(queue的资源量,job优先级等仅用于计算作业缺额)
  5. 内存约束。计算能力调度器调度job时会考虑作业的内存限制,为了满足某些特殊job的特殊内存需求,可能会为该job分配多个slot;而公平调度器对这种特殊的job无能为力,只能杀掉这种task

Capacity Scheduler相关配置参考Hadoop YARN配置参数剖析(5)—Capacity Scheduler相关参数Hadoop系列(5)之容量调度器Capacity Scheduler配置

Fair Scheduler相关配置参考Hadoop YARN配置参数剖析(4)—Fair Scheduler相关参数Yarn多用户资源管理–Fair Scheduler介绍与配置

Yarn的CPU资源管理

Yarn默认只管理内存资源,虽然也可以申请cpu资源,但是在没有cpu资源隔离的情况下效果并不是太好.在集群规模大,任务多时资源竞争的问题尤为严重,Yarn提供的LinuxContainerExecutor可以通过cgroup来隔离cpu资源。

cgroup是系统提供的资源隔离功能,可以隔离系统的多种类型的资源,Docker就利用cgroup来进行底层的一些资源管控。Yarn只用来隔离cpu资源,cgroup简介参考Linux资源管理之cgroups简介

关于yarn通过cgroup管理cpu资源部分的配置可以见hadoop官网介绍yarn使用cgroup隔离cpu资源

参考资料:董的博客

4人推荐
随时随地看视频
慕课网APP

热门评论

老师,您什么时候出Hadoop进阶视频教程啊,好期待啊

查看全部评论