spark任务shell运行_大数据系列:Spark的工作原理及架构

7485b70c041c9bd047afeed654919b3c.png

介绍

本Apache Spark教程将说明Apache Spark的运行时架构以及主要的Spark术语,例如Apache SparkContext,Spark shell,Apache Spark应用程序,Spark中的任务(Task),作业(job)和阶段(stage)。

此外,我们还将学习Spark运行时体系结构的组件,例如Spark driver,集群管理器(cluster manager)和Spark executors。最后,我们将看到Apache Spark如何使用这些组件工作。

Apache Spark的工作原理–运行时Spark架构

在这里,我们将学习Apache Spark的工作原理。在Apache Spark中,中央协调器称为driver。当您在spark中输入代码时,驱动程序(driver)中的SparkContext将在我们调用Action时创建作业(job)。该作业(job)提交给DAG Scheduler,DAG Scheduler创建操作员图(operator graph),然后将其提交给Task Scheduler。任务计划程序通过集群管理器(cluster manager)启动任务。因此,借助集群管理器,Spark Application在一组计算机上启动。

d3a75a3655bfdadd42d3b6aaf14b4820.png

现在,让我们了解下Spark的架构原理。

2. Apache Spark工作原理的内部原理

Apache Spark是一个开放源代码,通用分布式计算引擎,用于处理和分析大量数据。就像Hadoop MapReduce一样,它也可以与系统一起在整个群集中分发数据并并行处理数据。Spark使用主/从体系结构,即一个中央协调员(driver)和许多不同节点的workers。在这里,中央协调员称为驱动程序(driver)。

驱动程序(driver)在其自己的Java进程中运行。这些驱动程序与可能称为executor的大量分布式executors进行通信。每个执行程序都是一个单独的java进程。一个Spark应用是驱动程序(driver)和其拥有的executors的组合。在集群管理器的帮助下,Spark Application在一组计算机上启动。Standalone cluster manager是Spark的默认内置cluster manager。除了内置的群集管理器外,Spark还可以与某些开源群集管理器(如Hadoop Yarn,Apache Mesos等)一起使用。

Spark的术语

  • Apache SparkContext

SparkContext是Spark应用程序的核心。它建立与Spark执行环境的连接。它用于创建Spark RDD,累加器(accumulators)和广播变量(broadcast),访问Spark服务并运行作业(jobs)。SparkContext是Spark执行环境的客户端,并充当Spark应用程序的主要部分。Spark Context的主要工作是:

  1. 获取Spark应用程序的当前状态
  2. 取消工作
  3. 取消Stage(一个阶段)
  4. 同步运行job
  5. 异步运行job
  6. 访问持久化的RDD
  7. 释放一个持久化的RDD
  8. 可编程动态资源分配
ddc511937e39a6b523288ce5fe725d41.png
  • Apache Spark Shell

Spark Shell是用Scala编写的Spark应用程序。它提供具有自动完成功能的命令行环境。它有助于我们熟悉Spark的功能,这些功能有助于开发自己的独立Spark应用程序。因此,该工具有助于了解Spark,也是Spark之所以在处理各种大小的数据集方面如此有用的原因。

$spark-shell --master yarn  --num-executors 3  --executor-cores 2  --executor-memory 500M
  • Spark Application

Spark应用程序是一个独立的计算,可以运行用户提供的代码来计算结果。即使没有运行作业(job),Spark应用程序也可以代表其运行进程。

  • 任务(Task)

一个任务是被发送到执行程序(executor)的工作单元。每个阶段都有一个任务,每个分区分配一个任务。同一任务是在RDD的不同分区上完成的。

  • 作业(Job)

Job是并行计算的单元,由多个任务组成,这些任务是响应Apache Spark中的Actoion而产生的。

  • 任务阶段(Stage)每个Job都分成一些较小的任务集,称为 相互依赖的 阶段(Stage)。Stage被分类为计算边界。不能在单个Stage中完成所有计算。Job通过许多个阶段(Stage)来完成。

Spark运行时架构的组件

  • Apache Spark驱动(Driver)

该程序的main()方法在驱动程序(Driver)中运行。驱动程序(Driver)是运行用户代码的过程,该用户代码创建RDD,执行转换(transformation)和操作(action)以及创建SparkContext。启动Spark Shell时,这表示我们已经创建了驱动程序(Driver)。在驱动程序终止时,应用程序将结束。

驱动程序(Driver)将Spark应用程序拆分为Task,并安排它们在Executors上运行。任务计划程序驻留在驱动程序中,并在executors之间分配任务。驱动程序(Driver)的两个主要关键角色是:

  1. 将用户程序转换为任务(task)。
  2. 在执行程序(executor)上调度任务(task)。

Spark程序的高层结构是:RDD由一些输入数据源组成,使用各种转换(transformations)从现有RDD派生出新的RDD,然后在执行Action来计算数据之后。在Spark程序中,操作的DAG(有向无环图)是隐式创建的。当驱动程序运行时,它将Spark DAG转换为物理执行计划。

  • Apache Spark集群管理器

Spark依靠群集管理器来启动执行程序,在某些情况下,甚至驱动程序也可以通过它启动。它是Spark中的可插入组件。在集群管理器上,Spark Scheduler以FIFO方式在Spark应用程序中调度作业和操作。可替代地,调度也可以以循环方式进行。Spark应用程序使用的资源可以根据工作负载动态调整。因此,应用程序可以释放未使用的资源,并在有需求时再次请求它们。在所有粗粒度群集管理器(即独立模式,YARN模式和Mesos粗粒度模式)上均可用。

  • Apache Spark执行器

给定Spark作业中的单个任务在Spark执行程序中运行。执行程序在Spark应用程序的开头启动一次,然后在应用程序的整个生命周期内运行。即使Spark执行程序失败,Spark应用程序也可以轻松继续。执行者有两个主要角色:

  1. 运行组成应用程序的任务,并将结果返回给驱动程序。
  2. 为用户缓存的RDD 提供内存存储(cache ,persist)。

5.如何在Spark中启动程序?尽管使用了任何集群管理器,Spark都具有单个脚本的功能,该脚本可用于提交程序,称为spark-submit。它在集群上启动应用程序。通过各种方式,spark-submit可以连接到不同的集群管理器并控制应用程序获得多少资源。对于某些群集管理器,spark-submit可以在群集内运行驱动程序(例如,在YARN工作节点上),而对于其他群集管理器,它只能在本地计算机上运行。

6.如何在集群上运行Apache Spark应用程序

cf5436f5f57d7a187455c68bb71bad37.png

Apache Spark作业执行流程的完整图片。

  1. 使用spark-submit,用户提交Spark应用。
  2. 在spark-submit中,我们调用用户指定的main()方法。它还会启动驱动程序(driver)。
  3. 驱动程序(driver)向集群管理器(yarn or mesos)请求启动执行器所需的资源。
  4. 集群管理器代表驱动程序启动执行程序。
  5. 驱动程序进程(driver)在用户应用程序的帮助下运行。根据RDD上的动作(actions)和转换(transformation),驱动程序(driver)以任务(tasks)形式将工作发送给执行者(executors)。
  6. 执行者(executors)处理任务(task),结果通过集群管理器发送回驱动程序(driver)。

Spark-WebUI

Spark-UI是一个图形化的web工具,帮助理解代码执行流程以及完成特定作业所花费的时间。可视化有助于发现执行过程中发生的任何潜在问题,并进一步优化spark应用程序。

以上就是Apache Spark的工作方式。

如果发现任何不正确的地方,或者想分享有关上述主题的更多信息,欢迎反馈。

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

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

相关文章

使用RESTful Client API进行GET / POST

互联网上有很多如何使用RESTful Client API的东西。 这些是基础。 但是,尽管该主题看起来微不足道,但仍然存在一些障碍,尤其是对于初学者而言。 在这篇文章中,我将尝试总结我的专业知识,以及我如何在实际项目中做到这…

matplotlib plt.lengend图例放在图像的外侧

参考:https://www.jb51.net/article/186659.htm matplotlib plt.lengend图例放在图像的外侧 1、图例在图中实例 import numpy as np import matplotlib.pyplot as plt# 定义x,y X np.linspace(0, 2*np.pi, 32, endpointTrue) C np.cos(X)# figure的名称 plt.figur…

和搜狗输入法快捷键冲突_这款输入法被调教多年不输搜狗,爱了奥里给!

自从搜狗输入法被曝“推广门”之后,许多小伙伴开始寻找新的替代品。这期间,我也尝试了很多输入法,比如手心输入法、小狼毫输入法等。我以易用性、候选字质量和辅助输入功能三个方面作为考量标准,最终选定Win10默认的输入法&#x…

预期的异常规则和模拟静态方法– JUnit

今天,我被要求使用RESTful服务,所以我开始遵循Robert Cecil Martin的TDD规则实施该服务,并遇到了一种测试预期异常以及错误消息的新方法(对我来说至少是这样),因此考虑共享我的实现方式作为这篇文章的一部分…

Linux安装部署FTP服务器

Linux安装部署FTP服务器 本文章会将安装FTP服务器的步骤以及一些遇到的问题来记录下 因为项目中要与第三方对接数据,需要用到FTP服务器以提供他们每天上传数据,因为之前在本地的VMware虚拟机上部署过一次,这次则在天翼云上部署。 首先&#x…

广度优先搜索

转载 https://www.cnblogs.com/skywang12345/p/3711483.html 1. 广度优先搜索介绍 广度优先搜索算法(Breadth First Search),又称为"宽度优先搜索"或"横向优先搜索",简称BFS。 它的思想是:从图中某顶点v出发&#xff…

转https_免费!这个PPT转PDF的方法不学可惜!

职场人士对PPT演示文档都不陌生,尤其是商务、营销团队利用PPT向客户推荐产品、推广计划更是家常便饭。但是作为一个合格的商务营销人员,汇报、方案只保存PPT一种格式是远远不够的,因为经常在不同产地演示,而不同的设备可能对不同版…

深度优先搜索

转载:https://www.cnblogs.com/skywang12345/p/3711483.html 深度优先搜索 1. 深度优先搜索介绍 图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。 它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点…

jvm类加载机制和类加载器_在JVM之下–类加载器

jvm类加载机制和类加载器在许多开发人员中,类加载器是Java语言的底层,并且经常被忽略。 在ZeroTurnaround上 ,我们的开发人员必须生活,呼吸,饮食,喝酒,并且几乎与类加载器保持亲密关系&#xff…

光源时间_您的国美备战时间已不足一个月!绝密国美考点、考场、光源分析送上!...

中国美术学院2020年本科招生考试报名公告,终于在前几天公布了!今年国美一共设置了三个考点,报名也已经正式开启啦!考点设置杭州考点:不设报考人数上限,接受全国所有省份考生报考(含广东省、河南省)深圳考点…

ltp-ddt eth_iperf_tcp iperf dualtest遇到的问题

ltp-ddt eth_iperf_tcp server端:iperf -s -i 5 -w 1M client端将ddt的核心代码抠出来: iperf -c 1921.68.40.41 -m -M 1500 -f M -d -t 60 -w 8K 手动运行三次后,server端挂了,client端报错:connect failed: Connecti…

beam search算法

转载 https://blog.csdn.net/xyz1584172808/article/details/89220906 https://blog.csdn.net/batuwuhanpei/article/details/64162331 https://www.zhihu.com/question/54356960 beam search算法 在看论文Sequence to Sequence Learning with neural networks时看到了beam …

微信支付遇到的坑--签名错误

遇到签名错误,因为微信没有给出具体错误信息,所以我们只能自己排查。 下面是我整理出可能导致签名错误的情况: 1.可以先去微信公众平台用支付接口调试工具验证签名方法是否有问题 https://pay.weixin.qq.com/wiki/tools/signverify/2.如果签名…

Apache Kafka / Spark流系统的性能调优

电信行业的实际案例研究 调试实际的分布式应用程序可能是一项艰巨的任务。 至少在一开始,最常见的Google搜索并没有什么用。 在这篇博客文章中,我将详细介绍如何将Apache Kafka / Spark Streaming / Apache Ignite应用程序加速近十倍,并将开…

mysql 8服务配置文件my.ini 不生效_2、mysql的启动选项和配置文件介绍

mysql服务端可以指定允许同时接入的客户端数量max-connections、客户端与服务器的通信方式、表的默认存储引擎default_storage_engine等等设置项,使得我们可以更加灵活地使用它。进入正题我们讲的是基于linux系统的,本文我们主要讲一下:1、有…

数学中常见的maxmin,min max

数学中常见的maxmin,min max 1、数学中公式(1)与公式(2)含义是不同的 (1) (2) 公式(1)的直接理解,先找出每个班里的身高最高的同学,再由这些同学中挑出身高最低的;同理,公式(2)的直接理解,先找出每个…

Mac入门--Apache/Php/Mysql的开启关闭

注意:mac自带apache环境和PHP环境 一 php服务的启动和关闭 php-fpm 启动 sudo php-fpm php-fpm 关闭 1 查看php-fpm端口是否在被php-fpm进程 netstat -an | grep 9000 查看进程pid sudo lsof -i:9000 杀死进程 sudo kill -9 [pid] 或者 sudo killall php-fpm 2 查看…

method=post 怎么让查看源代码看不到_网上文档无法复制怎么办?试试这几个方法!...

从网上复制资料很简单吗?平常在网上查找资料的时候,总是会有一些文档无法下载、甚至有时连复制都不行。这可怎么办?别急,今天我们就来介绍一些网页复制的方法,帮助大家更好地收集资料。一:复制到Word剪贴板…

python 加载mat文件

python 加载mat文件 直接上程序 import scipy.io as sciomat_path ./USPS_vs_MNIST.matload_mat scio.loadmat(mat_path) # load_mat为字典类型, <class dict> print(type(load_mat)) # 访问load_mat即为访问字典 X_src load_mat[X_src] # 这个X_src为numpy类型&…

[Sdoi2010] 地精部落

F. 地精部落 题目描述 传说很久以前&#xff0c;大地上居住着一种神秘的生物&#xff1a;地精。 地精喜欢住在连绵不绝的山脉中。具体地说&#xff0c;一座长度为 N 的山脉 H可分 为从左到右的 N 段&#xff0c;每段有一个独一无二的高度 Hi&#xff0c;其中Hi是1到N 之间的正 …