-
1、简介YARN是Facebook,Google,Exponent和Tilde开发的一款新的JavaScript包管理工具。YARN缓存了每个下载过的包,所以再次使用时无需重复下载。同时利用并行下载以最大化资源利用率,因此安装速度更快2、基础环境类别子项版本获取地址(方法)华为云虚拟机KC1(920)--OSCentOS7.7Kernel4.14软件包Node js10.16.0https://nodejs.org/dist/v10.16.0/node-v10.16.0-linux-arm64.tar.xzYarn1.15.0https://github.com/yarnpkg/yarn/releases/download/v1.15.0/yarn-v1.15.0.tar.gz3、依赖安装YARN依赖nodejs 4.0及以上版本,所以需要先安装nodejs。执行如下命令,安装nodejs。wget https://nodejs.org/dist/v10.16.0/node-v10.16.0-linux-arm64.tar.xztar -xvf node-v10.16.0-linux-arm64.tar.xz4、组件编译安装 注:该软件不涉及编译,源码下载后直接解压即可使用Github下载源代码wget https://github.com/yarnpkg/yarn/releases/download/v1.15.0/yarn-v1.15.0.tar.gztar xf yarn-v1.15.0.tar.gz导入环境变量export PATH=/usr/local/src/yarn-v1.15.0/bin:$PATHexport PATH=/usr/local/src/node-v10.16.0-linux-arm64/bin:$PATH5、系统配置无6、测试yarn –v 查看 7、参考信息无8、FAQ无
-
【问题描述】IDE插件无法正常展示功能按钮,导致无法使用初始化、本地调试、真机调试、上传、设置等功能【解决方案】原因:装好IDE插件,首次加载We码项目,IDE插件会根据项目中的package.json,安装依赖。安装依赖成功之后,才会展示功能菜单解决:第一步:如果无法成功安装依赖,在cmd中输入 npm config get registry ,检查npm源地址是否为https://mirrors.huaweicloud.com/repository/npm/如果不是,请参考https://cloudlinkworkplace.huaweicloud.com/wecode/docs/dev/prod/quickstart/vscode_cloud/envbuild.html 设置npm源地址第二步:安装依赖 执行命令 yarn 或 npm I 注意,之前用yarn安装的,就继续用yarn安装,npm同理。
-
1、简介 Yarn是一个快速、可靠、安全的依赖管理工具,是npm的代替品。Yarn对你的代码来说是一个包管理工具,你可以通过它使用全世界开发者的代码,或者分享自己的代码。 官方链接:https://yarnpkg.com/en/ 类别:工具2、基础环境类别子项版本获取地址(方法)华为云虚拟机RC3(916)--OSCentOS7.6 Kernel4.14 软件包nodejs6.16.0 yarn1.16.0 3、依赖安装安装epel-releaseyum install -y epel-release配置epel源为华为源“baseurl=https://mirrors.huaweicloud.com/epel/7/$basearch”vim /etc/yum.repos.d/epel.repo 清除yumyum clean all下载服务器包到本地缓存yum makecache更新yum 包yum -y update安装依赖nodejsyum install -y nodejs.aarch644、组件编译安装下载yarn的仓curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | tee /etc/yum.repos.d/yarn.repo安装yarnyum install -y yarn5、系统配置修改环境变量vim /etc/profile路径为yarn可执行程序所在路径使环境变量立即生效source /etc/profile6、测试测试内容:验证yarn是否安装成功测试结果:安装成功yarn --version测试内容:yarn是否可以正常使用测试结果:可以正常使用7、参考信息 官方文档:https://yarnpkg.com/en/docs 8、FAQ无
-
镜像名称yarnhttps://yarnpkg.com/镜像简介它是NodeJS的包管理器,是npm的一个替代品。镜像源地址/同步方案镜像是普通系统源的类型。参考:https://yarnpkg.com/en/docs/install#debian-stable参考安装方式:curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get update && sudo apt-get install yarn
-
背景注意: 此方案仅适合已经自行搭建私有仓库的用户使用 如非必要,尽可能使用软件开发云或其他服务提供的镜像站,避免此类特殊处理(会导致仓库维护成本增加)场景描述YARN构建中,如果使用了cypress包,会出现如下的下载过程 1. 从npm仓库下载 cypress.tgz : npm http fetch GET 200 https://mirrors.huaweicloud.com/repository/npm/cypress/-/cypress-3.1.4.tgz 146ms 2. 执行cypress-3.1.4.tgz中的脚本,该脚本会拼接出cypress.zip的下载地址并下载,分析cypress.tgz脚本发现,下载地址获取过程如下: (1) 获取下载服务器地址:如果环境变量有值,则去环境变量中配置的地址,否则取默认地址 https://download.cypress.io/ (2) 拼接cypress.zip文件路径:脚本中会固定拼接成 desktop/3.1.4?platform=linux&arch=x64 (3) 最终得到cypress.zip下载地址为:https://download.cypress.io/desktop/3.1.4?platform=linux&arch=x64 ,开始下载依赖 3. 从国内下载 https://download.cypress.io/desktop/3.1.4?platform=linux&arch=x64 时,速度比较慢,会导致构建卡顿甚至超时失败问题分析从”场景描述“中下载步骤可以看出:国内访问cypress.io慢,需要替换其他地址,cypress.tgz已提供了环境变量 (CYPRESS_DOWNLOAD_MIRROR),可以更换下载地址 https://download.cypress.io/desktop/3.1.4?platform=linux&arch=x64 中,可以在构建过程中改变的只有 https://download.cypress.io部分,余下内容为固定值无法改变解决方案手工下载cypress.zip文件,并上传到私有仓库上传到私有仓库时,指定文件路径为/desktop/3.1.4,与cypress.tgz脚本中定义的保持一致(版本号3.1.4以实际使用为准)在构建命令中设置环境变量,将https://download.cypress.io替换为私有仓库地址操作步骤详细操作步骤可参考 https://help.sonatype.com/repomanager3/raw-repositories-and-maven-sites#RawRepositoriesandMavenSites-CreatingaHostedRawRepository 此处提供简易操作步骤如下:1. 从官网下载cypress.zip文件https://download.cypress.io/desktop/3.1.4?platform=linux&arch=x64 2. 在Nexus3创建文件系统,新建raw(hosted)仓库3. 获取hosted仓库url,调用如下命令上传文件到对应路径curl -v --user 'admin:admin123' --upload-file ./cypress.zip http://localhost:8081/repository/npm/cypress/desktop/3.1.4 注意: 上传时指定的文件路径(/desktop/3.1.4)必须与官网下载地址的文件路径保持一致,此处使用desktop/3.1.4即可(具体版本号以实际使用的版本为准)4. 修改构建任务,配置环境变量以修改cypress.zip下载地址在构建命令前添加:export CYPRESS_DOWNLOAD_MIRROR="http://localhost:8081/repository/npm/cypress/"
-
作者叶子是一位90后,天秤座,大数据&人工智能美女讲师。钟情创作,相信一切感受皆是生命的体验,坚持在朴素的文字中寻找生活的出路。是一位集才气于一身的大美女。在《聪明的Yarn(上集)》中,我向大家说明了Yarn如何解决MapReduce V1的单点故障、单点性能瓶颈以及不兼容其他计算框架等问题。今天我们一起来看一看,当集群中有很多用户向Yarn提交作业时,Yarn要如何有条不紊地进行调度,为各个作业分配资源呢?答案Yarn是通过容量调度器(Capacity Scheduler)来管理和分配集群资源的,其调度方法通过队列(也叫租户)机制来实现。管理员可以在Yarn上创建多个队列。队列类型分为两种:叶子队列和非叶子队列,非叶子队列下可以继续创建一个或者多个子队列。每个队列都有相应的集群资源配额,当前Yarn支持内存和CPU两种资源类型的管理和分配。各个应用或用户客户端可以指定子队列提交作业执行请求,如果不指定,则表示将作业提交到default队列。当集群中出现多个应用或客户端同时提交多个作业到Yarn上时,不同应用或客户端提交的不同作业可能分散在各个队列上,被提交到同一个队列上的作业共享该队列的资源。容量调度器以队列为单位划分资源,支持多用户、多应用程序(即作业)共享。为防止单个应用程序、用户或者队列独占集群资源,管理员可为之增加多重设置,约束单个队列、用户或应用程序的资源使用量。该机制考虑周全,善解人意,着实是个好东西。下面就让我来替大家细数一番它的典型特征吧!1、容量保证:管理员可为每个队列设置容量大小(capacity),以集群全部资源的百分比的方式呈现。该占比也代表当前队列的最低资源保障,表示当集群资源紧张,各个队列都业务繁忙的时候,当前队列可以享用的最低资源比例。集群中除管理员创建的队列外,还有一个default队列和一个影子队列,全部队列的容量相加为100%。其中影子队列的容量会随着其他队列容量之和的变化而变化,不可人为设置。2、灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,当该队列有新的应用程序提交,则其他队列释放的资源会归还给该队列。管理员可为每个队列设置最大容量(maximum-capacity)占比,该占比表示资源使用上限,即当集群中其他队列都比较空闲,而某个队列业务繁忙的时候,该队列可以享用的最高资源比例。假如管理员将队列A的maximum-capacity配置为100,且当前只有队列A有作业需要执行,理论上它可以占用整个集群100%的资源。3、支持优先级:队列支持作业优先级调度(默认是FIFO)。也就是说被提交到同一个队列的作业如果优先级不同,则根据优先级高低被调度;如果优先级相同,则根据提交时间被调度。4、不支持资源抢占:无论优先级高低,任何情况下,任何作业不可以抢占当前正在执行的作业的资源。包含如下特殊情况:队列A业务繁忙,队列B资源空闲。根据容量调度器的“灵活性”特征,队列B的资源将被共享给A。而此时有客户端向队列B提交作业,队列B不能直接将队列A上正在执行的作业所占用的资源“抢回来”,必须等待队列A的部分作业执行完成,释放相应资源归还给队列B。5、用户资源使用量限制:任何时刻,一个队列中每个用户可使用的资源量均有一定的限制,当一个队列中同时运行多个用户的作业时,每个用户可使用的资源量在一个最小值与最大值之间浮动。例如,管理员设置队列A的用户最低资源百分比为25,则表示每个向队列A提交作业的用户至少可以使用队列A中25%的资源。随着提交作业的用户数目增加,队列资源分配情况如下:第1个用户提交作业到QueueA获得QueueA的100%资源第2个用户提交作业到QueueA每个用户会最多获得50%的资源第3个用户提交作业到QueueA每个用户会最多获得33.33%的资源第4个用户提交作业到QueueA每个用户会最多获得25%的资源第5个用户提交作业到QueueA为了保障每个用户最低能获得25%的资源,第5个用户将无法再获取到QueueA的资源,必须等待资源的释放同时,管理员也可以设置队列中每个用户最多可使用的资源量,用所在队列容量的倍数来表示。默认值为1,表示一个用户可以获取的最大资源量等于该队列的capacity。注意,无论该参数如何设置,一个用户可以获取的最大资源量不可超过所在队列的maximum-capacity。6、任务数量限制:管理员可以设置整个集群中允许同时存在的最大活跃作业数,包括运行或挂起状态的所有作业,默认为10000。当提交的作业数量达到限制以后,新提交的作业将会被拒绝。管理员还可以设置每个队列支持的最大活跃作业数,该参数可以在队列配置页面进行设定,默认为1000。根据队列支持的最大并发作业数,可以获取每个用户可以提交到该队列的最大作业数。例如,QueueA最多可以同时提交1000个作业,那么每个用户可以向QueueA提交的最大作业数为:1000*用户最低资源百分比*每个用户最多可使用的资源量。7、动态更新配置文件:管理员可根据需要动态修改配置参数,不需要重启集群,以实现在线集群管理。注意,当前集群只支持在线增加队列,不支持减少队列,即增加队列不需要重启集群,而减少队列必须重启集群或者RM。怎么样,对于Yarn的这些特点,小伙伴们服不服气?话说回来,各个应用或客户端把作业提交到队列之后,Yarn应该先为哪个队列上的哪个作业分配资源呢?让我们一起来看看吧!每次NodeManager向ResourceManager发送心跳信息(心跳信息中包含当前节点的资源使用情况,以便让RM了解NM的负载,更合理的为作业分配资源。注意:此处心跳频率的设置非常重要,时间太长资源分配不及时且利用率不高,时间太短网络带宽占用比较大)的时候,调度器会根据一定规则先选择一个队列,然后在该队列上选择一个作业,并为这个作业分配资源,具体过程如下。第一步:选择队列。最小层级队列优先,层级相同的队列中资源利用率最低的队列优先。注意:管理员为队列设置的容量表示资源配额,只有队列中的作业被执行时才会真正使用队列中的资源。所以这里的资源利用率最低,表示当前队列中已经被调度执行的作业相对最少。第二步:选择队列上的作业。按照作业优先级和提交时间顺序选择,同时考虑用户资源使用量限制和其他相关约束。第三步:执行被选中的作业。执行过程请参考《聪明的Yarn(上集)》。在为待执行的作业分配资源的过程中,调度器会优先匹配本地资源,其次是同机架资源,最后是其他服务器的资源。好啦,以上就是《聪明的Yarn(下集)》全部内容,大家都学会了吗?如有疑问,欢迎给我留言哦。大家也可以在本订阅号“个人中心”一栏选择“叶子微信”,备注为”浅浅时光读者“,我准备建立一个读者群,为大家答疑解惑!
-
作者叶子是一位90后,天秤座,大数据&人工智能美女讲师。钟情创作,相信一切感受皆是生命的体验,坚持在朴素的文字中寻找生活的出路。是一位集才气于一身的大美女。 【技术分享】在《解秘MapReduce》系列文章中,我向大家介绍了MapReduce巧妙的运算过程。MapReduce作为一个面向海量数据分布式处理的计算模型、框架和平台,具备以下三个特点:1、易于编程:程序员仅需描述Map阶段和Reduce阶段要如何解析、处理数据,具体怎么读取数据并对处理结果进行排序、分区、组合、合并等等,都可以交由系统的执行框架处理。2、良好的扩展性:可通过添加节点以扩展集群运算能力。3、高容错性:在程序运行过程中,当某些节点发生故障时,通过计算迁移或数据迁移等策略在其他节点继续执行受影响的任务,提高集群的可用性与容错性。那么问题来了,MapReduce到底是如何提交任务到集群执行的呢?集群资源如何获取?任务如何分配?由谁监控执行?这一连串的问题我们将在这篇文章中为大家解决。上图展示的便是MapReduce v1(即Hadoop1.0)的任务运行原理。其中MapReduce Program是编辑好的应用程序,由客户端进程JobClient提交给集群中的老大JobTracker。JobTracker负责集群资源管理和任务调度,它会解析应用程序,然后调动各个小弟TaskTracker分工合作,为应用程序提供运行资源并分布式实施数据处理作业。在小弟干活的过程中,老大负责监控和故障处理。详细说明如下(参照上图):1、程序员编写好MapReduce Program作业,也就是JAVA程序,然后由客户端进行提交;2、客户端JobClient向JobTracker申请一个作业ID,加入集群任务列表中;3、客户端JobClient把作业源代码以及相关的依赖文件存储到HDFS的系统指定目录下;4、客户端JobClient正式向JobTracker提交作业;5、JobTracker初始化作业,比如计算资源需求等;6、JobTracker通过HDFS client向NameNode(管理文件系统元数据的角色,它知道每个文件的分布情况)询问程序需要处理的输入文件分布在哪些节点,并得到这些索引;7、JobTracker通过和TaskTracker每分钟一次的心跳联系来获知哪些节点可以运行任务(作业将拆分成许多任务给各个小弟执行,集群中每个数据节点都部署一个小弟角色),比如死机或者没有剩余资源的节点就不再执行新任务;8、JobTracker将任务分配给上一步中的TaskTracker,这些TaskTracker通过访问HDFS来获取任务代码;9、执行任务的TaskTracker在本节点上启动虚拟机(JVM)来执行任务;10、在各个JVM中执行任务,该过程受JobTracker监视。如果任务运行失败则由JobTracker通知相应的TaskTracker重启任务,直到全部Map任务和Reduce任务都运行完成。这个过程看似妥当,其实有个致命的问题:集群老大JobTracter工作量太大。老大平时需要管理众多小弟不说,当接收到任务执行申请时既要充当整个集群的资源调度者、任务分发者,又要负责各个任务的状态监控以及重启失败任务,工作相当繁忙。在MapReduce V1中JobTracter只部署在一个节点上,没有备用或者分担工作的进程,所以整个集群存在性能瓶颈和单点故障问题,扩展性也受到受限。另外,该机制不支持非MapReduce类型的任务提交集群运行,在大数据处理环境中,这也是极不友好的。正是在这样的背景下催生了Yarn——Hadoop2.0的资源管理系统。Yarn是一个通用的资源管理系统,可为上层应用(包括且不限于MapReduce)提供统一的资源管理和调度,它的出现解决了以上所有的问题。如上图所示,Yarn主要包括Resource Manager、Node Manager和Application Master(即App Mstr)三个部分。Resource Manager(简称RM)即集群老大,是一个全局的资源管理器,负责集群资源统一管理调度和应用程序管理。它包括两个组成部分:Resource Scheduler(资源调度器)和Applications Manager(应用程序管理器)。资源调度器Resource Scheduler(简称RS)负责将集群中的资源分配给各个应用程序。资源用一个抽象概念Container表示,它封装了节点上的多维度资源,如内存、CPU、磁盘、网络等(目前只实现内存、CPU);应用程序管理器Applications Manager(简称ASM)负责管理整个系统中的所有应用程序。主要负责接收来自Client的应用程序提交申请,与资源调度器Resource Scheduler协商资源情况,启动并监控AppMaster(下文有解释)运行,在AppMaster运行失败时重启它。Node Manager(简称NM)即集群小弟,每个数据节点都部署有该角色,用以管理本节点资源(CPU、内存)。一方面它会定期向老大汇报本节点的资源使用情况和各个Container的运行状态;另一方面,它接收并处理来自AppMaster的Container启动/停止等各种请求。Application Master(简称AppMaster、App Mstr、AM)依赖于各种计算框架的实现(例如MR AppMaster),负责一个Job生命周期内的所有管理工作,相当于老大麾下的项目负责人。Yarn具体工作流程如下(参照上图):步骤1:Yarn的客户端Client向RM中的ASM申请Job ID,RM审核该申请的合法性,审核通过后创建一个Job ID返回给客户端;Client把作业源代码以及相关的依赖文件存储到HDFS的系统指定目录下;Client正式向ASM提交作业, 其中包括AM程序、启动AM的命令以及用户程序等。步骤2:ASM接收客户端的作业请求后为该作业分配第一个Container。并由对应的Node Manager在这个Container中启动AM程序,用来管理当前的Job。步骤3:AM启动后向ASM注册,ASM接收AM注册信息,并将集群资源信息、作业源代码的位置信息等反馈给AM。步骤4:AM从HDFS获取作业程序和相关的依赖文件,了解任务详细情况,确定执行作业需要多少资源,并向RS发出资源申请(该步骤可能无法一次性完成整个作业的资源申请,允许多次申请)。RM根据集群资源情况为AM分配资源,并将资源位置和数量信息发给AM。步骤5:AM申请到资源后,便与对应的Node Manager通信,要求它拿出Container来启动JVM。步骤6:Node Manager为任务设置好运行环境(包括环境变量、JAR 包、二进制程序等),将进程启动命令写到一个脚本中,并通过运行该脚本启动JVM。步骤7:各个JVM启动后首先向AM注册,AM为其分配任务。JVM访问HDFS获取具体任务程序并执行;任务运行过程中,AM可以通过NM询问各个任务的运行状态和进度,从而可以在任务运行失败时对其进行重启;客户端Client可随时向AM查询作业的运行状态和进度。步骤8:当前Job中的全部任务运行完成后,相应的Container也被回收或应用到其他计算任务中。AM向ASM汇报作业执行结束,ASM注销AM,整个作业执行完成。在以上的资源调度和任务分配过程中可以看出Yarn的工作机制相比MapReduce V1聪明了很多:1、老大在管理各个Job方面的压力全部下放给了各个AppMaster,完美地解决了单点性能瓶颈问题。2、在Yarn中,Resource Manager支持主备模式部署。也就是可以在集群中的两个节点上都部署该角色,同一时刻只有一个在工作,当正在工作的RM故障时,立马由另一个来接替工作,完美地解决了单点故障问题。3、Yarn除了可以支持MapReduce的作业,还可以支持其他计算框架,如Spark、Storm等。如此一来,可以说是相当nice了!好啦,今天的分享到这里先告一段落,大家都学会了吗?如有疑问,欢迎给我留言哦。大家也可以在本订阅号“个人中心”一栏选择“叶子微信”,备注为”浅浅时光读者“,我准备建立一个读者群,为大家答疑解惑!在《聪明的Yarn(下集)》中我会为大家揭晓 集群中多作业并发时Yarn如何公平妥善分配资源 的秘密~敬请期待!
-
本文将简单介绍什么是MapReduce和Yarn。 MapReduce 基本定义 MapReduce是面向大数据并行处理的计算模型、框架和平台。它包含以下三层含义: 1. MapReduce是一个基于集群的高性能并行计算平台(Cluster Infrastructure)。 2. MapReduce是一个并行计算与运行软件框架(Software Framework)。 3. MapReduce是一个并行程序设计模型与方法(Programming Model & Methodology)。 MapReduce 应用场景 MapReduce基于Google发布的分布式计算框架MapReduce论文设计开发,用于大规模数据集(大于1TB)的并行运算,特点如下: 1. 易于编程:程序员仅需描述做什么,具体怎么做交由系统的执行框架处理。 2. 良好的扩展性:可通过添加节点以扩展集群能力。 3. 高容错性:通过计算迁移或数据迁移等策略提高集群的可用性与容错性。 Yarn 基本定义 由于MRv1版本存在几个方面的缺陷,如不支持扩展、单点故障导致无法提供服务、多计算框架无法数据共享和资源利用率低等原因,需要一个资源管理系统,于是产生Yarn。 Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,还可以支持其他框架,比如Spark、Storm等。它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。 16235
上滑加载中
推荐直播
-
全面解析华为云EI-API服务:理论基础与实践应用指南
2024/11/29 周五 18:20-20:20
Alex 华为云学堂技术讲师
本期直播给大家带来的是理论与实践结合的华为云EI-API的服务介绍。从“主要功能,应用场景,实践案例,调用流程”四个维度来深入解析“语音交互API,文字识别API,自然语言处理API,图像识别API及图像搜索API”五大场景下API服务,同时结合实验,来加深开发者对API服务理解。
去报名 -
企业员工、应届毕业生、在读研究生共探项目实践
2024/12/02 周一 19:00-21:00
姚圣伟 在职软件工程师 昇腾社区优秀开发者 华为云云享专家 HCDG天津地区发起人
大神带你一键了解和掌握LeakyReLU自定义算子在ONNX网络中应用和优化技巧,在线分享如何入门,以及在工作中如何结合实际项目进行学习
即将直播 -
昇腾云服务ModelArts深度解析:理论基础与实践应用指南
2024/12/03 周二 14:30-16:30
Alex 华为云学堂技术讲师
如何快速创建和部署模型,管理全周期AI工作流呢?本期直播聚焦华为昇腾云服务ModelArts一站式AI开发平台功能介绍,同时结合基于ModelArts 的实践性实验,帮助开发者从理论到实验更好地理解和使用ModelArts。
去报名
热门标签