导航:首页 > 源码编译 > yarn配置优化编译时间

yarn配置优化编译时间

发布时间:2022-09-25 07:17:37

Ⅰ yarn.scheler.maximum-allocation-mb是每个节点都要配置吗

这个看你的yarn怎么设置了,容器数据与cpu核数和内存大小都有关系,比如说下面这个配置:
yarn.nodemanager.resource.cpu-vcores
16
yarn.scheler.minimum-allocation-vcores
1
yarn.nodemanager.resource.memory-mb
30000
yarn.scheler.minimum-allocation-mb
1024
每台机器为集群分配的cpu为16核,物理内存为30G左右,每个容器最小使用1核cpu和1G的物理内存,则每台机器最多可以为集群提供16个容器。(每个节点都满足上述的cpu和内存大小)。

Ⅱ Spark on YARN怎么配置的

Spark On Yarn配置很简单,不需要单独部署Spark集群,只需要开发Spark应用程序,打成jar包,然后使用spark-submit命令提交到Yarn上运行即可。示例:

./spark-submit--classcom.lxw1234.test.WordCount--masteryarn-cluster--executor-memory4G--num-executors10/home/lxw1234/spark-wordcount.jar/logs/2015-07-14//tmp/lxw1234/output/

你可以搜索一下"lxw的大数据田地",里面有很多Spark On Yarn的技术文章。

Ⅲ Spark on YARN怎么配置的

安装好hadoop后,自带yarn
然后将hadoop中的hdfs-site.xml,yarn-site.xml,core-site.xml配置文件拷贝一份到spark的conf目录中;
运行spark程序时,在spark-submit中指定--master yarn-client就可以了
具体可以看看spark-submit的指令说明

Ⅳ Hadoop的资源管理系统 —— Yarn

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

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




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

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

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




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

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

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


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

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




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

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

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


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

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

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



  官方文档: https://hadoop.apache.org/docs/r2.7.3/hadoop-yarn/hadoop-yarn-site/CapacityScheler.html 。

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

   "弹性队列" :如果队列 queue 资源不够用了,而其他队列可能是有空闲可用的资源,那么容量调度器可能会将空余的资源分配给队列 queue 中的队列,这种特性称为 "弹性队列"。可以通过 yarn.scheler.capacity.<queue-path>.maximum-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 配置文件目录下的 capacity-scheler.xml 中,启动 Yarn,上控制台( http://192.168.190.111:8088/cluster/scheler )可以看到配置的队列容量限制。

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

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

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

  默认的容量调度器配置



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

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

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


  官方文档: https://hadoop.apache.org/docs/r2.7.3/hadoop-yarn/hadoop-yarn-site/FairScheler.html 。

  启用公平调度器,在 yarn-site.xml 中添加以下配置:

  创建公平调度配置文件 fair-scheler.xml,内容如下:

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


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

Ⅳ Linux里面YARN作用是什么

yarn是一个进行nodejs包管理的工具,可以方便管理nodejs依赖包,功能类似npm,但是包依赖管理上更方便。

Ⅵ Spark应用 | Hive On Spark性能调优

我们公司yarn node节点的可用资源配置为:单台node节点可用资源数:核数33cores、内存110G。Hive on Spark任务的基础配置,主要配置对象包括:Executor和Driver内存,Executor配额,任务并行度。

配置参数为spark.executor.memory和spark.executor.cores。如果要最大化使用core,建议将core设置为4、5、6,且满足core的个数尽量可以整除yarn资源核数。yarn资源可用33核,建议spark.executor.cores设置为4,最多剩下一个core,如果设置为5,6都会有3个core剩余。 spark.executor.cores=4,由于总共有33个核,那么最大可以申请的executor数是8。总内存处以8,也即是 110/8,可以得到每个executor约13.75GB内存。

建议 spark.executor.memoryOverhead(spark的executor堆外内存)站总内存的 15%-20%。 那么最终 spark.executor.memoryOverhead=2.75 G 和spark.executor.memory=11 G
注意:默认情况下 spark.executor.memoryOverhead = max(executorMemory * 0.10, 384M),正常情况下不需要手动设置spark堆外内存,如果spark任务出现如下报错,可以手动提高堆外内存大小。

注意:默认情况下 spark.executor.memoryOverhead = max(executorMemory * 0.10, 384M),正常情况下不需要手动设置spark堆外内存,如果spark任务出现如下报错,可以手动提高堆外内存大小。

Container killed by YARN for exceeding memory limits. 16.9 GB of 16 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.

对于drvier的内存配置,主要有两个参数:

Driver的内存通常来说不设置,或者设置1G左右应该就够了。需要注意的是,如果需要使用collect算子将RDD的数据全部拉取到Driver端进行处理,那么必须确保Driver的内存足够大,否则会出现OOM内存溢出的问题。

配置参数为spark.executor.instances。该参数用于设置Spark作业总共要用多少个Executor进程来执行。

executor的数目是由每个节点运行的executor数目和集群的节点数共同决定。我们离线集群27个节点,那么离线spark任务使用的最大executor数就是 216(27*8). 最大数目可能比这个小点,因为driver也会消耗核数和内存。

该参数可以结合spark.executor.cores设置,默认单个spark任务最大不超过60cores,spark.executor.cores设置为4,则spark.executor.instances不超过15。

设置spark任务的并行度参数为spark.default.parallelism。spark任务每个stage的task个数=max(spark.default.parallelism, HDFS的block数量)。如果不设置该参数,Spark自己根据底层HDFS的block数量来设置task的数量,默认是一个HDFS block对应一个task。spark默认spark.default.parallelism配置较少,如果task个数比较少的话,前面spark资源配置没有意义。官网建议:该参数设置为 num-executors * executor-cores的2~3倍较为合适。

当一个运行时间比较长的spark任务,如果分配给他多个Executor,可是却没有task分配给它,而此时有其他的yarn任务资源紧张,这就造成了很大的资源浪费和资源不合理的调度。动态资源调度就是为了解决这种场景,根据当前应用任务的负载情况,实时的增减Executor个数,从而实现动态分配资源,使整个Spark系统更加健康。

开启spark动态资源分配后,application会在task因没有足够资源被挂起的时候去动态申请资源。当任务挂起或等待spark.dynamicAllocation.schelerBacklogTimeout(默认1s)的时间后,会开始动态资源分配;之后每隔spark.dynamicAllocation.(默认1s)时间申请一次,直到申请到足够的资源。每次申请的资源量是指数增长的,即1,2,4,8等。

当application的executor空闲时间超过spark.dynamicAllocation.executorIdleTimeout(默认60s)后,就会被回收。

使用场景:同一个SQL语句需要同时更新多个分区,类似于如下SQL语句:

Ⅶ 如何优化 yarn 在 windows 下的进度条显示

Windows优化大师优化系统不好,应该自己优化,方法,.修改注册表来减少预读取,减少进度条等待时间
Windows XP在启动过程中会出现一个进度条,我们可以通过修改注册表,让进度条只跑一圈就进入登录画面。
选择“开始”菜单中的“运行”命令,在“运行”对话框键入“regedit”命令后回车,即可启动注册表编辑器,在注册表中找HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Manager\Memory Management\PrefetchParameters,选择其下的EnablePrefetcher键,把它
2.减少开机磁盘扫描等待时间
选择“开始→运行”,在运行对话框中键入“chkntfs /t:0”,即可将磁盘扫描等待时间设置为0;如果要在计算机启动时忽略扫描某个分区,比如C盘,可以输入“chkntfs /x c:”命令;如果要恢复对C盘的扫描,可使用“chkntfs /d c:”命令,即可还原所有错误报告"按钮,在弹出的"错误汇报"对话框中,选择"禁用错误汇报"单选项,最后单击"确定"即可

阅读全文

与yarn配置优化编译时间相关的资料

热点内容
企业网搭建及应用pdf 浏览:742
symanteclinux 浏览:876
程序员朋友化妆改造 浏览:491
应用被加密但不知道密码 浏览:584
百度云黑马android 浏览:773
java格式化long 浏览:893
汽车如何加密文档 浏览:625
公司理财第9版pdf 浏览:524
微信个人表情在文件夹 浏览:833
加密狗密码监控 浏览:437
重载发生在编译时 浏览:417
怎么用app买东西 浏览:532
ug后处理多坐标宏命令 浏览:34
性教育pdf 浏览:863
解释方式编译方式名词解释 浏览:851
wrf编译出现module 浏览:616
插入算法最基础代码 浏览:27
powermill和ug编程 浏览:843
vf命令按钮 浏览:283
涂鸦王国app怎么 浏览:37