编程开发 购物 网址 游戏 小说 歌词 地图 快照 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 开发 租车 短信 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
移动开发 架构设计 编程语言 互联网 开发经验 Web前端 开发总结
开发杂谈 系统运维 研发管理 数据库 云 计 算 Java开发
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
  编程开发知识库 -> 云计算 -> spark on yarn架构简介 -> 正文阅读
 

[云计算]spark on yarn架构简介[第1页]

spark自从问世以来就收到了广泛的关注,其热度一直居高不下。spark的出现,为实时数据的处理带来了极大的方便,相比Hadoop,spark在某些情况下处理数据的速度要快于Hadoop,其主要原因有以下两点:
1. spark中间的数据不落地,这是最主要的原因,中间的数据存放在内存中,这就极大的减少了磁盘的读取以及IO的操作,所以,这也是spark适合迭代式工作的原因。
2. spark中DAGScheduler的出现,对任务进行了一个很好的划分,其主要的划分的依据是宽依赖(这个后面我会细说),也就是根据任务的拓扑结构进行划分,保证了窄依赖的RDD会在一起,减少了shuffle的操作过程,极大的减少了时间开销。
但是如果说spark取代了Hadoop,我认为不能这么说,还是要看业务场景,Hadoop适合大吞吐量的静态数据,spark适合实时数据流,说实在,如果spark跑MR作业,其时间不一定比Hadoop快,因为spark太吃内存了。下面就说下我理解的spark的架构(我用到的调度器是yarn):

架构中的主要构件(其中yarn部分不再介绍,具体可以参考博客http://blog.csdn.net/hanlaipeng11/article/details/74923086):
RDD:这是spark中的一个关键的概念,RDD我们可以理解为spark的每个阶段的产物,正是一个阶段一个阶段的产物构成了spark的整个拓扑结构。所以每一个RDD之间都会有直接或间接的关系,直接的关系,也就是说如果RDD1是由RDD2直接生成的,那么这就是窄依赖,因为这样数据不需要shuffle过程,极大的减少了时间的开销,但是如果RDD1是由多个不同的RDD生成的,那么这就是宽依赖,也就是需要一个shuffle的过程,这也就是为什么DAGScheduler会按照宽依赖来划分stages。有了依赖关系,这样就保证了容错性,当中间的某个数据丢失的时候,它就会根据其依赖关系重新生成,并不需要将整个任务重新执行。
DAGScheduler:任务划分器,将spark任务划分成有向无环图的结构,根据的是是否需要shuffle,也就是RDD的宽依赖,找到最佳的调度方法,这样就可以合理的利用资源,提高任务的执行效率。
TaskScheduler(图中的YarnClusterScheduler):主要负责任务的调度,资源的申请,监控任务的执行。
Excutor:任务执行的单元,执行TaskSet中的作业,并向Driver传输心跳。
具体流程为:我们先将任务提交给ResourceManager,他会立刻在一个节点上启动一个ApplicationMaster来管理这个任务,而这个ApplicationMaster中主要做的事情为:SparkContext获取到任务,然后其中的DAGScheduler会根据任务的拓扑情况进行划分,划分成一个个的stages,划分的主要依据是基于RDD的宽依赖,这样任务通过划分变成了一个任务集合也就是TaskSet,然后将这个TaskSet交给TaskScheduler来进行管理(也就是图中的YarnClusterScheduler),他会向ResourceManager申请资源,然后ResourceManager会根据集群中资源的情况分配container,里面就是一个个的任务执行单元Excutor,然后TaskScheduler还负责监控作业的执行情况,最后注销任务。
spark 的架构了解了,我们就来说一下这个shuffler,为什么划分任务要根据shuffler?
shuffler阶段主要是对并行操作的数据结果进行sort、hash的一个过程,由于要读取多个RDD的结果,并对所有结果进行整体操作,所以会带来比较大的IO消耗,可能还要有磁盘的读取等操作,这一步是很关键,并且很耗时的。当然了,这也是spark的瓶颈之一,最开始的spark的shuffler过程是基于Hash实现的,他会将中间的数据文件都打开,然后磁盘读取,读取文件,但是当小文件数量巨大的时候它会很消耗内存,并且磁盘的读取也是很耗时的,所以spark又实现了基于排序的shuffle,这个是将所有文件读在一个文件中丙进行排序操作,但是在分片的时候,它采用的策略是建立一个index,reduce根据index来读取数据,这要减少了内存的开销,但是照成的结果是所有的数据都需要进行排序。各有利弊,我们可以根据实际的需求来进行策略的选择。
以上均为个人看法,如有错误,还请各位大神指正,谢谢。
  云计算 最新文章
NLP06-Gensim源码简析[字典]
pandas中使用三元表达式
Docker基础笔记
大数据工程师必备技能图谱
ServiceComb中的数据最终一致性方案
63. Unique Paths II
手把手教你建github技术博客by hexo
hadoop datanode结点不启动导致dfs控制台显
spark on yarn架构简介
mapreduce程序本地模式调试
上一篇文章      下一篇文章      查看所有文章
加:2017-08-08 12:56:54  更:2017-08-08 12:57:39 
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年2日历
2018-2-26 1:28:30
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程开发知识库