2019独角兽企业重金招聘Python工程师标准>>>

目前Apache Spark支持三种分布式部署方式,分别是standalone、spark on mesos和 spark on YARN,其中,第一种类似于MapReduce 1.0所采用的模式,内部实现了容错性和资源管理,后两种则是未来发展的趋势,部分容错性和资源管理交由统一的资源管理系统完成:让Spark运行在一个通用的资源管理系统之上,这样可以与其他计算框架,比如MapReduce,公用一个集群资源,最大的好处是降低运维成本和提高资源利用率(资源按需分配)。本文将介绍这三种部署方式,并比较其优缺点。

standalone模式,即独立模式,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统。从一定程度上说,该模式是其他两种的基础。借鉴Spark开发模式,我们可以得到一种开发新型计算框架的一般思路:先设计出它的standalone模式,为了快速开发,起初不需要考虑服务(比如master/slave)的容错性,之后再开发相应的wrapper,将stanlone模式下的服务原封不动的部署到资源管理系统yarn或者mesos上,由资源管理系统负责服务本身的容错。目前Spark在standalone模式下是没有任何单点故障问题的,这是借助zookeeper实现的,思想类似于Hbase master单点故障解决方案。将Spark standalone与MapReduce比较,会发现它们两个在架构上是完全一致的:

1)  都是由master/slaves服务组成的,且起初master均存在单点故障,后来均通过zookeeper解决(Apache MRv1的JobTracker仍存在单点问题,但CDH版本得到了解决);

2) 各个节点上的资源被抽象成粗粒度的slot,有多少slot就能同时运行多少task。不同的是,MapReduce将slot分为map slot和reduce slot,它们分别只能供Map Task和Reduce Task使用,而不能共享,这是MapReduce资源利率低效的原因之一,而Spark则更优化一些,它不区分slot类型,只有一种slot,可以供各种类型的Task使用,这种方式可以提高资源利用率,但是不够灵活,不能为不同类型的Task定制slot资源。总之,这两种方式各有优缺点。

Spark On Mesos模式。这是很多公司采用的模式,官方推荐这种模式(当然,原因之一是血缘关系)。正是由于Spark开发之初就考虑到支持Mesos,因此,目前而言,Spark运行在Mesos上会比运行在YARN上更加灵活,更加自然。目前在Spark On Mesos环境中,用户可选择两种调度模式之一运行自己的应用程序(可参考Andrew Xia的“Mesos Scheduling Mode on Spark”):

1)   粗粒度模式(Coarse-grained Mode):每个应用程序的运行环境由一个Dirver和若干个Executor组成,其中,每个Executor占用若干资源,内部可运行多个Task(对应多少个“slot”)。应用程序的各个任务正式运行之前,需要将运行环境中的资源全部申请好,且运行过程中要一直占用这些资源,即使不用,最后程序运行结束后,回收这些资源。举个例子,比如你提交应用程序时,指定使用5个executor运行你的应用程序,每个executor占用5GB内存和5个CPU,每个executor内部设置了5个slot,则Mesos需要先为executor分配资源并启动它们,之后开始调度任务。另外,在程序运行过程中,mesos的master和slave并不知道executor内部各个task的运行情况,executor直接将任务状态通过内部的通信机制汇报给Driver,从一定程度上可以认为,每个应用程序利用mesos搭建了一个虚拟集群自己使用。

2)   细粒度模式(Fine-grained Mode):鉴于粗粒度模式会造成大量资源浪费,Spark On Mesos还提供了另外一种调度模式:细粒度模式,这种模式类似于现在的云计算,思想是按需分配。与粗粒度模式一样,应用程序启动时,先会启动executor,但每个executor占用资源仅仅是自己运行所需的资源,不需要考虑将来要运行的任务,之后,mesos会为每个executor动态分配资源,每分配一些,便可以运行一个新任务,单个Task运行完之后可以马上释放对应的资源。每个Task会汇报状态给Mesos slave和Mesos Master,便于更加细粒度管理和容错,这种调度模式类似于MapReduce调度模式,每个Task完全独立,优点是便于资源控制和隔离,但缺点也很明显,短作业运行延迟大。

Spark On YARN模式。这是一种最有前景的部署模式。但限于YARN自身的发展,目前仅支持粗粒度模式(Coarse-grained Mode)。这是由于YARN上的Container资源是不可以动态伸缩的,一旦Container启动之后,可使用的资源不能再发生变化,不过这个已经在YARN计划(具体参考:https://issues.apache.org/jira/browse/YARN-1197)中了。

总之,这三种分布式部署方式各有利弊,通常需要根据公司情况决定采用哪种方案。进行方案选择时,往往要考虑公司的技术路线(采用Hadoop生态系统还是其他生态系统)、服务器资源(资源有限的话就不要考虑standalone模式了)、相关技术人才储备等。

转载于:https://my.oschina.net/u/2000675/blog/868843

Apache Spark探秘:三种分布式部署方式比较相关推荐

  1. Spark支持三种分布式部署方式

    目前Apache Spark支持三种分布式部署方式,分别是standalone.spark on mesos和 spark on YARN,其中,第一种类似于MapReduce 1.0所采用的模式,内 ...

  2. Spark的三种分布式部署方式

    目前Apache Spark支持三种分布式部署方式,分别是standalone.spark on mesos和 spark on YARN,其中,第一种类似于MapReduce 1.0所采用的模式,内 ...

  3. spark on yarn 完全分布式_Apache Spark探秘:三种分布式部署方式比较

    [本文详细介绍了Spark的三种部署方式及其比较,欢迎读者朋友们阅读.转发和收藏!] 目前Apache Spark支持三种分布式部署方式,分别是 standalone . spark on mesos ...

  4. 分布式部署_Apache Spark探秘:三种分布式部署方式比较

    [本文详细介绍了Spark的三种部署方式及其比较,欢迎读者朋友们阅读.转发和收藏!] 目前Apache Spark支持三种分布式部署方式,分别是 standalone . spark on mesos ...

  5. HoloLens 2开发:三种工程部署方式

    前言 最近有新成员加入本团队,为了方便其开发HoloLens1 / HoloLens2,将不定时更新HoloLens相关开发相关内容. 软件需求: HoloLens 1:VS2017 + Unity2 ...

  6. python分布式爬虫系统_三种分布式爬虫系统的架构方式

    分布式爬虫系统广泛应用于大型爬虫项目中,力求以最高的效率完成任务,这也是分布式爬虫系统的意义所在. 分布式系统的核心在于通信,介绍三种分布式爬虫系统的架构思路,都是围绕通信开始,也就是说有多少分布式系 ...

  7. Spark 进程模型与分布式部署:什么是分布式计算?

    0 前言 大家好,我是小林! 本篇文章是 Spark 系列的第三篇文章. 在第二篇文章中,小林讲到一个 Spark 任务首先要生成数据依赖图,也就是 Job 的逻辑执行图,然后根据一定的规则转化成 J ...

  8. spark sql 本地调试_Spark精华问答|Spark的三种运行模式有何区别?

    戳蓝字"CSDN云计算"关注我们哦! Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReducer快40倍左右,是hadoop的升级版本,Hadoop作为第 ...

  9. Spark精华问答 | Spark的三种运行模式有何区别?

    戳蓝字"CSDN云计算"关注我们哦! Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReducer快40倍左右,是hadoop的升级版本,Hadoop作为第 ...

最新文章

  1. 从“创业输家”到“创智赢家”
  2. akaze特征匹配怎么去掉不合适的点_图像匹配几种常见算法与实践
  3. python中导入模块用什么命令_Python导入模块的技巧
  4. Mxnet - Understanding weight shape for Dense Layer MXNET权重参数形状的疑惑(内部设计形式行列谁在前不用管,多个转置运算而已)
  5. 数据窗口动态生成列_Excel黑科技:教你8个简单实用的图表生成技巧
  6. 【转载】十年学会编程
  7. jboss入门_JBoss Forge NetBeans集成–入门
  8. linux/ubuntu中制作deb安装包
  9. IPOP-CMA-ES:一种重启CMA-ES
  10. 汽车故障诊断技术【4】
  11. 爱普生epson lq-630k打印机没有反应,发送成功,就是不打印
  12. STM32标准库驱动蜂鸣器
  13. elememt ui 组件 dialog使用备忘
  14. 《量子信息与量子计算简明教程》绪论
  15. 了解计算机的配置及价格行情,最新电脑配置清单及价格的详细介绍
  16. PTA 1096 大美数(Python3)
  17. Qt:Label插入图片
  18. JMC | 人工智能在药物合成中的当前和未来作用(2)
  19. 智慧水务大数据平台-智慧水务建设方案
  20. 佳能打印机HP打印机爱普生打印机提示卡纸了确找不到卡纸

热门文章

  1. GDCM:gdcm::GroupDict的测试程序
  2. Boost:bind绑定和或||的测试程序
  3. ITK:重新缩放图像
  4. ITK:将静态密集2D级别集可视化为高程图
  5. ITK:迷你管道MiniPipeline
  6. VTK:可视化算法之CutStructuredGrid
  7. OpenCV运行自定义OCR模型
  8. OpenCV Shi-Tomasi corner 检测器
  9. C语言求二叉树的垂直总和(附完整源码)
  10. QT的QHoverEvent类的使用