Yarn(二) 详解
一. Yarn架构
1.1 简介
1.1.1 架构
YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等几个组件构成。
YARN总体上仍然是Master/Slave结构,在整个资源管理框架中,ResourceManager为Master,NodeManager为Slave,ResourceManager负责对各个NodeManager上的资源进行统一管理和调度。当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManger启动可以占用一定资源的任务。由于不同的ApplicationMaster被分布到不同的节点上,因此它们之间不会相互影响。
1.1.2 Job提交流程
- 用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。
- ResourceManager为该应用程序分配第一个Container,并与对应的Node-Manager通信,要求它在这个Container中启动应用程序的ApplicationMaster。
- ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~7。
- ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源。
- 一旦ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务。
- NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。
- 各个任务通过RPC协议向ApplicationMaster汇报自己的状态和进度,以便让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC向ApplicationMaster查询应用程序的当前运行状态。
- 应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭自己。
1.2 组件介绍
1.2.1 ResourceManager(RM)
RM 是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Manager)。
调度器(Scheduler)
调度器根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序。
需要注意的是,该调度器是一个“纯调度器”,它不再从事任何与具体应用程序相关的工作,比如不负责监控或者跟踪应用的执行状态等,也不负责重新启动因应用执行失败或者硬件故障而产生的失败任务,这些均交由应用程序相关的ApplicationMaster完成。调度器仅根据各个应用程序的资源需求进行资源分配,而资源分配单位用一个抽象概念“资源容器”(Resource Container,简称Container)表示,Container是一个动态资源分配单位,它将内存、CPU、磁盘、网络等资源封装在一起,从而限定每个任务使用的资源量。此外,该调度器是一个可插拔的组件,用户可根据自己的需要设计新的调度器。
在Yarn中有三种调度器可以选择:FIFO Scheduler ,Capacity Scheduler,Fair Scheduler。
FIFO Scheduler
FIFO Scheduler把应用按提交的顺序排成一个队列,这是一个先进先出队列,在进行资源分配的时候,先给队列中最头上的应用进行分配资源,待最头上的应用需求满足后再给下一个分配,以此类推。
Capacity Scheduler
Capacity 调度器允许多个组织共享整个集群,每个组织可以获得集群的一部分计算能力。通过为每个组织分配专门的队列,然后再为每个队列分配一定的集群资源,这样整个集群就可以通过设置多个队列的方式给多个组织提供服务了。除此之外,队列内部又可以垂直划分,这样一个组织内部的多个成员就可以共享这个队列资源了,在一个队列内部,资源的调度是采用的是先进先出(FIFO)策略。
在正常的操作中,Capacity调度器不会强制释放Container,当一个队列资源不够用时,这个队列只能获得其它队列释放后的Container资源。当然,我们可以为队列设置一个最大资源使用量,以免这个队列过多的占用空闲资源,导致其它队列无法使用这些空闲资源,这就是”弹性队列”需要权衡的地方。
配置方法:
Capacity调度器的配置文件,文件名为capacity-scheduler.xml
# 例如以下队列 root ├── prod 40% └── dev 60% ~ 75%├── eng 50%└── science 50%
上面队列配置如下:
<?xml version="1.0"?> <configuration><!-- 定义了两个子队列prod和dev --><property><name>yarn.scheduler.capacity.root.queues</name><value>prod, dev</value></property><!-- dev队列又被分成了eng和science --><property><name>yarn.scheduler.capacity.root.dev.queues</name><value>eng, science</value></property><!-- 队列prod占40%的容量 --><property><name>yarn.scheduler.capacity.root.prod.capacity</name><value>40</value></property><!-- 队列dev占60%的容量 --><property><name>yarn.scheduler.capacity.root.dev.capacity</name><value>60</value></property><!-- 限制dev的最大资源伸缩比重为75%,所以即使prod队列完全空闲dev也不会占用全部集群资源 --><property><name>yarn.scheduler.capacity.root.dev.maximum-capacity</name><value>75</value></property><!-- 队列eng占50%的容量,由于没有设置最大值,所以可能占用整个父队列的资源 --><property><name>yarn.scheduler.capacity.root.dev.eng.capacity</name><value>50</value></property><!-- 队列science占50%的容量,由于没有设置最大值,所以可能占用整个父队列的资源 --><property><name>yarn.scheduler.capacity.root.dev.science.capacity</name><value>50</value></property> </configuration>
Capacity容器除了可以配置队列及其容量外,我们还可以配置一个用户或应用可以分配的最大资源数量、可以同时运行多少应用、队列的ACL认证等。
在MapReduce中,我们可以通过mapreduce.job.queuename属性指定要用的队列。如果队列不存在,我们在提交任务时就会收到错误。如果我们没有定义任何队列,所有的应用将会放在一个default队列中。
注意:对于Capacity调度器,我们的队列名必须是队列树中的最后一部分,如果我们使用队列树则不会被识别。即不能写成dev.eng,应该写为eng。
Fair Scheduler
Fair调度器的设计目标是为所有的应用分配公平的资源(对公平的定义可以通过参数来设置)。举个例子,假设有两个用户A和B,他们分别拥有一个队列。当A启动一个job而B没有任务时,A会获得全部集群资源;当B启动一个job后,A的job会继续运行,不过一会儿之后两个任务会各自获得一半的集群资源。如果此时B再启动第二个job并且其它job还在运行,则它将会和B的第一个job共享B这个队列的资源,也就是B的两个job会用于四分之一的集群资源,而A的job仍然用于集群一半的资源,结果就是资源最终在两个用户之间平等的共享。
# 启用Fair调度器 # yarn-site.xml中配置 <property><name>yarn.resourcemanager.scheduler.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value> </property># 队列的配置 # 配置文件为fair-scheduler.xml # 可以通过下面配置修改配置文件路径(yarn-site.xml中)<property><name>yarn.scheduler.fair.allocation.file</name><value>xxxxx</value> </property># fair-scheduler.xml配置例 <?xml version="1.0"?> <allocations><!-- 默认调度策略,如果没有配置这项,默认fair --><defaultQueueSchedulingPolicy>fair</defaultQueueSchedulingPolicy><queue name="prod"><!-- 权重,如果没有配置默认为1 --><weight>40</weight><schedulingPolicy>fifo</schedulingPolicy></queue><queue name="dev"><weight>60</weight><queue name="eng"/><queue name="science"/></queue><!--queuePlacementPolicy元素定义规则列表,会逐个尝试直到匹配成功。第一个规则specified,则会把应用放到它指定的队列中,若这个应用没有指定队列或队列名不存在,则不匹配这个规则;primaryGroup规则会尝试把应用以用户所在的Unix组名命名的队列中,如果没有这个队列,不创建队列转而尝试下一个;当前面所有规则不满足时,则触发default规则,把应用放在dev.eng队列中--><queuePlacementPolicy><rule name="specified" create="false"/><rule name="primaryGroup" create="false"/><rule name="default" create="dev.eng"/></queuePlacementPolicy> </allocations>
抢占(Preemption)
当一个job提交到一个繁忙集群中的空队列时,job并不会马上执行,而是阻塞直到正在运行的job释放系统资源。为了使提交job的执行时间更具预测性(可以设置等待的超时时间),Fair调度器支持抢占。
yarn.scheduler.fair.preemption=true启动抢占,如果队列在minimum share preemption timeout指定的时间内未获得最小的资源保障,调度器就会抢占containers。顶级元素为所有队列配置这个超时时间;还可以在元素内配置元素来为某个队列指定超时时间。
与之类似,如果队列在fair share preemption timeout指定时间内未获得平等的资源的一半(这个比例可以配置),调度器则会进行抢占containers。这个超时时间可以通过顶级元素和元素级元素分别配置所有队列和某个队列的超时时间。上面提到的比例可以通过(配置所有队列)和(配置某个队列)进行配置,默认是0.5。
应用程序管理器(Applications Manager)
应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动它等。
1.2.2 NodeManager(NM)
NodeManager替代了Hadoop v1版本中的TaskTracker,每个节点都会有一个NM,主要功能有:
- 为应用程序启动容器,同时确保申请的容器使用的资源不会超过节点上的总资源。
- 为task构建容器环境,包括二进制可执行文件,jars等。
- 为所在的节点提供了一个管理本地存储资源的简单服务,应用程序可以继续使用本地存储资源即使他没有从RM那申请。比如:MapReduce可以使用该服务程序存储map task的中间输出结果。
一个NodeManager上面可以运行多个Container,Container之间的资源互相隔离,类似于虚拟机的多个系统一样,各自使用自己分配的资源。NodeManager会启动一个监控进行用来对运行在它上面的Container进行监控,当某个Container占用的资源超过约定的阈值后,NodeManager就会将其杀死。
1.2.3 ApplicationMaster(AM)
ApplicationMaster 负责管理应用程序的整个生命周期,每个应用程序都对应一个AM,主要功能有:
- 与RM的调度器通讯,协商管理资源分配(用Container表示)。
- 与NM合作,在合适的容器中运行对应的task,并监控这些task执行。
- 如果container出现故障,AM会重新向调度器申请资源。
- 计算应用程序所需的资源量,并转化成调度器可识别的协议。
- AM出现故障后,ASM会重启它,而由AM自己从之前保存的应用程序执行状态中恢复应用程序。
1.2.4 Container
Container可以说是一个对Application使用资源描述的集合(或容器),可以看做一个可序列化的java对象,封装了一些描述信息。
Container的一些基本概念和工作流程如下:
- Container是YARN中资源的抽象,它封装了某个节点上一定量的资源(CPU和内存两类资源)。它跟Linux Container没有任何关系,仅仅是YARN提出的一个概念(从实现上看,可看做一个可序列化/反序列化的Java类)。
- Container由ApplicationMaster向ResourceManager申请的,由ResouceManager中的资源调度器异步分配给ApplicationMaster;
- Container的运行是由ApplicationMaster向资源所在的NodeManager发起的,Container运行时需提供内部执行的任务命令(可以使用任何命令,比如java、Python、C++进程启动命令均可)以及该命令执行所需的环境变量和外部资源(比如词典文件、可执行文件、 jar包等)。
另外,一个应用程序所需的Container分为两大类,如下:
- 运行ApplicationMaster的Container:这是由ResourceManager(向内部的资源调度器)申请和启动的,用户提交应用程序时,可指定唯一的ApplicationMaster所需的资源;
- 运行各类任务的Container:这是由ApplicationMaster向ResourceManager申请的,并由ApplicationMaster与NodeManager通信以启动之。
以上两类Container可能在任意节点上,它们的位置通常而言是随机的,即ApplicationMaster可能与它管理的任务运行在一个节点上。
1.3 其他服务介绍
1.3.1 YARN Timeline Server
以一种通用的方式向YARN Timeline Server上注册应用程序的当前和历史状态,便于存储和检索。它主要有两大职责:
持久化应用程序的具体信息
收集并检索应用程序或者框架的具体信息。例如,hadoop MR框架里面的与分片线关系的信息,诸如map tasks、reduce tasks、counters等。应用程序开发者可以在App Master端或者应用程序需的containers中通过TimelineClient将这些信息发送给Timeline Server。
这些信息都可以通过REST APIs在具体App或者执行框架的UI界面查询到。
持久化已完成的应用程序的Generic information
在Application history server中,显然只支持MR框架的job。而在Timeline Server中,Application History只是其中的一个功能。
Generic information包括:
- queue-name
- 用户信息,还有设置在ApplicationSubmissionContext中的信息
- 运行应用程序的application-attempts列表
- 关于每个application-attempt的信息
- 运行在每个application-attempt下的container列表
- 每个container的信息
1.3.2 Shared Cache
1.3.2.1 介绍
Shared Cache机制的作用在于为Yarn上的应用(application)提供了一种安全可扩展的上传和管理的资源的方式。不同应用之间允许复用上传的资源文件,从而减少集群网络开销以及应用启动开销。
在SharedCache机制之前,hadoop在Yarn和Mapreduce的层面已有cache资源的机制:
Yarn层面:NodeManager上有localizationService维护一系列cache资源,在该NodeManager上启动的Container允许从cache中读取相关文件。对于cache资源的可见性包括,public(允许被所有用户的应用访问)、private(只允许被文件所有者的应用访问)、application specific(只允许被指定应用访问)。
Mapreduce层面:MR作业通过DistributedCache接口,上传cache资源到HDFS上,mr任务启动时会将cache文件分发到每个任务节点,在mr任务中可以通过DistributedCache接口从节点本地读取到cache文件。
SharedCache机制
是在现有机制的基础上实现的更通用的cache资源机制,主要特性有:
- 可扩展性: cache资源需要能扩展到所有节点上而不是集中到master节点
- 安全性: 需要对cache资源的访问权限进行控制
- 容错性: SharedCache服务可能会失败或者起停,但并不能影响服务正常运行
- 透明性: SharedCache服务只是服务端的优化,不应该影响现有MR作业或者其他Yarn的应用的代码。
1.3.2.2 设计原理
主要有两部分组成:SharedCacheManager(SCM),本地化服务
Shared Cache Manager
SCM是ShareCache服务的核心节点。他负责维护所有cache资源信息以及与客户端之间的通信。SCM本身是一个独立的进程,可以运行在任意节点上。管理员可以起停SCM服务,并且不会对现有服务产生影响。客户端与SCM的通信只需要通过两个接口
Path use(String checksum, String appId):客户端向SCM注册应用对某个cache资源的使用。其中checksum是cache资源生成的唯一标识。如果该cache资源已经存在则返回其路径,否则返回null。
boolean release(String checksum, String appId):客户端向SCM释放应用对某个cache资源的使用。成功则返回true,否则返回false。
客户端与SCM交互流程如下:
- 客户端计算cache资源的checksum
客户端向SCM调用use(checksum, appId)接口
- 如果资源已经存在,SCM返回其路径。客户端使用cache资源的路径,并做任务提交。随后进入步骤5
- 如果资源尚未存在,SCM返回null。继续步骤3。
上传cache文件到HDFS上的某个路径(路径由应用自身决定)。
- Cache资源本地化到各个节点。
- 提交应用并使用之前获取到的cache资源路径。
- 应用结束后,调用release(checksum, appId)接口注销应用对cache资源的使用。
SCM Store
SCM Store在SCM中负责维护cache资源的元数据信息。对于每个cache资源,元数据包括:HDFS文件路径、Checksum值、对该cache资源的引用列表(application列表,每个app包括其id和user名)、该cache资源最近访问时间。
目前情况下,SCM store中的信息只维护在内存中,后续会持久化到本地磁盘以及zookeeper上。
SCM Cleaner service
这个服务负责扫描并清理cache资源数据。这是个后台线程定期扫描,一段时间未被使用的cache资源,会被这个线程清理掉。
本地化服务
这里SharedCache本地化服务基于先前的NodeManager的本地化服务。一旦cache资源被本地化,NodeManager会将其添加到shared cache中。默认情况下,appMaster会提交这个资源。
本地化服务的流程
- 资源在NodeManager上进行本地化
- 如果该资源需要加入到sharedCache,执行3,否则退出
- 计算资源文件的checksum
- 上传资源文件到HDFS的某个目录,文件作为一个临时文件
- 临时文件重命名为一个特定文件。
- 通知SCM该资源文件已经加入到了SharedCache,如果SCM该文件先前已经被上传过(通过checksum),则删除该文件。
二. 配置详解
默认配置文件是yarn-default.xml,需要修改的话,在yarn-site.xml添加对应的属性。
本节的缩写:
RM: ResourceManager
AM: ApplicationMaster
NM: NodeManager
2.1 ResourceManager
选项 | 默认值 | 说明 |
---|---|---|
yarn.resourcemanager.address | ${yarn.resourcemanager.hostname}:8032 | RM 对客户端暴露的地址。客户端通过该地址向 RM 提交应用程序,杀死应用程序等。 |
yarn.resourcemanager.scheduler.address | ${yarn.resourcemanager.hostname}:8030 | RM 对 AM 暴露的访问地址。AM 通过该地址向RM申请资源、释放资源等。 |
yarn.resourcemanager.resource-tracker.address | ${yarn.resourcemanager.hostname}:8031 | RM 对 NM 暴露的地址。NM 通过该地址向 RM 汇报心跳,领取任务等 |
yarn.resourcemanager.admin.address | ${yarn.resourcemanager.hostname}:8033 | RM 对管理员暴露的访问地址。管理员通过该地址向 RM 发送管理命令等。 |
yarn.resourcemanager.webapp.address | 默认值:${yarn.resourcemanager.hostname}:8088 | RM 对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息。 |
yarn.resourcemanager.webapp.https.address | ${yarn.resourcemanager.hostname}:8090 | 同上的https地址 |
yarn.resourcemanager.scheduler.class | org.apache.hadoop.yarn.server.resourcemanager .scheduler.capacity.CapacityScheduler | 启用的资源调度器主类。目前可用的有FIFO、Capacity Scheduler和Fair Scheduler。 |
yarn.resourcemanager.resource-tracker.client.thread-count | 50 | 处理来自NodeManager的RPC请求的Handler数目。 |
yarn.resourcemanager.scheduler.client.thread-count | 50 | 处理来自ApplicationMaster的RPC请求的Handler数目。 |
yarn.scheduler.minimum-allocation-mb | 1024 | 单个容器可申请的最小内存资源量(MB) |
yarn.scheduler.maximum-allocation-mb | 8192 | 单个容器可申请的最大内存资源量(MB) |
yarn.scheduler.minimum-allocation-vcores | 1 | 单个容器可申请的最小虚拟CPU个数 |
yarn.scheduler.maximum-allocation-vcores | 32 | 单个容器可申请的最大虚拟CPU个数 |
yarn.resourcemanager.nodes.include-path | (空) | NodeManager黑白名单。如果发现若干个NodeManager存在问题,比如故障率很高,任务运行失败率高,则可以将之加入黑名单中。注意,这两个配置参数可以动态生效。(调用一个refresh命令即可) |
yarn.resourcemanager.nodes.exclude-path | (空) | 见上 |
yarn.resourcemanager.nodemanagers.heartbeat-interval-ms | 1000(毫秒) | NodeManager心跳间隔 |
2.2 NodeManager
选项 | 默认值 | 说明 |
---|---|---|
yarn.nodemanager.resource.memory-mb | 8192 | NodeManager总的可用物理内存 |
yarn.nodemanager.vmem-pmem-ratio | 2.1 | 每使用1MB物理内存,最多可用的虚拟内存数 |
yarn.nodemanager.resource.cpu-vcores | 8 | NodeManager总的可用虚拟CPU个数 |
yarn.nodemanager.local-dirs | ${hadoop.tmp.dir}/nm-local-dir | 中间结果存放位置,注意,这个参数通常会配置多个目录,已分摊磁盘IO负载 |
yarn.nodemanager.log-dirs | ${yarn.log.dir}/userlogs | 日志存放地址(可配置多个目录) |
yarn.nodemanager.log.retain-seconds | 10800(3小时) | NodeManager上日志最多存放时间(不启用日志聚集功能时有效) |
yarn.nodemanager.aux-services | (空) | NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序 |
yarn.nodemanager.webapp.address | ${yarn.nodemanager.hostname}:8042 | |
yarn.nodemanager.localizer.address | ${yarn.nodemanager.hostname}:8040 |
2.3 ResourceManager HA
选项 | 默认值 | 说明 |
---|---|---|
yarn.resourcemanager.ha.enabled | false | 是否开启HA模式 |
yarn.resourcemanager.cluster-id | (空) | 集群的Id,elector使用该值确保RM不会作为其它集群的active。 |
yarn.resourcemanager.ha.id | (空) | 节点逻辑id |
yarn.resourcemanager.ha.rm-ids | (空) | RM逻辑id列表,用逗号分隔 |
yarn.resourcemanager.ha.automatic-failover.enabled | true | 是否启用自动故障转移。默认情况下,在启用HA时,启用自动故障转移。 |
yarn.resourcemanager.ha.automatic-failover.embedded | true | 启用内置的自动故障转移。默认情况下,在启用HA时,启用内置的自动故障转移 |
yarn.resourcemanager.hostname.xxx | (空) | 各节点hostname(xxx为逻辑id,需分别配置,见rm-ids) |
yarn.resourcemanager.recovery.enabled | false | 是否开启自动恢复 |
yarn.resourcemanager.zk-address | (空) | HA时,ZooKeeper节点列表 |
yarn.resourcemanager.store.class | org.apache.hadoop.yarn.server .resourcemanager.recovery.ZKRMStateStore | 配置RM状态信息存储方式,有MemStore和ZKStore |
yarn.resourcemanager.ha.automatic-failover.zk-base-path | /yarn-leader-election | ZooKeeper中的路径 |
yarn.client.failover-proxy-provider | org.apache.hadoop.yarn.client .ConfiguredRMFailoverProxyProvider | Clients, AMs和NMs使用该类故障转移到active RM |
yarn.client.failover-max-attempts | (yarn.resourcemanager .connect.max-wait.ms) | FailoverProxyProvider尝试故障转移的最大次数 |
yarn.client.failover-sleep-max-ms | (yarn.resourcemanager .connect.retry-interval.ms) | 故障转移间的最大休眠时间(单位:毫秒) |
yarn.client.failover-retries | 0 | 每个尝试连接到RM的重试次数。 |
yarn.client.failover-retries-on-socket-timeouts | 0 | 在socket超时时,每个尝试连接到RM的重试次数。 |
2.4 Timeline Server
选项 | 默认值 | 说明 |
---|---|---|
yarn.timeline-service.enabled | false | 是否启用timeline service |
yarn.resourcemanager.system-metrics-publisher.enabled | false | 控制YARN的系统指标是否发布到Timeline Server |
yarn.timeline-service.generic-application-history.enabled | false | 客户端是否能从timeline history-service检索generic application data。如果为false,则只能通过RM检索 |
yarn.timeline-service.hostname | 0.0.0.0 | timeline service的hostname |
yarn.timeline-service.address | ${yarn.timeline-service.hostname}:10200 | RPC地址 |
yarn.timeline-service.webapp.address | ${yarn.timeline-service.hostname}:8188 | web地址 |
yarn.timeline-service.webapp.https.address | ${yarn.timeline-service.hostname}:8190 | https web地址 |
yarn.timeline-service.leveldb-timeline-store.path | ${hadoop.tmp.dir}/yarn/timeline | leveldb timeline store存储路径 |
2.5 sharedcache
选项 | 默认值 | 说明 |
---|---|---|
yarn.sharedcache.enabled | false | 是否启动sharedcache |
yarn.sharedcache.root-dir | /sharedcache | sharedcache的根目录 |
yarn.sharedcache.admin.address | 0.0.0.0:8047 | 管理接口地址 |
yarn.sharedcache.webapp.address | 0.0.0.0:8788 | web ui地址 |
yarn.sharedcache.uploader.server.address | 0.0.0.0:8046 | NM接口地址 |
yarn.sharedcache.client-server.address | 0.0.0.0:8045 | 客户端接口地址 |
2.6 动态设置
可以使用如下命令在提交任务时动态设置:
hadoop jar <jarName> -D mapreduce.map.memory.mb=5120
或者
hadoop jar <jarName> -D mapreduce.reduce.memory.mb=5120
三. 应用示例
3.1 MapReduce On Yarn
vim mapred-site.xml<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>vim yarn-site.xml
<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value>
</property><property><name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
3.2 Spark On Yarn
在YARN上启动Spark应用有两种模式。在cluster模式下,Spark驱动器(driver)在YARN Application Master中运行(运行于集群中),因此客户端可以在Spark应用启动之后关闭退出。而client模式下,Spark驱动器在客户端进程中,这时的YARN Application Master只用于向YARN申请资源。
3.2.1 cluster运行
运行命令
$ ./bin/spark-submit --class path.to.your.Class --master yarn --deploy-mode cluster [options] <app jar> [app options]# 示例
$ ./bin/spark-submit --class org.apache.spark.examples.SparkPi \--master yarn \
--deploy-mode cluster \
--driver-memory 4g \
--executor-memory 2g \
--executor-cores 1 \
--queue thequeue \
--jars my-other-jar.jar,my-other-other-jar.jar \
lib/spark-examples*.jar \app_arg1 app_arg2
执行步骤
3.2.2 client运行
执行命令
$ ./bin/spark-shell --master yarn --deploy-mode client
四. 优化
基于两方面优化:调度器和内存配置。
调度器
根据业务需要选择fair或capacity调度器。同时根据节点物理资源(性能)的高低,可以打标签,例如高配置节点、低配置节点和一般节点。
内存优化
依照以下属性计算推荐的配置
- RAM(Amount of memory)总内存数
- CORES(Number of CPU cores)CPU内核数
- DISKS(Number of disks)硬盘数
每个节点的总内存 | 系统内存 | HBase内存 |
---|---|---|
4G | 1G | 1G |
8G | 2G | 1G |
16G | 2G | 2G |
24G | 4G | 4G |
48G | 6G | 8G |
64G | 8G | 8G |
72G | 8G | 8G |
96G | 12G | 16G |
128G | 24G | 24G |
256G | 32G | 32G |
512G | 64G | 64G |
Container的最大数计算方式:
min (2*CORES, 1.8*DISKS, (Total available RAM) / MIN_CONTAINER_SIZE)
其中MIN_CONTAINER_SIZE是容器的最小内存,可以根据下表获得
每个节点的总内存 | 容器最小内存的推荐值 |
---|---|
小于4G | 256M |
4~8G | 512M |
8~24G | 1024M |
大于24G | 2048M |
最终容器的内存由下式计算获得:
RAM-per-Container = max (MIN_CONTAINER_SIZE, (Total Available RAM) / Containers))
最后YARN和MR的配置为:
配置文件 | 属性 | 值 |
---|---|---|
yarn-site.xml | yarn.nodemanager.resource.memory-mb | Containers * RAM-per-Container |
yarn-site.xml | yarn.scheduler.minimum-allocation-mb | RAM-per-Container |
yarn-site.xml | yarn.scheduler.maximum-allocation-mb | containers * RAM-per-Container |
mapred-site.xml | mapreduce.map.memory.mb | RAM-per-Container |
mapred-site.xml | mapreduce.reduce.memory.mb | 2 * RAM-per-Container |
mapred-site.xml | mapreduce.map.java.opts | 0.8 * RAM-per-Container |
mapred-site.xml | mapreduce.reduce.java.opts | 0.8 * 2 * RAM-per-Container |
yarn-site.xml (check) | yarn.app.mapreduce.am.resource.mb | 2 * RAM-per-Container |
yarn-site.xml (check) | yarn.app.mapreduce.am.command-opts | 0.8 * 2 * RAM-per-Container |
例如:
集群节点是12核CPU、48G和12块硬盘
保留内存 = 6 GB 系统使用 + (如果有HBase) 8 GB HBase使用
容器最小内存 = 2 GB
无HBase
容器数 = min (2 * 12, 1.8 * 12, (48-6)/2) = min (24, 21.6, 21) = 21
每个容器的内存 = max (2, (48-6)/21) = max (2, 2) = 2
属性 | 值 |
---|---|
yarn.nodemanager.resource.memory-mb | = 21 * 2 = 42 * 1024 MB |
yarn.scheduler.minimum-allocation-mb | = 2 * 1024 MB |
yarn.scheduler.maximum-allocation-mb | = 21 * 2 = 42 * 1024 MB |
mapreduce.map.memory.mb | = 2 * 1024 MB |
mapreduce.reduce.memory.mb | = 2 * 2 = 4 * 1024 MB |
mapreduce.map.java.opts | = 0.8 * 2 = 1.6 * 1024 MB |
mapreduce.reduce.java.opts | = 0.8 * 2 * 2 = 3.2 * 1024 MB |
yarn.app.mapreduce.am.resource.mb | = 2 * 2 = 4 * 1024 MB |
yarn.app.mapreduce.am.command-opts | = 0.8 * 2 * 2 = 3.2 * 1024 MB |
有HBase
容器数 = min (2 * 12, 1.8 * 12, (48-6-8)/2) = min (24, 21.6, 17) = 17
每个容器的内存 = max (2, (48-6-8)/17) = max (2, 2) = 2
属性 | 值 |
---|---|
yarn.nodemanager.resource.memory-mb | = 17 * 2 = 34 * 1024 MB |
yarn.scheduler.minimum-allocation-mb | = 2 * 1024 MB |
yarn.scheduler.maximum-allocation-mb | = 17 * 2 = 34 * 1024 MB |
mapreduce.map.memory.mb | = 2 * 1024 MB |
mapreduce.reduce.memory.mb | = 2 * 2 = 4 * 1024 MB |
mapreduce.map.java.opts | = 0.8 * 2 = 1.6 * 1024 MB |
mapreduce.reduce.java.opts | = 0.8 * 2 * 2 = 3.2 * 1024 MB |
yarn.app.mapreduce.am.resource.mb | = 2 * 2 = 4 * 1024 MB |
yarn.app.mapreduce.am.command-opts | = 0.8 * 2 * 2 = 3.2 * 1024 MB |
五. Memsos
5.1 简介
Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核。Mesos最初是由加州大学伯克利分校的AMPLab开发的,后在Twitter得到广泛使用。
5.1.1 架构
Mesos实现了两级调度架构,它可以管理多种类型的应用程序。第一级调度是Master的守护进程,管理Mesos集群中所有节点上运行的Slave守护进程。集群由物理服务器或虚拟服务器组成,用于运行应用程序的任务,比如Hadoop和MPI作业。第二级调度由被称作Framework的“组件”组成。Framework包括调度器(Scheduler)和执行器(Executor)进程,其中每个节点上都会运行执行器。Mesos能和不同类型的Framework通信,每种Framework由相应的应用集群管理。上图中只展示了Hadoop和MPI两种类型,其它类型的应用程序也有相应的Framework。
主要组件以及概念:
- Zookeeper 主要用来实现Master的选举,支持Master的高可用。
- Master Mesos的主节点,接收Slave和Framework scheduler的注册,分配资源。
- Slave 从节点,接收master发来的task,调度executor去执行。
- Framework 比如上图中的Hadoop,MPI就是Framework,包括scheduler,executor两部分。scheduler独立运行,启动后注册到master,接收master发送的Resource Offer消息,来决定是否接受。Executor是给slave调用的,执行framework的task。Mesos内置了CommandExecutor(直接调用shell)和DockerExecutor两种executor,其他的自定义Executor需要提供uri,供slave下载。
- Task Mesos最主要的工作其实就是分配资源,然后询问scheduler是否可以利用该资源执行Task,scheduler将资源和Task绑定后交由Master发送给指定的Slave执行。Task可以是长生命周期的,也可以使用批量的短生命周期的。
5.1.2 Mesos流程
- Slave1 向 Master 报告,有4个CPU和4 GB内存可用
- Master 发送一个 Resource Offer 给 Framework1 来描述 Slave1 有多少可用资源
- FrameWork1 中的 FW Scheduler会答复 Master,我有两个 Task 需要运行在 Slave1,一个 Task 需要<2个CPU,1 GB内存=””>,另外一个Task需要<1个CPU,2 GB内存=””>
- 最后,Master 发送这些 Tasks 给 Slave1。然后,Slave1还有1个CPU和1 GB内存没有使用,所以分配模块可以把这些资源提供给 Framework2
5.2 Yarn与Memsos对比
最大的不同点在于他们所采用的scheduler:mesos让framework决定mesos提供的这个资源是否适合该job,从而接受或者拒绝这个资源。而对于yarn来说,决定权在于yarn,是yarn本身(自行替应用程序作主)决定这个资源是否适合该job,对于各种各样的应用程序来说或许这就是个错误的决定(这就是现代人为什么拒绝父母之命媒妁之言而选择自由婚姻的缘故吧)。所以从scaling的角度来说,mesos更scalable。
其次,yarn是MapReduce进化的产物,yarn就是为hadoop jobs资源管理而生,yarn只为hadoop jobs提供了一个static partitioning。而mesos的设计目标是为各个框架(hadoop、spark、web services等)提供dynamical partitioning,让各个集群框架共用数据中心机器。
myriad项目将让yarn运行在mesos上面。
六. 参考
初步掌握Yarn的架构及原理
Hadoop YARN架构设计要点
Hadoop Yarn架构解析
Hadoop Yarn 框架原理及运作机制
Hadoop On Yarn Mapreduce运行原理与常用数据压缩格式
yarn-site.xml相关配置参数
Yarn 调度器Scheduler详解
Hadoop Yarn内存使用优化配置
Yarn资源分配性能调优
Hadoop YARN
YARN Timeline Server(hadoop2.7.1)——科普篇
Hadoop中的Shared Cache机制
Yarn、MR、HBase推荐内存配置
Mesos 架构以及源码浅析
深入浅出Mesos(二):Mesos的体系结构和工作流
Mesos高可用解决方案剖析
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- CSS美化超链接样式
美化超链接样式 一、使用动态伪类 注意!!!超链接的四种状态样式的排列是固定的,一般不能随意调换 正确的顺序时Link,visited,hover,active 当鼠标经过超链接是,会先执行第一行声明, 但是紧接着第三行声明会覆盖掉第一行和第二行声明的样式, 所以无法看到鼠标经过和被激…...
2024/5/10 13:27:48 - 共同父域下的单点登录
本文来自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/20466351,转载请注明。单点登录(Single Sign On),简称为SSO,SSO不仅在企业级开发很常用,在互联网中更是大行其道。随便举几个例子,比如我们登录新浪微博后,再访问新浪首页后,我们发现,已经…...
2024/5/10 4:50:54 - 多线程下载的基本原理和用法
刚学了下多线程的下载,可能是初次接触的原因吧,理解起来觉得稍微有点难。所以想写一篇博客来记录下,加深自己理解的同时,也希望能够帮到一些刚接触的小伙伴。由于涉及到网络的传输,那么就会涉及到http协议。建议在读本文之前您对http协议有一定的了解。线程可以通俗的理解…...
2024/5/10 12:32:07 - Hexo搭建的一些工具(持续更新)
直接上连接对面大佬上面咕了戳这个CSS改字体Hexo博客美化打造个性超赞博客Hexo+NexT+GitHubPages的超深度优化转载于:https://www.cnblogs.com/LZYcaiji/p/10397880.html...
2024/5/10 10:55:56 - Peabody Games Developer Information
Contact Us:Phone: +86 755 83129080Email: peabodygames@yahoo.comAddr: 6-12F, Mei Lin San Cun, Fu Tian District...
2024/5/10 4:36:43 - 分享一些资料(侧重Linux)
原谅地址:http://www.cnblogs.com/diguage/archive/2013/04/06/3001939.html分享一些资料(侧重Linux)以前没有攒资料的习惯,这一两年才养成了这个习惯。有次和大学老师聊天,和她说攒了不少资料,她就让我分享给她看。后来和她进一步沟通,觉得整理一下,分给学弟学妹看也许…...
2024/4/12 20:18:18 - NND!终于找到发布原先CSDN博客照片的办法了
之前,无论怎么在CSDN上发布照片,博客都看不见那些照片。现在,我终于解决这个问题咯,办法如下:一、正常登录CSDN后台管理,用你的账号哦!二、接着,有两种方法进入原先的BLOG照片栏目中,其一,此时打开一新页面并登录你在CSDN上的BLOG,进入相应的相册,然后点击右上角的…...
2024/4/12 20:17:58 - apache-mod_rewrite详解
来自:Linux文档Apache模块 mod_rewritemod_rewrite模块提供了一个基于规则的(使用正则表达式分析器的)实时转向URL请求的引擎。 支持每个规则可以拥有不限数量的规则以及附加条件规则的灵活而且强大的URL操作机制。 此URL操作可以取决于各种测试,比如服务器变量、环境变量…...
2024/4/12 20:18:08 - csdn个人中心
个人中心 关注 收藏 草稿说明:为了方便自己使用...
2024/4/12 20:18:23 - IOS App开发和发布过程中用到的证书
Certification(证书)证书是对电脑开发资格的认证,每个开发者帐号有一套,分为两种:1、Developer Certification(开发证书)安装在电脑上提供权限:开发人员通过设备进行真机测试。可以生成副本供多台电脑安装;2、Distribution Certification(发布证书)安装在电脑上提供发布iO…...
2024/5/10 9:55:15 - cordova安卓全面屏适配
解决方案: 在AndroidManifest.xml中添加一下内容: <meta-data android:name="android.max_aspect" android:value="2.1" /> 可以解决目前市面上绝大多数手机的全面屏适配问题。...
2024/4/19 12:44:24 - hexo+next7.x搭建博客,配置美化
我们主要对next主题进行了如下配置操作。效果可以前往 (https://www.ipyker.com) 查看。 也可以前往(https://github.com/ipyker/hexo-next-theme) 获取配置后的源文件。设置中文语言 设置博主文字描述 设置博客文章连接为year/month/day/title.html格式 Menu增加关于、标签、分…...
2024/4/19 22:57:48 - 回家看看,CSDN有哪些改变?有多少人收到了欢迎回家的邮件?
最近一直都在忙着完善自己的个人网站,好久没有在CSDN写博客了。说是回家看看,其实从来没有离开过。一直看着CSDN近期,19年来快速的改变,很多功能上线。改变的过程通常是辛苦的,痛苦的,因为总是有些坑在前方等着你。查看ID的链接是为APP设计的包括通知、私信也都转到APP上…...
2024/5/9 2:21:15 - LINUX嵌入式开发书籍推荐(附WINCE部分)
LINUX嵌入式开发书籍推荐(附WINCE部分)LINUX嵌入式开发书籍推荐(附WINCE部分) 一,编程语言部分1,C语言《C语言大全(第四版)》 市场价 :¥48.00 【原 书 名】 The Complete Referene,Fourth Edition 【原出版社】 McGraw-Hill 【作 者】(美)Herbert Schildt【译 者】 王…...
2024/4/19 0:05:17 - Windows 2003 Server 序列号
Windows 2003 Server 序列号大全 Microsoft.Win2003.Standard.CHS.VOL SN:JCGCH-K6BYM-WVXP6-HDWWW-H2V3Y JCDP9-7RTKQ-FYD4J-XX3MV-FR8YB JCDX8-7FMJY-WTQPM-XH33W-R6H3Y JCH2K-3H66Q-7YGQQ-7PCB2-T3GBB JCFYB-RCQJW-36BXX-6DYBB-J72MB JCHWW-8HM9R-HQ49J-4GBKG-C…...
2024/4/20 4:27:02 - Android Camera2 预览功能实现
1. 概述最近在做一些关于人脸识别的项目,需要用到 Android 相机的预览功能。网上查阅相关资料后,发现 Android 5.0 及以后的版本中,原有的 Camera API 已经被 Camera2 API 所取代。全新的 Camera2 在 Camera 的基础上进行了改造,大幅提升了 Android 系统的拍照功能。它通过…...
2024/4/12 20:18:18 - 使用Application Uploader工具在windows、linux下上传iOS App
我们知道发布一个app,一般是用到苹果的application loader助手上传应用,用过的都知道使用起来很繁琐,经常出错。而且只能运行在mac系统上,需要一定的硬件条件。而上架辅助工具Application Uploader,可以实现在windows,linux或mac上,不需要应用程序加载器和mac计算机,就…...
2024/5/3 9:49:17 - Python爬虫练习:爬取csdn极客的更新文章
写在前面:这两周花了点时间读了《Python网络数据采集》,内容不多,不到200页,但是非常丰富,有入门,有提高,有注意事项,有经验之谈,有原理,有分析,读完受益匪浅。书中讲了很多反爬虫、图片验证码之类的东西,不过感谢csdn的开放性,这些都没有。所以第一个练习,就是爬…...
2024/4/13 6:06:48 - 使用avalon 实现一个序列号功能
avalon“操作数据即操作DOM”的能力,让我们可以专致于业务,写出更专业,更优雅,更易维护的代码来。现在让我们看看如何实现一个序列号输入功能。它的需求以下: 每输入4个字符就跳到下一个输入框。不能输入超过4个字符。支持复制贴粘功能,每4个字符自动对位到相应的输入框。…...
2024/4/12 20:18:28 - 博客园样式美化:给博客添加一个音乐播放器
效果展示代码博客园管理 -> 设置 -> 页脚HTML代码把下面的代码粘贴上就ok了!1 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer@1.10.0/dist/APlayer.min.css"> 2 <script src="https://blog-static.cnblogs.com…...
2024/4/12 20:18:18
最新文章
- “设置display:block-inline的li或div中添加文字后,导致li或div排版掉落、错位”的原因及解决方法
先说我想实现的效果 然后我就很快的列出来了css .f_wornning{background: url("/assets/images/icon_kaung.png")no-repeat 100% 100%;background-size: 100% 100%;margin: 10px 20px;height: 3rem;line-height: 3rem;color: #d8eebd;.f_wornning_icon{height: 2rem;…...
2024/5/10 15:36:33 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/9 21:23:04 - ssm框架中各层级介绍
1、Spring(业务逻辑层): Spring框架提供了依赖注入(DI)和面向切面编程(AOP)等功能,可以帮助管理Java应用程序中的对象依赖关系和提供横切关注点的支持。 在SSM框架中,S…...
2024/5/10 0:21:53 - 策略模式图
策略模式 小小的图解 主要的三个角色 Strategy—抽象策略角色ConcreateStrategy—具体策略角色Context—上下文角色 封装了对具体策略的调用可以使用set的依赖注入也可以使用构造方法 核心是上下文角色 只要调用上下文角色就行,实现解耦 策略 工厂 将上下文角…...
2024/5/8 7:01:36 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/10 12:36:12 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/9 15:10:32 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/9 4:20:59 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/7 11:36:39 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/8 20:48:49 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/7 9:26:26 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/8 19:33:07 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/8 20:38:49 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/10 10:22:18 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/9 17:11:10 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57