hadoop框架与核心组件刨析(三)YARN

一、负载均衡的概念

负载均衡(Load Balancing)是一种将工作负载(如网络流量、计算任务或数据请求)分配到多个资源(如服务器、计算节点或存储设备)的技术,目的是优化资源使用、最大化吞吐量、最小化响应时间,并避免单个资源过载。负载均衡广泛应用于计算机网络、分布式系统、云计算等领域。

负载均衡的核心目标

  1. 提高性能:通过将负载分配到多个资源,避免单个资源成为瓶颈,从而提高系统的整体性能。
  2. 提高可用性:如果一个资源发生故障,负载均衡可以将流量或任务重定向到其他健康的资源,确保系统持续可用。
  3. 扩展性:负载均衡使得系统可以动态地添加或移除资源,以适应不断变化的工作负载需求。
  4. 资源优化:通过合理分配负载,避免资源闲置或过载,提高资源利用率。

负载均衡的类型

  1. 硬件负载均衡

    • 使用专用硬件设备(如F5 BIG-IP、Cisco ACE)来实现负载均衡。
    • 优点:高性能、高可靠性。
    • 缺点:成本高、扩展性有限。
  2. 软件负载均衡

    • 使用软件(如Nginx、HAProxy、Apache HTTP Server)来实现负载均衡。
    • 优点:灵活性高、成本低、易于扩展。
    • 缺点:性能可能不如硬件负载均衡。
  3. DNS负载均衡

    • 通过DNS服务器将域名解析到多个IP地址,实现负载均衡。
    • 优点:简单易用。
    • 缺点:缺乏精细的控制,无法动态调整。

负载均衡的算法

负载均衡器根据特定的算法决定如何分配负载,常见的算法包括:

  1. 轮询(Round Robin)

    • 依次将请求分配给每个资源,循环往复。
    • 适用于资源性能相近的场景。
  2. 加权轮询(Weighted Round Robin)

    • 根据资源的权重分配请求,性能更强的资源获得更多的负载。
    • 适用于资源性能差异较大的场景。
  3. 最少连接(Least Connections)

    • 将请求分配给当前连接数最少的资源。
    • 适用于长连接或会话保持的场景。
  4. IP哈希(IP Hash)

    • 根据客户端IP地址的哈希值分配请求,确保同一客户端的请求始终分配到同一资源。
    • 适用于需要会话一致性的场景。
  5. 响应时间(Response Time)

    • 将请求分配给响应时间最短的资源。
    • 适用于对响应时间敏感的场景。

负载均衡的应用场景

  1. Web服务器负载均衡

    • 将用户请求分配到多个Web服务器,提高网站的性能和可用性。
  2. 数据库负载均衡

    • 将数据库查询请求分配到多个数据库节点,提高数据库的读写性能。
  3. 应用服务器负载均衡

    • 将计算任务分配到多个应用服务器,提高应用的并发处理能力。
  4. 内容分发网络(CDN)

    • 将用户请求分配到离用户最近的CDN节点,减少延迟并提高内容传输速度。
  5. 云计算负载均衡

    • 在云环境中动态分配计算资源,以适应变化的负载需求

二、YARN

YARN(Yet Another Resource Negotiator) 是 Apache Hadoop 生态系统中的核心组件之一,负责集群资源管理和作业调度。它的引入将资源管理与作业调度分离,提升了 Hadoop 的扩展性和灵活性。


YARN 的核心功能

  1. 资源管理

    • 管理集群中的计算资源(如 CPU、内存)。

    • 将资源分配给不同的应用程序。

  2. 作业调度

    • 根据策略(如 FIFO、容量调度、公平调度)分配资源。

  3. 多租户支持

    • 允许多个应用程序(如 MapReduce、Spark、Flink)共享集群资源。


YARN 的架构

YARN 采用主从架构,主要包括以下组件:

  1. ResourceManager (RM):(存在单点故障但是可基于zookeeper实现HA)

    • 主节点,负责全局资源管理和调度。

    • 包含两个子组件:

      • Scheduler:纯调度器,根据策略分配资源。

      • ApplicationsManager:管理应用程序的生命周期。

  2. NodeManager (NM)

    • 从节点,负责单个节点上的资源管理和任务执行。

    • 向 RM 汇报资源使用情况,并执行 RM 的指令。

  3. ApplicationMaster (AM)

    • 每个应用程序有一个 AM,负责与 RM 协商资源,并协调任务的执行。

    • 与 NM 通信,启动和监控任务。

  4. Container

    • 资源抽象单位,封装了 CPU、内存等资源。

    • 应用程序的任务在 Container 中运行。


YARN 的工作流程

  1. 客户端提交应用程序到 RM。

  2. RM 为该应用程序分配一个 Container,并启动 AM。

  3. AM 向 RM 注册,并申请资源。

  4. RM 根据调度策略分配资源。

  5. AM 与 NM 通信,在分配的 Container 中启动任务。

  6. 任务执行期间,AM 监控任务状态并向 RM 汇报。

  7. 应用程序完成后,AM 注销并释放资源。


YARN 的优势

  1. 高扩展性

    • 支持大规模集群(数千个节点)。

  2. 灵活性

    • 支持多种计算框架(如 MapReduce、Spark、Tez)。

  3. 资源利用率高

    • 动态分配资源,避免资源浪费。

  4. 多租户支持

    • 允许多个用户和应用程序共享集群资源。


YARN 的调度器

  1. FIFO Scheduler

    • 先进先出,简单但不适合多用户场景。

  2. Capacity Scheduler

    • 将集群资源划分为多个队列,每个队列有固定的资源容量。

  3. Fair Scheduler

    • 动态平衡资源分配,确保所有应用程序公平共享资源。


YARN 的应用场景

  1. 大数据处理

    • 支持 MapReduce、Spark 等计算框架。

  2. 实时计算

    • 支持 Flink、Storm 等流处理框架。

  3. 机器学习

    • 支持 TensorFlow on YARN、MLlib on Spark 等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值