22、Yarn

Yarn

Yarn的基本架构和工作流程

由前面所说,Yarn由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成。四个组件的作用如下

RM

  1. 处理客户端的请求
  2. 和NM通信,监控其运行状况
  3. 启动或监控ApplicationMaster
  4. 负责整合集群计算资源的分配和调度

NM

  1. 管理单个节点上的资源
  2. 负责处理来自RM上的请求
  3. 处理来自Application的请求

ApplictaionMaster

  1. 负责数据的切分
  2. 为应用程序申请资源并分配任务

Container

是抽象的一个任务在一个Container上运行,用于防止一个任务运行时资源被其他任务占用

工作机制

  1. Mr程序提交到客户端所在的节点
  2. 客户端向RM申请一个Application
  3. RM返回Application资源提交路径以及返回Application——id
  4. 提交本地资源(配置文件,Jar包,分片等)
  5. 资源提交完毕后,客户端向RM申请运行ApplicationMaster.jobrunner
  6. RM将用户的请求初始化一个Task
  7. 一个NM领取任务,并生成一个Container,包装运行的资源
  8. 下载job的资源到NM,并创建一个MRAppmaster。
  9. NM向RM申请运行一个MapTask容器
  10. MRAppmaster将分别申请MapTask和ReduceTask的运行容器
  11. NM运行阶段。

调度器

调度以Task为基本单位

FIFO调度器

FIFO包装先提交的Task先申请到资源,后提交的后申请资源,当出现一个大任务时,可能出现后面的小任务被卡住。资源利用率低!不能满足多样化Job处理的需求

容量调度器

有多条队列,每条队列都有FIFO.根据Job提交到队列的顺序为Job的task分配资源!

  1. 每个队列,用户,Job都可以配置使用资源的容量(最低限制,最高限制)
  2. 空闲队列冗余的资源,可以临时借调给其他队列使用一旦空闲队列,提交了新的job,借调的资源会被锁定,在使用完后立刻归还
  3. 权限保证。每个用户只能查看自己提交job的信息
  4. 配置灵活。集群管理员可以指定队列的管理员等!所有参数可以在线修改,及时生效!动态管理!

公平调度器

对容量调度器在调度策略上的改进!

  1. 和容量调度器类似!多个FIFO队列组成!
  2. 每个队列中,每个Job获取到资源的数量是平等的!
  3. 小的Job占优势,可以获取到自己需要的足够资源! 大的Job占劣势,不能获取到自己需要的足够资源!但是不至于饿死,可以使用部分资源启动部分task!
在使用 `yarn create @vitejs/app` 创建 Vite 项目时,如果遇到 **JavaScript heap out of memory** 错误,通常是因为 Node.js 的默认内存限制不足以支持大型项目的初始化或依赖安装过程。以下是几种可行的解决方案: ### 1. 扩展 Node.js 内存限制 可以通过手动设置 Node.js 的最大堆内存来解决该问题。具体方法是在执行命令时添加 `--max-old-space-size` 参数来扩展内存上限。 例如: ```bash node --max-old-space-size=4096 node_modules/.bin/yarn create @vitejs/app my-app ``` 此命令将 Node.js 的最大内存限制提升至 4GB(4096MB),可以根据系统资源进一步调整该值[^1]。 ### 2. 使用 `increase-memory-limit` 工具 可以安装并运行 `increase-memory-limit` 工具自动修改全局 npm 配置中的内存限制: ```bash npm install -g increase-memory-limit increase-memory-limit ``` 如果运行过程中提示 `node --max-old-space-size=...` 不是内部或外部命令,则可能需要检查 Node.js 是否已正确安装并添加到系统环境变量中。 ### 3. 删除 `.npmrc` 文件 某些情况下,`.npmrc` 文件中的配置可能会导致内存管理异常。尝试删除用户目录下的 `.npmrc` 文件(路径为 `C:\Users\{用户名}\.npmrc`),然后重新运行创建命令[^1]。 ### 4. 使用 npx 直接创建项目 如果 yarn 安装或执行存在问题,可以考虑直接使用 `npx` 来创建 Vite 项目: ```bash npx create-vite@latest my-app --template vue ``` 这将绕过 yarn 的潜在限制,并利用 npm 的缓存机制进行更稳定的依赖加载[^1]。 ### 5. 升级 Node.js 版本 确保使用的 Node.js 版本较新,因为旧版本可能存在内存管理效率较低的问题。建议升级至 **Node.js 18.x 或更高版本**,以获得更好的性能和更高的默认内存限制。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值