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

【本文详细介绍了Spark的三种部署方式及其比较,欢迎读者朋友们阅读、转发和收藏!】

目前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资源。总之,这两种方式各有优缺点。

f69f479bf26d9cc277b18da65bce25a0.png

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模式了)、相关技术人才储备等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

备战美赛,这些你应该知道的知识点

国赛刚过完 美赛就接踵而来 只剩下两个多月的时间 不少准备参赛的小伙伴在后台咨询 该如何准备美赛 为了更好地帮助大家进攻美赛 超模君特意邀请到 今年国赛A题Matlab创新奖&一等奖获奖者 方天庆同学 (获奖队伍:黄璐哲、方天庆、帅青) 为…

2020研究生数学建模结果_关于举办2020年全国研究生数学建模大赛的通知

2020年全国研究生数学建模大赛开始啦!各学院: 为在大学生中倡导学习统计、应用统计的良好氛围,适应大数据时代的高校统计和数据科学人才的培养要求,提高研究生的数据挖掘、数据分析、运用计算机处理数据的能力,加强创新…

我计划搞直播了,欢迎来一起聊一聊

阅读本文大概需要2分钟。说实话从2015年开始写公众号至今,能想到的是我的坚持,没想到的是居然能快速收获这么多关注,更没想到是能影响一大群人,得到大家的尊称张队。公众号始终围绕着dotnet 生态进行,2015年dotnet刚开始开源&…

由塔科马大桥事件 谈软件架构

由塔科马大桥事件 谈软件架构 经常,我们会涉及系统架构、面向对象的架构(SOA)、软件架构等词,那么到底什么是“架构”?什么是“软件架构”?“系统架构”与“软件架构”有着怎样的区别和联系?“系…

code删除前两个_听说用python来批量删除说说也挺快乐的呢~

原文链接听说用python来批量删除说说也挺快乐的呢~​mp.weixin.qq.com先睹为快在终端运行如下命令即可:python clearQzone.py (--manual)如果加了--manual选项,意思就是每条说说删除前你都要先人工确认一下是否真的需要删除它,否则就是直接把…

放弃Python转向Go语言:我们找到了以下9大理由

转用一门新语言通常是一项大决策,尤其是当你的团队成员中只有一个使用过它时。今年 Stream 团队的主要编程语言从 Python 转向了 Go。本文解释了其背后的九大原因以及如何做好这一转换。 为什么使用 Go 原因 1:性能 Go 极其地快。其性能与 Java 或 C相似…

开源许可证的变更带给我们什么启示?

喜欢就关注我们吧!近日,Elastic 公司将旗下的知名开源项目 Elasticsearch 和 Kibana 的开源许可证变更的事件持续发酵,再次把我们的目光聚焦到开源公司与云服务厂商之间的矛盾旋涡中。事实上,Elastic 公司与云服务厂商的“积怨”由…

[reship]某类领导

某类领导 在我们眼里,他们没文化,没水平,没魄力,他一无是处 但是他对上级忠诚,唯命是从,鞍前马后,忠诚得像一条哈巴狗 凭借着这种忠诚,甚至是卑贱,他总是有骨头啃&#x…

as本地仓库更改_将gitee仓库连接GitHub Desktop。新建更改仓库并上传至gitee。

Ⅰ、在GitHub Desktop上登陆账号GitHub Desktop上只能用GitHub账户登陆第一次打开GitHub Desktop使会直接有登陆界面出现的,直接用GitHub的账户登陆就好了可以在最上方的菜单,File → Options打开页面登陆 (详细操作见图)这是已经…

有人问我:程序员要供祖师爷的话该供谁?

有人问我:程序员是不是都抽烟? 我想了半天我抽烟完全是因为医生,在我刚上大学的时候还不会吸烟,有一天嗓子特别疼,我就去医院检查,大夫检查之后对我说,没什么太大毛病,你少抽点烟就行…

java父类转子类_java中什么是继承,和继承的接口的关系?

继承的概念继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相…

cisco命令大全解释、注释

cisco命令大全 1. switch配置命令(1)模式转换命令用户模式----特权模式,使用命令"enable"特权模式----全局配置模式,使用命令"config t"全局配置模式----接口模式,使用命令"interface接口类型接口号"全局配置模式----线控模式,使用命令"lin…

VSCode+BeetleX.VueHost开发Vue应用

BeetleX.VueHost是一个用于打包Vue和提供HTTP服务的程序,它能提供在没安装vue-cli和webpack的情况下开发vuejs应用。使用 BeetleX.VueHost无须安装下载运行即可,可以通过以下地址下载:链接:https://pan.baidu.com/s/1z4Jfz…

8 无法识别raid盘_王者荣耀防沉迷规则再升级;未来将采用人脸识别验证

昨天,《王者荣耀》官网发布了《未成年人防沉迷新规接入公告》,这份公告对于未成年人的可游玩时长、充值金额等都做出了规定。规则规定:在游玩时长方面,未成年用户每日22时至次日8时禁玩,法定节假日每日限玩3小时&#…

干货|MIT线性代数课程精细笔记[第二课]

0前言 MIT线性代数课程精细笔记[第一课]笔记见MIT线性代数课程精细笔记[第一课]。 该笔记是连载笔记,希望对大家有帮助。 1知识概要 这一节中我们介绍一下消元法,即是上一节中我们提到的“系统化”求解方程所用的方法,通过矩阵消元运算可以很…

python创建一个空的dataframe_python 创建一个空dataframe 然后添加行数据的实例

实例如下所示:import pandas as pdimport reimport mathdframe1 pd.read_excel("window regulator分析报告数据对比源.xlsx", sheetname"Sheet1") #读取数据dframe2 pd.read_excel("window regulator分析报告数据对比源.xlsx", she…

压缩解压缩

核心库NewLife.Core内置了压缩相关功能扩展,并且独立实现的ZipFile还支持.NET2.0和.NET4.0,该类在.NET4.5以后成为.NET Framework框架标配。数据流压缩IOHelper类扩展了字节数组和数据流的压缩扩展方法Byte[] Compress(this Byte[] data); Byte[] Decomp…

累~

真累~!!!转载于:https://blog.51cto.com/jianchi1825/159002

在以下说法错误的是_外行人对翡翠有哪些错误认知?行家给你最精准的答案

玉石行业虽然在我们国家有着很悠久的历史!但是就行业认知而言,仍然属于小众行业。正所谓隔行如隔山,在很多外行人眼里,翡翠行业很神秘,而且水也很“深”!甚至很多人认为这个行业“三年不开张,开…

参加美赛,需掌握这些算法和模型

昨天晚上的直播甚是精彩 方同学不但分享了 获奖论文、解题技巧 还分享了 赛前准备、比赛经验和日程规划 po几张截图让大家感受下 此时此刻可能会有不少童鞋 正在为错过直播而懊悔 不用担心 超模君又准备了一份豪华大礼 本周 超模君特意邀请到 今年美赛A题特等奖获奖者 徐乾同学…