MapReduce与Spark On Yarn资源竞争时,为何Spark总能抢占更多资源?

本文探讨了在Yarn队列中,为何Spark任务相对于MapReduce任务能抢占更多资源。原因在于Spark的多线程模型允许Executor复用资源,而MapReduce的多进程模型导致频繁的资源申请和释放。文中还分析了两种模型在资源竞争时的启动条件,并提供了提升MR和Spark任务竞争力的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题简述:我们日常开发中,有时会在yarn队列中发现一个现象,spark任务跑得很舒服,而且占了很多资源,MR任务拿不到资源一直卡在那里,提交MR的同事就很气,抱怨spark抢占资源,实际真的是这样么?我们针对这个问题进行以下探究。常见现象如下,资源紧张时比较常见,看如图中的Spark任务持有的Container普遍多于MR任务持有的Container

有的小伙伴可能没有耐心,咱们先给下结论!!!(文章结尾还有提升竞争力优化思路)

不是的,并不是Spark抢占资源,而是MR和Spark模型决定的。

MapReduce 多进程模型

    MapReduce 应用程序是让每个Task 动态申请资源,且运行完后马上释放资源,这就会有一个问题,Task就一直重复着申请资源,释放资源。

特点:

  • 每个Task 运行在一个独立的JVM 进程中

  • 可单独为不同类型的Task 设置不同的资源量,目前支持内存和CPU 两种资源

  • 每个Task 运行完后,将释放所占用的资源,这些资源不能被其他Task 复用,即使是同一个作业相同类型的Task。也就是说,每个Task 都要经历“申请资源—> 运行Task –> 释放资源”的过程

     

 

Spark 多线程模型<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值