暑假学习05

Blog 05: Hadoop YARN 的资源管理和调度

摘要

本周,我投入了6小时深入学习Hadoop YARN(Yet Another Resource Negotiator)的资源管理和调度机制。我深入探讨了YARN的架构及其在Hadoop生态系统中的核心作用,特别关注了ResourceManager和NodeManager的工作原理。通过实际配置和调优YARN,我获得了宝贵的经验,学会了如何更有效地管理和分配集群资源。

关键词: YARN, ResourceManager, NodeManager, 资源调度

学习时长: 6小时

学习内容: YARN架构, 资源管理, YARN调优

YARN简介

YARN是Hadoop 2.0引入的一个重要特性,它将资源管理和作业调度/监控的功能从MapReduce中分离出来。这种分离使得Hadoop能够支持更多类型的分布式计算,而不仅限于MapReduce。

YARN架构

YARN的核心组件包括:

  1. ResourceManager (RM): 整个集群的资源管理器,负责全局资源分配。
  2. NodeManager (NM): 每个节点上的资源和任务管理器。
  3. ApplicationMaster (AM): 负责协调每个应用程序的资源需求。
  4. Container: YARN中的资源抽象,包含了内存、CPU等资源。

ResourceManager深入解析

ResourceManager是YARN的中央权威,主要由两个组件组成:

  • Scheduler: 负责将集群资源分配给各种运行的应用程序。
  • ApplicationsManager: 负责接受作业提交,协商启动ApplicationMaster。

我特别关注了Scheduler的不同实现,如Capacity Scheduler和Fair Scheduler,它们各自适用于不同的场景。

NodeManager的工作机制

NodeManager是每个节点上的代理,负责容器、监控它们的资源使用(CPU、内存、磁盘、网络)以及将这些信息报告给ResourceManager。

资源调度过程

学习过程中,我绘制了一个流程图来帮助理解YARN的资源调度过程:

  1. 客户端向ResourceManager提交应用程序。
  2. ResourceManager为应用分配一个Container来运行ApplicationMaster。
  3. ApplicationMaster向ResourceManager注册,请求资源。
  4. ResourceManager根据调度策略分配资源。
  5. ApplicationMaster通知相应的NodeManager启动Container。
  6. Container执行任务,并定期向ApplicationMaster报告进度和状态。

YARN调优实践

在实践环节,我进行了以下YARN调优操作:

  1. 内存配置: 调整了yarn.nodemanager.resource.memory-mbyarn.scheduler.maximum-allocation-mb参数,以优化内存分配。

  2. CPU配置: 设置了yarn.nodemanager.resource.cpu-vcores参数,合理分配CPU资源。

  3. 调度器选择: 尝试了Capacity Scheduler和Fair Scheduler,比较了它们在不同工作负载下的表现。

  4. 队列配置: 为不同类型的作业设置了资源队列,确保资源的公平分配。

<property>
  <name>yarn.scheduler.capacity.root.queues</name>
  <value>default,hive,spark</value>
</property>
<property>
  <name>yarn.scheduler.capacity.root.default.capacity</name>
  <value>40</value>
</property>
<property>
  <name>yarn.scheduler.capacity.root.hive.capacity</name>
  <value>30</value>
</property>
<property>
  <name>yarn.scheduler.capacity.root.spark.capacity</name>
  <value>30</value>
</property>

性能监控

为了评估调优效果,我使用了以下工具:

  • YARN Web UI: 提供了集群资源使用的实时视图。
  • yarn top: 命令行工具,展示了YARN应用的资源使用情况。
  • Ganglia: 用于长期监控集群性能趋势。

挑战与收获

最大的挑战是平衡不同应用的资源需求。我学会了如何根据工作负载特征来调整YARN配置,以实现资源利用的最大化。

深入理解YARN让我对大规模分布式系统的复杂性有了新的认识。我更加欣赏YARN的灵活性,它允许Hadoop支持各种计算范式。

下一步计划

接下来,我计划探索YARN的高可用性配置,以及如何集成像Docker这样的容器技术。我也对YARN对新兴的机器学习和深度学习工作负载的支持很感兴趣,打算进一步研究这方面的应用。

posted @   aallofitisst  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示