目前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://blog.csdn.net/lifuxiangcaohui/article/details/52577041

Spark三种部署方式相关推荐

  1. 免费的crm系统部署在自己的服务器,CRM软件的三种部署方式

    企业部署CRM软件有三种不同选择,他们在成本.风险和利益上各有不同.本文将逐一介绍这三类CRM部署方式:本地部署.软件托管和服务器代管.软件即服务. 一.CRM本地部署方式 这是将软件客户端.服务器部 ...

  2. SAP Fiori应用的三种部署方式

    封面图片来自Google搜索,关键字: Fiori Deployment 方式1 On premise环境下以BSP应用作为Fiori应用部署和运行的载体 在SAP成都labs我曾经担任过CRM这几个 ...

  3. tomcat的三种部署方式

    今天在自己的vps上搭建服务,好久没用过tomcat了.现在公司都是用resin 的. 前一阵看见oschina 是用tomcat,打算自己的这个服务也用tomcat来搞. 配置完jdk和tomcat ...

  4. k8s 三种部署方式

    Minikube Minikube 是一个工具,可以在本地快速运行一个单点的 Kubernetes,仅用于日常尝试或者开发,生产是不可以用的. 教程:官方地址 Kubeadm kubeadm 也是一个 ...

  5. Tomcat三种部署方式

    Tomcat 1 Tomcat使用 tomcat官网 tomcat目录介绍 目录名 说明 bin 专门用来存放 Tomcat 服务器的可执行程序 conf 专门用来存放 Tocmat 服务器的配置文件 ...

  6. MyEclipse网站服务器,MyEclipse中web服务器的三种配置方式

    初学Javaweb开发的人们都会遇到一个问题,就是服务器环境的搭建配置问题.下面介绍三种服务器的搭建方式. 直接修改server.xml文件 当你写了一个web应用程序(jsp/servlet),想通 ...

  7. jenkins部署三种构建方式的详细步骤

    部署背景: jenkins:                     CentOS 7.4C         IP:172.16.3.74 gitlab-11.5.3:             Cen ...

  8. jar容器部署成功无法访问_Spring Boot 应用程序五种部署方式

    翻译自 Deploying Spring Boot Applications[1] 原作者 Murat Artim[2] 可以使用各种方法将 Spring Boot 应用程序部署到生产系统中.在本文中 ...

  9. Spring Boot项目(Maven\Gradle)三种启动方式及后台运行详解

    Spring Boot项目三种启动方式及后台运行详解 1 Spring Boot项目三种启动方法 运行Application.java类中的Main方法 项目管理工具启动 Maven项目:mvn sp ...

最新文章

  1. 微软2022新bug:大量程序员连夜加班,只因日期数据溢出
  2. 李宏毅线性代数笔记4:向量
  3. Spring Cloud Alibaba:Sentinel 流控规则
  4. centos 安装nginx笔记
  5. SDNU 1167.花生采摘(排序)
  6. python多线程单核_002_Python多线程相当于单核多线程的论证
  7. 数学在计算机科学上的应用文献,数学计算机论文,关于计算机在数学教学中的应用相关参考文献资料-免费论文范文...
  8. maven怎么和ecli_Maven的配置和Eclipse中导入SpringBoot项目一些注意点
  9. 使用异步 I/O 大大提高应用程序的性能(来自IBM)
  10. 陆奇最新投资方向:机器人、生物科技、远程工作、云计算技术、新材料、新消费娱乐等,奇绩创坛春季创业营线上开营
  11. java list foreach 修改_Java ArrayList在foreach中remove的问题分析
  12. 监控程序日志并发送警告邮件
  13. Julia: map,reduce,mapreduce
  14. 英语单词速记(一直更新中......)
  15. 使用tkinter canvas绘制中国象棋棋盘
  16. MDK5+CubeMX仿真STM32F03一站式解决
  17. c语言输入12行怎么输入,c语言中,定义什么型别的变数能同时储存数字跟字元,怎么输入...
  18. win10/11 亮度调节拖动条消失的问题
  19. matlab零序五次谐波,基于MATLAB的高次谐波接地选线保护仿真设计
  20. 微信公众号网页授权--前端获取code及用户信息(vue)

热门文章

  1. 为超融合架构选择合适的数据中心冷却系统
  2. WebGIS全栈修炼之路1——开篇一起梳理一下修炼之路
  3. teamviewer Linux centos7安装使用详细
  4. 自己搭建一个SSM框架
  5. 中国移动M2M终端规范——WMMP协议分册
  6. 2021年La Liste最佳餐厅特别奖揭晓,佛山102小馆私房菜入选
  7. cosin等于多少,sin180度等于多少
  8. 1分钟教会你如何提取自己喜欢的视频文案,别再手抄文案了
  9. Ubuntu ROS下遇到的问题记录
  10. 中文停用词库分享-哈工大停用词表、百度停用词表等