【易客吧】_全网激活码总代_激活码商城

您现在的位置是:首页 > 热门资讯 > 正文

热门资讯

使用 Yarn 包管理器安装 Node.js 16 的高级方法 (使用yarn可以带来哪些好处)

用户投稿2024-04-10热门资讯24

简介

Yarn 是一个现代化的、快速且可靠的包管理器,用于 JavaScript 和 TypeScript。它为 Node.js 生态系统提供了高级功能,并可以显著提升开发体验。本文将指导您使用 Yarn 安装 Node.js 16 的高级方法。

使用 Yarn 安装 Node.js 16

要使用 Yarn 安装 Node.js 16,请遵循以下步骤:

1. 安装 Yarn

如果你尚未安装 Yarn,请使用以下命令安装:```Bashnpm install --global yarn```

2. 创建新的项目

导航到你要安装 Node.js 16 的项目目录,并运行以下命令创建新的 Yarn 项目:```Bash yarn init```

3. 安装 Node.js 16

使用以下命令安装 Node.js 16:```Bashyarn add node@16```此命令将安装 Node.js 16 并将其添加到项目的 `package.json` 文件中。

使用 Yarn 的高级功能

Yarn 提供了多种高级功能,可以显著提升开发体验:

1. 离线模式

Yarn 可以使用离线模式,即使没有互联网连接,也能够安装包。要启用离线模式,请运行以下命令:```Bashyarn config set offline true```

2. 缓存

Yarn 会缓存下载的包,以加快后续安装。可以运行以下命令查看缓存:```Bashyarn cache list```若要清除缓存,请运行:```Bashyarn cache clean```

3. 版本管理

Yarn 允许您管理不同版本的包。要安装特定版本的包,请使用以下语法:```Bashyarn add @ ```例如,要安装特定版本的 React,请运行:```Bashyarn add [email protected]```

4. 工作空间

Yarn 支持工作空间,这允许您在单个项目中管理多个包。要创建工作空间,请在项目根目录下创建一个 `workspaces` 文件夹。在每个工作空间文件夹中,运行以下命令:```Bashyarn init --workspaces```

5. 插件

Yarn 具有一个插件系统,可以扩展其功能。您可以安装插件以添加自定义命令或集成其他工具。要安装插件,请运行以下命令:```Bashyarn plugin import ```例如,要安装用于 ESLint 的 Yarn 插件,请运行:```Bashyarn plugin import eslint```

结论

通过使用 Yarn 包管理器安装 Node.js 16,您可以充分利用 Yarn 的高级功能,显著提升您的开发体验。从离线模式到工作空间和插件,Yarn 提供了广泛的功能集,以简化 JavaScript 和 TypeScript 开发。

在linux上安装yarn

一、npm方式安装yarn,前提是先安装nodejs,并确定npm node命令全局可以用 二、安装yarn 三、建立软连接 将yarn命令软链接到全局

使用 Yarn 包管理器安装 Node.js 16 的高级方法 (使用yarn可以带来哪些好处) 第1张

Hadoop的资源管理系统 —— Yarn

Yarn 是 Hadoop 的资源管理系统,用于取代 MapReduce1 的资源调度,改善 MapReduce 的实现,并且有足够的通用性,可以支持其他的分布式计算模式

一般情况下,应用不直接使用 Yarn 的API,而是通过一些分布式计算框架(MapReduce、Spark等)来间接实现资源调度管理,使用这些框架的 Yarn 应用运行在集群计算层(Yarn)和集群存储层(HDFS、HBase)上。

Yarn 主要由两部分组成:resource manager、node manager。

资源管理器(resource manager)管理集群上资源的使用,节点管理器(node manager)运行在集群中所有节点上且能够启动和监控容器(container)。容器用于执行特定应用程序的进程,每个容器都有资源限制(内存、CPU)。

在 Yarn 上运行一个应用的步骤如图所示:

在 MapReduce1中,有两类守护进程控制作业执行过程: jobtracker、tasktracker 。

jobtracker 通过调度 tasktracker 上运行的任务来协调所有运行在系统上的作业,记录每项作业任务的整体进度情况,若有任务失败,则在另一个 tasktracker 节点上重新调度该任务。

tasktracker 在运行任务的同时将运行进度报告发送给 job tracker。

MapReduce1 的 jobtracker 既要负责资源管理(作业的调度分配),将任务分配给不同的 tasktracker;又要负责任务进度的监控。如果集群非常繁忙,每时每刻都有大量的作业,每个作业下又有很多任务,jobtracker 需要面面俱到了解每个任务的执行情况,负担很重。

在 MapReduce2 对 Yarn 的应用中,一般是会先让 RM 启动容器运行一个 Application Master 的进程,然后该进程负责创建和监控所有的 map task 和 reduce task,了解每个 task 的执行进度,每个 task 都会运行在一个单独的 container 中,这些 container 都是 Application Master 统一调度负责向 RM 申请的,这样就把资源分配和作业运行调度监控解耦,让 Yarn 专注于资源调度。

FIFO 调度器将应用放置在一个队列中,然后按照提交的顺序(先入先出)运行应用。

【优点】简单易懂,不需要任何配置。

【缺点】不适合共享集群。大的应用会占用集群的所有资源,每个应用必须等待直到轮到自己运行,作业平均等待时间较长。

为了避免小作业被大作业阻塞,容量调度器会创建几个队列,其中会有专门队列给小作业执行,保证一提交就可以启动。

每个队列都被分配了一定比例容量的资源,保证大作业不会占用整个集群的所有资源。一般每个队列对应一个组织,这样就允许了多个组织共享一个 Hadoop 集群,每个组织可以分配到集群资源的一部分。队列可以进一步按层次划分,这样每个组织内的不同用户能够共享该组织队列所分配的资源。

在一个队列内,使用 FIFO 调度策略对应用进行调度,但是一个job可能使用不了整个队列的资源。然而如果这个队列中运行多个job,如果这个队列的资源够用,那么就分配给这些job。

官方文档:。

容量调度器是 Hadoop2.7 默认的调度器,在 中通过以下参数配置:

弹性队列 :如果队列 queue 资源不够用了,而其他队列可能是有空闲可用的资源,那么容量调度器可能会将空余的资源分配给队列 queue 中的队列,这种特性称为 弹性队列。可以通过.<queue-path>-capacity 参数来控制队列最大占用集群资源容量的比例。

示例:

在 root 队列下定义两个队列:prod、dev。分别占用集群 40%、60% 的容量。

prod 没有设置最大容量限制,所以当 dev 队列空闲,prod 资源不足时,可能会占用整个集群 100% 的资源。

dev 队列设置了最大容量显示为 75%,也就是及时另外 25% 的资源空闲,dev 最大也只能占用整个集群 75% 的资源。dev 队列下还有子队列 eng、science,容量都是 dev 容量的 50%,没有为子队列设置最大容量,所以每个子队列最大都可能占用 dev 队列 100% 的资源,所以占用的整个集群的绝对资源大小为 30%~75%。

将上述示例的配置添加到 hadoop 配置文件目录下的 中,启动 Yarn,上控制台()可以看到配置的队列容量限制。

查看配置的每个队列的容量限制是否生效。

可以看到 prod 队列容量限制是 40%,最大容量限制不设置则默认为 100%。

dev 的两个子队列,占用 dev 队列的相对容量大小为 50%~100%,占用整个集群的绝对容量大小为 30%~100%。

默认的容量调度器配置

公平调度器就是在队列内,所有的作业平等地分配资源,如果队列中只有一个作业,可以占用 100% 的资源;此时进来一个新的作业,则会调度到每个作业占用 50% 的资源,以此类推。

公平调度器不仅实现了队列内部的公平,还实现了队列之间的公平。

现在有两个队列 A、B。当 A 执行第一个作业,而 B 没有作业时,A可以占用整个集群的资源;当 A 作业还没完成,B 执行一个作业,则经过一段时间之后,两个作业各占用集群一半的资源;当 B 启动第二个作业时,队列内部的两个队列共享队列 B 的资源,经过一段时间,各占用集群 1/4 的资源,A 继续占用一半的集群资源。最终结果就是资源在用户之间实现了公平共享。

官方文档:。

启用公平调度器,在 中添加以下配置:

创建公平调度配置文件 ,内容如下:

公平调度器使用一个规则列表来确定应用应该放到哪个队列,可配置的值和含义如下:

将上述的配置配置好,启用 Yarn,web console 上看到的调度器如下:

Hadoop生态圈中的调度组件-YARN

一、YARN:Hadoop集群中的同一资源调度系统。 Hadoop2.0后引入,主要功能有:负责集群中资源的统一调度,响应客户端的请求。 优缺点二、YARN核心组件及架构 1. ResourceManger(RM):全局资源管理器,集群中只有一个活跃的RM,具体功能包括:处理客户端的请求;启动监控ApplicationMaster;监控NodeManger;资源的分配和调度。 (AM):每个应用程序(job任务)对应一个AM,负责计算job的资源情况,并向RM申请和任务的调度。 具体功能包括:(1)计算job资源使用情况,与RM协商申请job的资源情况;(2)与NodeManger通信启动/停止Container,来执行/终止任务的具体执行;(3)监控任务的运行状态及失败处理。 (NM):节点的资源管理器,每个节点启动一个,一般与DataNode一 一对应。 具体功能包括:(1)监控和管理当前节点的资源使用情况;(2)通过心跳向RM汇报自身的资源使用情况;(3)处理RM的请求,分配执行AM的Container;(4):处理AM的请求,启动和停止执行任务的Container。 :资源的抽象,包括一系列描述信息,任务的运行资源(节点、CPU、内存等),任务运行环境,启动命令等。 架构图见 yarn-arch 三、YARN运行流程 2. RM根据内部调度器,选取一个资源空闲的NM,启动一个Container来运行AM。 计算应用程序所需资源,向RM进行资源申请,申请字段包括: messageResourceRequestProto{ optionalPriorityProtopriority=1;//资源优先级 optionalstringresource_name=2;//期望资源所在的host optionalResourceProtocapability=3;//资源量(mem、cpu) optionalint32num_containers=4;//满足条件container个数 optionalboolrelax_locality=5;//default=true; } AM会根据文件的存储地址,分析运行需要的资源等,向RM申请一个期望的资源列表,RM同时考虑各个节点资源使用情况,最终分配一个资源列表。 4. RM返回资源列表,以cotainer结构 messageContainerProto{ optionalContainerIdProtoid=1;//containerid optionalNodeIdProtonodeId=2;//container(资源)所在节点 optionalstringnode_http_address=3; optionalResourceProtoresource=4;//分配的container数量 optionalPriorityProtopriority=5;//container的优先级 _token=6;//containertoken,用于安全认证 } 5. AM与NM通信,分配Container并执行任务,以ContainerLaunchContext 结构发出请求。 同时监控各个节点的运行情况(定期心跳),如果失败,AM可将该节点的任务调度到其他节点运行。 一个NN可以启动多个Container。 ContainerLaunchContext结构: messageContainerLaunchContextProto{ repeatedStringLocalResourceMapProtolocalResources=1;//该Container运行的程序所需的在资源,例如:jar包 optionalbytestokens=2;//Security模式下的SecurityTokens repeatedStringBytesMapProtoservice_data=3; repeatedStringStringMapProtoenvironment=4;//Container启动所需的环境变量 repeatedstringcommand=5;//该Container所运行程序的命令,比如运行的为java程序,即$JAVA_HOME/bin/_ACLs=6;//该Container所属的Application的访问控制列表 }RM负责AM的启动和监控,若异常可重新运行。 AM负责真个job任务的运行、监控,及失败处理操作。 四、YARN的调度器 先进先出FIFO Cap 容量调度器 Fire 公平调度器

若对本页面资源感兴趣,请点击下方或右方图片,注册登录后

搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源

如有其他疑问,请咨询右下角【在线客服】,谢谢支持!

使用 Yarn 包管理器安装 Node.js 16 的高级方法 (使用yarn可以带来哪些好处) 第2张

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
欢迎你第一次访问网站!