spark on yarn 完全分布式_「大数据」(七十一)Spark之架构介绍

【导读:数据是二十一世纪的石油,蕴含巨大价值,这是·情报通·大数据技术系列第[71]篇文章,欢迎阅读和收藏】

1 基本概念

Spark 架构采用了分布式计算中的 Master-Slave 模型。 Master 是对应集群中的含有 Master 进程的节点, Slave 是集群中含有 Worker 进程的节点。 Master 作为整个集群的控制器,负责整个集群的正常运行; Worker 相当于计算节点,接收主节点命令与进行状态汇报; Executor 负责任务的执行; Client 作为用户的客户端负责提交应用, Driver 负责控制一个应用的执行。

Spark 集群部署后,需要在主节点和从节点分别启动 Master 进程和 Worker 进程,对整个集群进行控制。在一个 Spark 应用的执行过程中, Driver 和 Worker 是两个重要角色。 Driver 程序是应用逻辑执行的起点,负责作业的调度,即 Task 任务的分发,而多个 Worker 用来管理计算节点和创建 Executor 并行处理任务。在执行阶段, Driver 会将 Task 和 Task 所依赖的 file 和 jar 序列化后传递给对应的 Worker 机器,同时 Executor 对相应数据分区的任务进行处理。

Spark 的整体流程为: Client 提交应用, Master 找到一个 Worker 启动 Driver , Driver 向 Master 或者资源管理器申请资源,之后将应用转化为 RDD Graph ,再由 DAGScheduler 将 RDD Graph 转化为 Stage 的有向无环图提交给 TaskScheduler ,由 TaskScheduler 提交任务给 Executor 执行。在任务执行的过程中,其他组件协同工作,确保整个应用顺利执行。

2 术语解释

RDD :是 Resillient Distributed Dataset (弹性分布式数据集)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。

DAG :是 Directed Acyclic Graph (有向无环图)的简称,反映 RDD 之间的依赖关系。

Application :用户编写的 Spark 应用程序。

Executor :是运行在工作节点( WorkerNode )的一个进程,负责运行 Task 。

Task :运行在 Executor 上的工作单元 。

Job :一个 Job 包含多个 RDD 及作用于相应 RDD 上的各种操作。

Stage :是 Job 的基本调度单位,一个 Job 会分为多组 Task ,每组 Task 被称为 Stage , 或者也被称为 TaskSet ,代表了一组关联的、 相互之间没有 Shuffle 依赖关系的任务组成的任务集。

3 架构原理介绍

3.1 Spark 依赖

( 1 ) Map Reduce 模型

作为一个分布式计算框架, Spark 采用了 MapReduce 模型。在它身上, Google 的 Map Reduce 和 Hadoop 的痕迹很重,很明显,它并非一个大的创新,而是微创新。在基础理念不变的前提下,它借鉴,模仿并依赖了先辈,加入了一点改进,极大的提升了 MapReduce 的效率。

使用 MapReduce 模型解决大数据并行计算的问题,带来的最大优势,是它和 Hadoop 的同属一家人。因为同属于 MapReduce 并行编程模型,而不是 MPI 和 OpenMP 其它模型,因此,复杂的算法,只要能够以 Java 算法表达,在 Hadoop 上运行的,就能以 Scala 算法表达,在 Spark 上运行,而速度有倍数的提升。相比之下,在 MPI 和 Hadoop 算法之间切换,难度就大多了。

( 2 )函数式编程

Spark 由 Scala 写就,而支持的语言亦是 Scala 。其原因之一就是 Scala 支持函数式编程。这一来造就了 Spark 的代码简洁,二来使得基于 Spark 开发的程序,也特别的简洁。一次完整的 MapReduce , Hadoop 中需要创建一个 Mapper 类和 Reduce 类,而 Spark 只需要创建相应的一个 map 函数和 reduce 函数即可,代码量大大降低。

( 3 ) Mesos
Spark 将分布式运行的需要考虑的事情,都交给了 Mesos ,自己不 Care ,这也是它代码能够精简的原因之一。

( 4 ) HDFS 和 S3
Spark 支持 2 种分布式存储系统: HDFS 和 S3 。应该算是目前最主流的两种了。对文件系统的读取和写入功能是 Spark 自己提供的,借助 Mesos 分布式实现。如果自己想做集群试验,又没有 HDFS 环境,也没有 EC2 环境的话,可以搞个 NFS ,确保所有 MESOS 的 Slave 都可以访问,也可以模拟一下。

3.2 Spark 架构

Spark 架构图如下:

47a87311d53447a6ad0cfa302306c608

Spark 架构中的基本组件

ClusterManager :在 Standalone 模式中即为 Master (主节点),控制整个集群,监控 Worker 。在 YARN 模式中为资源管理器。

Worker :从节点,负责控制计算节点,启动 Executor 或 Driver 。在 YARN 模式中为 NodeManager ,负责计算节点的控制。

Driver :运行 Application 的 main() 函数并创建 SparkContext 。

Executor :执行器,在 worker node 上执行任务的组件、用于启动线程池运行任务。每个 Application 拥有独立的一组 Executors 。

SparkContext :整个应用的上下文,控制应用的生命周期。

RDD : Spark 的基本计算单元,一组 RDD 可形成执行的有向无环图 RDD Graph 。

DAG Scheduler :根据作业( Job )构建基于 Stage 的 DAG ,并提交 Stage 给 TaskScheduler 。

TaskScheduler :将任务( Task )分发给 Executor 执行。

SparkEnv :线程级别的上下文,存储运行时的重要组件的引用。

SparkEnv 内创建并包含如下一些重要组件的引用。

MapOutPutTracker :负责 Shuffle 元信息的存储。

BroadcastManager :负责广播变量的控制与元信息的存储。

BlockManager :负责存储管理、创建和查找块。

MetricsSystem :监控运行时性能指标信息。

SparkConf :负责存储配置信息。

Spark 结构主要分为四个部分:

1. 用来提交作业的 Client 程序: client 是什么呢,比如 spark 中提交程序的 shell 窗口,宏观上讲,是一台提交程序的物理机。负责将打包好的 spark 程序提交到集群中,提交完程序这个客户端客户端程序还发挥什么作用呢? yarn-client 模式下,客户端提交程序后,在该客户端上又运行着一个 driver 程序,这个 client 的作用持续到 spark 程序运行完毕,而 yarn-cluster 模式下,客户端提交程序后就不再发挥任何作用,也就是说仅仅发挥了提交程序包的作用。

2. 用来驱动程序运行的 Driver 程序: driver 完成的工作主要是创建用户的上下文,这个上下文中包括很多控件比如 DADScheduler 、 TaskScheduler 等等,这些控件完成的工作也称为 driver 完成的。 driver 中完成 RDD 的生成,将 RDD 划分成有向无环图,生成 task ,接受 master 的指示将 task 发送到 worker 节点上进行执行等工作。

3. 用来进行资源调度的 ClusterManager: 整个集群的 master ,主要完成资源的调度,涉及一些调度算法,自带的资源管理器只支持 FIFO 调度, yarn 和 mesos 还支持其他方式的调度算发。 CM 一边和 driver 打交道 ,一边和 worker 打交道, driver 向 CM 申请资源, worker 通过心跳机制向 CM 汇报自己的资源和运行情况, CM 告诉 driver 应该向哪些 worker 发送消息, 然后 driver 把 task 发送到这些可用的 worker 上

4. 用来执行程序的 worker:worker 用多个 executor 来执行程序

3.3 Spark 运行模式

a0f2402174ba48c1af951160070142a5

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

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

相关文章

计算机网络数据链路层 --- 停止等待协议

停止等待协议的意义 除了比特出差错,底层信道还会出现丢包问题。为了实现流量控制。 停止等待协议的前提 虽然现在常用全双工通信方式,但为了讨论问题方便,仅考虑一方发送数据(发送方),一方接收数据&…

python import如何使用_python之import引用

关于python的import引用的最大关键是init.py文件的作用,这个文件对于import的方法使用至关重要。这个是我在搭建自动化框架过程中用到的import的方法使用。 比如说,我现在login.py想引用bottom底下的log.py的时候,这个时候,我们如…

计算机网络数据链路层 --- 后退n帧协议(GBN)

滑动窗口 发送窗口 发送方维持一组连续的允许发送的帧的序号 接收窗口 接收方维持一组连续的允许接收帧的序号 发送过程 如图,假如发送方的发送窗口大小是6,首先发送0号帧,并建立0号帧的副本,防止帧丢失,然后发送…

简要描述内部连接和外部连接之间的区别_创新性的M12推拉式连接器推拉标准—跨制造商自动化技术的里程碑...

“八家知名制造商 – 菲尼克斯,浩亭,莫仕,穆尔电子,宾德,康耐,艾查和魏德米勒因建立M12推拉式连接器的推拉锁紧机制而在市场上确立了地位。我们共同追求一个目标,即确保各个制造商之间的兼容性。…

计算机网络数据链路层 --- 选择重传协议(SR)

引言 GBN协议的弊端 累计确认,从而导致某一帧错误后会批量重传。 可行的解决方案 可以只重传出错的帧,设置单个确认,同时加大接收窗口,设置接收缓存,缓存乱序到达的帧。这也就是选择重传协议SR。 SR中的滑动窗口 …

requests 返回的cookies为空_爬虫学习(2)(requests库)

POST请求import requestsdata {name: cxc, age: 18} r requests.post("http://httpbin.org/post", datadata) print(r.text)POST请求这样就成功地获得了返回结果,form部分就是提交的数据,证明POST请求成功发送了。响应之前我们使用了text和c…

计算机网络 --- 数据链路层介质访问控制

引言 传输数据使用的两种链路: 点对点链路:两个相邻的节点通过一个链路相连,没有第三者。应用:PPP协议,常用于广域网。广播式链路:所有主机共享通信介质。应用:早期的总线以太网,无…

6-7 使用函数输出水仙花数_学习C语言居然对printf函数不理解???

对于C语言的printf函数,可以说是我们学习C语言第一个接触到的函数了。printf命令的作用是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。printf()函数的调用格式为:printf("", )。printf()是C语言标准库函数&#xff…

matplotlib 子图超过4个_Matplotlib从入门到精通

Matplotlib从入门到精通​mp.weixin.qq.comMatplotlib是基于Python语言的开源项目,旨在为Python提供一个数据绘图包。它提供了一整套和 matlab 相似的命令 API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入 GUI 应用程序…

c++求n的几次方_14.八年级数学:若a+b+c=1,怎么求 a+b+c的值?分式培优拓展

欢迎您来到方老师数学课堂,请点击上方蓝色字体,关注方老师数学课堂。所有的视频内容,全部免费,请大家放心关注,放心订阅。八年级数学:若abc1,怎么求 abc的值?分式培优拓展。这道题&a…

计算机网络 --- 数据链路层CSMA/CD协议

CSMA/CD协议 全称为载波监听多点接入/碰撞检测CSMA/CD(carrier sense multiple access with collision detection) CSMA/CD协议 - CS: CS指的是载波侦听/监听,每一个站点再发送数据之前以及发送数据时都要检测一下总线上是否有其他计算机在…

map insert异常失败_处理dubbo反序列化失败的坑

前言今天下午,当我经过一个小时的奋”键“疾”码“,准备好好的审查一下(摸鱼)自己写的代码,经过一段时间审查(摸的差不多了,该下班了),得出一个结论我写的代码很优雅、精简。所以大手一挥提交代码,并在 API…

class会不会回收?用不到的class怎么回收_牛X的java程序员必备的GC基础知识, 面试肯定用的到...

1. GC回收哪些内存区域呢?堆内存对象数组方法区该类所有的额实例都已经被回收, 也就是java堆中不存在该类的任何实例加载该类的ClassLoader已经被回收该类对应的java.lang.Class对象在任何地方没有被引用, 也无法通过反射访问该类方法。垃圾回…

c++读取utf8文件_Node.js 进阶之 fs 文件模块学习

前言文件操作是开发过程中并不可少的一部分。Node.js 中的 fs 模块是文件操作的封装,它提供了文件读取、写入、更名、删除、遍历目录、链接等 POSIX 文件系统操作。与其它模块不同的是,fs 模块中所有的操作都提供了异步和同步的两个版本,具有 sync 后缀的…

计算机网络 --- 数据链路层中局域网和广域网

局域网 简称LAN(Local Area Network):是指在某一区域内由多台计算机互联成的计算机组,使用广播信道。 局域网的特点 覆盖的地理范围较小,只在一个相对独立的局部范围内联,如一座或集中的建筑群内。使用专…

python制作中文词云_Python如何生成词云(详解)

前言 今天教大家用wrodcloud模块来生成词云,我读取了一篇小说并生成了词云,先看一下效果图: 效果图一:效果图二:根据效果图分析的还是比较准确的,小说中的主人公就是“程理”,所以出现次数最多。…

计算机网络 --- 局域网中的以太网

以太网概述 以太网是应用最广泛的局域网,包括标准以太网(10Mbps),快速以太网(1000Mbps),千兆以太网(1000Mbps)和10G以太网,他们都符合IEEE802.3系列标准规范…

高度为5的3阶b树含有的关键字个数_数据结构要考得好,你心里要有B树

01知识框架02知识点详解1B树①定义与性质B树也叫B-树。B树是一种平衡的多分树,通常我们说m阶的B树,是二叉排序树的一种扩展,它必须满足如下条件:01每个结点最多只有m-1个关键字。02根结点最少可以只有1个关键字。03非根结点至少有…

计算机网络 --- 网络层路由算法与路由协议

路由表: 最佳路由: “最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。 路由算法的分类 静态路由算法(非自适应路由算法) 管理员手工配置路由信息。简便,可靠,在负荷稳定,拓扑…

cplex安装_Excel软件规划求解工具的安装与功能介绍

引言规划求解工具是Excel软件中自带的一个功能非常强大的加载项/工具。它能够完成包括线性规划、整数线性规划等一般规模的数学优化问题的问题求解。更重要的是,无论是在Windows操作系统下,还是苹果电脑Mac平台下,这个工具都是免费的。下面就…