HDFS磁盘配额管理
HDFS的磁盘配额管理功能分为两种:
- Name Quotas:用户限制HDFS指定目录下文件或文件夹的数量
- 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 Scheduler
和Fair Scheduler
。
Capacity Scheduler即计算能力调度器是Apache版本Hadoop的默认调度器,由Yahoo贡献。Fair Scheduler即公平调度器是CDH版本的默认调度器,由FaceBook贡献。两者都提供了多用户共享Hadoop集群资源的方法,帮助提高资源的利用率和降低集群管理成本。在设计思想方面Capacity Scheduler是将资源按比例分配给各个队列,并且添加各种严格的限制策略以防止个别用户或者队列独占资源。Fair Scheduler是基于最大最小公平算法将资源分配给各个资源池或者用户。
Capacity Scheduler特点:
- 容量保证: 每个队列可以设定最低资源保证和最高资源使用上限,而提交到该队列的任务则共享该队列的资源。
- 灵活性:如果一个队列资源有剩余,而其他队列资源紧张,可以先借用资源给其他队列。而一旦该队列有应用程序 提交,则其他队列释放资源后会归还给该队列。
- 多种租赁:支持多用户共享集群和多应用程序同时运行。管理员可以为之增加多种约束(某队列最大运行的任务数等)
- 安全保证:每个队列都有严格的ACL列表规定它的访问用户,每个用户可以指定哪些用户可以查看自己应用程序的状 态或者控制应用程序(例如杀死应用程序)。管理员可以指定队列管理员和系统管理员
- 动态配置更新:管理员可以根据需要动态修改配置参数
Fair Scheduler特点:
- 根据用户名来分配资源池
- 根据权重获得额外的空闲资源,在每个资源池的配置项中,有个weight属性(默认为1),标记了资源池的权重,当资源池中有任务等待,并且集群中有空闲资源时候,每个资源池可以根据权重获得不同比例的集群空闲资源
- 最小资源保证,在每个资源池中,允许配置该资源池的最小资源,这是为了防止把空闲资源共享出去还未回收的时候,该资源池有任务需要运行时候的资源保证
- 动态更新资源配额,Fair Scheduler除了需要在yarn-site.xml文件中启用和配置之外,还需要一个XML文件来配置资源池以及配额,而该XML中每个资源池的配额可以动态更新,之后使用命令:yarn rmadmin –refreshQueues 来使得其生效即可,不用重启Yarn集群
Capacity Scheduler和Fair Scheduler的对比
相同点:
- 均支持多用户多队列,即:适用于多用户共享集群的应用环境
- 单个队列均支持优先级和FIFO调度方式
- 均支持资源共享,即某个queue中的资源有剩余时,可共享给其他缺资源的queue
不同点: - 核心调度策略不同。 计算能力调度器的调度策略是,先选择资源利用率低的queue,然后在queue中同时考虑FIFO和memory constraint因素;而公平调度器仅考虑公平,而公平是通过作业缺额体现的,调度器每次选择缺额最大的job(queue的资源量,job优先级等仅用于计算作业缺额)
- 内存约束。计算能力调度器调度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资源
参考资料:董的博客
热门评论
老师,您什么时候出Hadoop进阶视频教程啊,好期待啊