前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spark on mesos 两种运行模式

spark on mesos 两种运行模式

作者头像
Albert陈凯
发布2018-04-04 15:58:52
8300
发布2018-04-04 15:58:52
举报
文章被收录于专栏:Albert陈凯

原文地址:http://blog.csdn.net/lsshlsw/article/details/47104913

Spark on mesos 有粗粒度(coarse-grained)和细粒度(fine-grained)两种运行模式,细粒度模式在spark2.0后开始弃用。 细粒度模式

优点 spark默认运行的就是细粒度模式,这种模式支持资源的抢占,spark和其他frameworks以非常细粒度的运行在同一个集群中,每个application可以根据任务运行的情况在运行过程中动态的获得更多或更少的资源(mesos动态资源分配),但是这会在每个task启动的时候增加一些额外的开销。这个模式不适合于一些低延时场景例如交互式查询或者web服务请求等。 启动spark-shell,启动时不占有资源,需要运行task后才去申请

mesos细粒度

缺点 spark中运行的每个task的运行都需要去申请资源,也就是说启动每个task都增加了额外的开销。 在一些task数量很多,可是任务量比较轻的应用中,该开销会被放大。 例如: 遍历一个hdfs中拥有3w分区的数据(56亿条)任务: 粗粒度模式耗时 细粒度模式耗时

50s 420s

粗粒度模式 该模式的优点是启动task的时候开销比较小,但是该模式运行的时候每个application会一直占有一定的资源,直到整个application结束后才会释放资源。

启动spark-shell,启动应用时即占有资源

粗力度

可以在conf/spark-default.conf中开启粗粒度模式 spark.mesos.coarse true

在粗粒度模式下,一个application启动时会获取集群中所有的cpu(mesos资源邀约的所有cpu), 这会导致在这个application运行期间你无法再运行其他任务。你可以控制一个application获取到的最大资源来解决这个问题。 例如你可以设置最大的cpu使用数 在conf/spark-default.conf中设置 spark.cores.max 10

这样提交任务后,application会一直占用10个cpu,不会增加也不会减少,直到完全运行结束。 spark在1.5中提供了动态executor调整的功能,可以缓解资源长期不释放的问题。 spark dynamic allocation 一些相关参数 属性名 默认值 描述

spark.mesos.coarse false 是否使用粗粒度模式运行spark任务|

spark.mesos.extra.cores 0 只能在粗粒度模式下使用,为每个task增加额外的cpu,但是总的cpu数不会超过spark.cores.max设置的数量

spark.mesos.mesosExecutor.cores 1.0 即使spark task没有执行,每个mesos executor也会持续的拥有这些cpu,可以设置浮点数

spark.mesos.executor.memoryOverhead executor memory * 0.10, with minimum of 384 每个executor额外的一些内存,单位是mb,默认情况下,该值是spark.executor.memory 的0.1倍,且不小于384mb。如果进行了设置,就会变成你设置的值

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.07.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档