yarn的资源分配、spark的资源获取原理以及配置

42 篇文章 3 订阅
6 篇文章 1 订阅

一、yarn的资源分配策略

1. 总体:

  1. 因为不仅仅只有spark on yarn,hive、impala等也依赖yarn,所以spark提交资源参数如果设置的等于或者超过最大资源数,实际分配的资源会小于设置值

  2. yarn is a resource scheduling framework,它可以设置一次任务所能获取的最大和最小资源。资源包括节点、core、memory,yarn可以控制一个任务所能分配的这3样的上下限。可以设置资源池,队列,角色组,通过这些概念来管理资源的分配。

  3. spark程序运行时如果内存不足是会报错退出的,亲测,报的错包括控制台:java.io.IOException: Failed to send RPC xxx to /ipexecutor日志:ERROR util.Utils:Aborting task,Error writing row,Internal state when error was thrown:xxx。而MR不会因为资源不足而执行失败。
    在这里插入图片描述
    在这里插入图片描述

  4. spark程序的启动会有最低资源要求,如果连启动的资源都达不到,会一直提示资源等待。或者一直处于accepted状态
    在这里插入图片描述

  5. spark的资源获取,yarn的资源分配都不是严格按照设定的来。亲测。

  6. yarn中如果硬盘资源不足或者nm宕机,都会导致能分配的资源减少。
    example,因为硬盘资源不足,yarn进行资源分配计算时,会减少NM的数量,导致rmUI中可分配资源只有1个的量。坑!!!
    在这里插入图片描述

  7. on yarn下,driver和executor可以位于同1个节点。

{1} 查看yarn拥有、能分配的所有资源

yarn的最大资源数

{2} 查看任务可以使用的资源,任务真正获取的资源。 rm_ip:8088

可以在这个界面中打开spark和hive任务的UI,如果是cluster模式的spark程序,因为不确定哪个是driver所在,只能在这里打开。
在这里插入图片描述

2. executor的数量

由spark.cores.max/spark.executor.cores和e-n决定。如果前者大,取e-n;后者大,取前者。
亲测,如果e-c设置的过大,会导致executor数的减少。比如yarn一共只有24个core,e-c设置了8个,那最终executor一定不是3,即使en为3,因为还要把一些core分配给其他服务和备用。

ecample1:yarn一共24cores,e-c 8,en无论设置多少实际e只有1或2个,最终把ec改为5,才出现了3个e。
example2:yarn可用nm是2个,一个8核,总共16个核,如果e-c设成10,那只会有1个executor

{1} 查看executor的状态、数量,在sparkUI导航栏的executor选项卡中。

在这里插入图片描述

{2} e和节点的关系

executor的意义就是为了在节点上管理任务,包括资源分配和任务运行,1个节点上可以有多个executor,一般这样是为了只在一个节点上扩大内存,因为如果增大em,那所有节点上e的内存都增大了。此时如果多设置1个e,那么有1个节点上会有2个e,这样这个节点上就会有2份e的资源和任务执行能力。这样只增加了1份内存。

3. 内存的大小

yarn中可以给任务设置内存的上下限,也可以给yarn的角色组内的任务设置上下限
在这里插入图片描述

这里设置了之后还要在xx中设置,防止启动时报错

4. core的数量

在这里插入图片描述

三、spark的task和分区之间的关系

亲测,spark的task会根据数据量自动设置,会远超过默认数量,60G数据会达到560个task。
改变了下资源,发现task数没变化,可能在一定的资源范围内,task数只跟数据量有关。这可能是spark的一种优化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值