spark原理简介_spark技术原理-程序员宅基地

技术标签: spark  spark简介  

spark原理简介

  • spark简介
           spark是基于内存的分布式处理框架,它把要执行的作业拆分成多个任务,然后将任务分发到多个CPU进行处理,处理结果的中间数据存储在内存中,减少了数据处理过程中对硬盘的I/O操作,大大提升了处理效率。

  • spark和MapReduce对比
           spark相对于mr,性能上提高了100倍。
           spark相对于mr,数据的中间结果存储在内存中,对于数据的迭代处理效率更高;进行批处理的时候效率更高,延迟更低。
           spark相对于mr,提供了更多的数据集操作类型,编程模型比mr更加灵活,开发效率更高。
           spark相对于mr,具有更高的容错能力(血统机制)。

  • Spark的应用运行架构运行流程如下所示
           1. 应用程序(Application)是作为一个进程的集合运行在集群上的,由Driver进行协调。
           2. 在运行一个应用时,Driver会去连接集群管理器(Standalone、Mesos、YARN)申请运行Executor资源,并启动ExecutorBackend。然后由集群管理器在不同的应用之间调度资源。Driver同时会启动应用程序DAG调度、Stage划分、Task生成。
           3. 然后Spark会把应用的代码(传递给SparkContext的JAR或者Python定义的代码)发送到Executor上。
           4. 所有的Task执行完成后,用户的应用程序运行结束。

  • RDD简介
           RDD是spark框架中的一个分布式弹性数据集,可以理解为一个存储数据的数据结构。spark会把所有需要处理的数据加载到RDD中,然后在进行处理,即所有的操作都是基于RDD来进行的,而想要对RDD进行操作,只能在重新生成一个新的RDD。RDD是只读和可分区的,当前RDD默认是存储在内存中的,只有当内存不足的时候,RDD才会溢出到磁盘中的。RDD的算子类型分为transformation和action两种类型,其中transformation属于懒操作算子,其不会立刻出发RDD开始处理计算数据,例如map(func),action是RDD的触发算子类型,该类算子会立刻出发RDD进行计算,例如:foreach(func),print()。
    在这里插入图片描述

  • Shuffle划分
           shuffle是划分DAG(有向无环图)中的stage的标注,也是影响spark作业执行速度的关键因素。RDD的transformation函数分为宽依赖操作和窄依赖操作,宽依赖和窄依赖的区别就是看是否发生shuffle(洗牌)操作。shuffle操作如下图:
    在这里插入图片描述

  • RDD的宽依赖和窄依赖

       窄依赖是指父RDD的每一个分区只能倍子RDD的一个分区使用,表现为父RDD的每一个分区对应一个子RDD分区。如下图:
在这里插入图片描述
       宽依赖是指父RDD的每一个分区可以对应多个子RDD分区,表现为一个父RDD分区可以被多个子RDD分区使用。如下图:
在这里插入图片描述

  • spark程序入口
           SparkContext是spark的入口,相当于程序中main函数;其表示与spark集群的连接,创建RDD,并记录计算结果和配置环境等。
           在spark2.0中,引入了SparkSession的概念,其为用户提供了一个统一的入口,方便用户使用spark的各项功能。SparkSession封装了SparkConf和SparkContext以及SQLContext,方便用户使用spark的各种API。
  • spark原理
    spark架构图,如下
    在这里插入图片描述
            Cluster Manager:在standalone模式中即为Master主节点,控制整个集群,监控worker,在YARN模式中为资源管理器。
           Worker节点:从节点,负责控制计算节点,启动Executor或者Driver。
           Driver: 运行Application 的main()函数。
           Executor:执行器,是为某个Application运行在worker node上的一个进程。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42012160/article/details/116593879

智能推荐

使用SBM-DEA模型优化绩效评估:理论、案例与MATLAB实践-程序员宅基地

文章浏览阅读1.9k次。数据包络分析是一种非参数方法,用于评估各种类型的决策单元,如企业、医院、学校等。其核心思想是将各个决策单元的输入和输出转化为一个效率评分,以比较它们的相对绩效。DEA的主要应用领域包括绩效评估、资源分配、效率改进等。_sbm-dea

计算机应用模块数量如何填写,职称计算机考试科目、模块数量介绍-程序员宅基地

文章浏览阅读1.7k次。原标题:职称计算机考试科目、模块数量介绍全国计算机应用能力考试坚持"实事求是,区别对待,逐步提高"的原则,不同地区、不同部门根据本地区、本部门的实际情况,确定适合本地区、本部门的考试范围要求。1、不同地区和部门自主确定应考科目数量在对专业技术人员计算机应用能力的具体要求上,各省、自治区、直辖市人事厅(局)和国务院有关部门干部(人事)部门应结合本地区、本部门的实际情况,确定本地区、本部门在评聘专业技..._模块数

设计一个 shell 程序,添加一个新组为 class1,然后添加属于这个组的 30 个用户,用户名的形式为 stdxx ,其中 xx 从 01 到 30_设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的-程序员宅基地

文章浏览阅读5.5k次,点赞3次,收藏49次。Linux例题:设计一个 shell 程序,添加一个新组为 class1,然后添加属于这个组的 30 个用户,用户名的形式为 stdxx ,其中 xx 从 01 到 30_设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的

基于51单片机的冰箱温度控制除霜系统Proteus仿真-程序员宅基地

文章浏览阅读481次,点赞24次,收藏12次。AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMicroelectronics)公司生产的一系列单片机之一。它基于8051内核,并具有许多与其兼容的特性。主要特点如下:内部存储器:具有8KB的闪存(Flash)存储器,可用于存储用户程序和数据。这些存储器的内容可以通过编程器进行编程和擦除。RAM存储器:配备了256字节的随机存取存储器(RAM),用于暂存数据和程序的变量。

动身吧褪色者,即使引导已经破碎,也请您当上艾尔登之王-程序员宅基地

文章浏览阅读202次。我的第一篇博客,也祝所有学习计算机的兄弟们,前程似锦!

C#压缩指定的文件并生成zip文件-程序员宅基地

文章浏览阅读417次。程序集需要添加的引用是:ICSharpCode.SharpZipLib.dll使用实例: //执行压缩 ClsZip.Zip(downZipPath, sourceTopPath, 1, "", allFilePath); //执行下载 ctrlDcAllGrxx.download(downZi...

随便推点

c语言函数base,c中base的用法-程序员宅基地

文章浏览阅读1.7k次。c中base的用法的用法你知道吗?下面小编就跟你们详细介绍下c中base的用法的用法,希望对你们有用。c中base的用法的用法如下:1、调用基类中的重名方法[csharp]public class Person{protected string ssn = "444-55-6666";protected string name = "John L. Malgraine";public virtua..._c语言中base=16是什么意思

为什么接口中变量要用final修饰_接口参数都定义为final的作用-程序员宅基地

文章浏览阅读6.7k次,点赞3次,收藏7次。今天碰到这个问题时候,还真不好理解,只知道interface中的变量默认是被public static final 修饰的,接口中的方法是被public和abstrct修饰的。查阅了很多资料,做了些例子,得出以下结论,不足的地方希望大家指出。 Java代码 /* * 关于抽象类和接口 * * 1_接口参数都定义为final的作用

【R语言学习笔记】6、List列表详解_r语言怎么查看list有几个项目-程序员宅基地

文章浏览阅读4.4k次,点赞3次,收藏25次。创建一个list列表> mylist <- list(stud.id = 1234,+ stud.name = "Tom",+ stud.marks = c(12, 3, 14, 25, 19))> mylist$stud.id[1] 1234$stud.name[1] "Tom"$stud.marks[1] 12 3 14 25 19取列表的值注..._r语言怎么查看list有几个项目

java 判断标点符号_Java判断中英文符号、标点的实现-程序员宅基地

文章浏览阅读2.7k次。本文介绍了Java判断中英文符号、标点的实现,分享给大家,具体如下:方法一、用unicodeBlock和unicodeScript判断在Java中,主要使用 Character类处理字符有关功能,而JDK 1.7中Character是按照Unicode 6.0版本实现的,所以这个要先学习下常用的 Unicode编码。其中的UnicodeBlock 和 UnicodeScript类可以帮助我们判断字..._java 判断字符是标点符号

图像缩放算法-程序员宅基地

文章浏览阅读2.1k次。怎样计算缩放比例?有四种方法:1.对角线法,以对角线长度为准,其伸长者为放大,缩短者为缩小,其底边并行线即为新尺寸。2.计算器法,先输入欲缩放宽度,按除键,再输入原稿尺寸,再按%即得。3.比例尺法,将比例尺上方设定原稿宽度,与比例尺下方新尺寸对齐,即可直接找出缩放百分比。4.公式法,套入(原稿宽度/原稿高度═新宽度/新..._图像缩放算法

word创建自动标序号的标题列表_word里1234自动生成-程序员宅基地

文章浏览阅读378次。创建如上图的四级列表:一、分别基于标题2、3、4(同时也是二三四级样式)创建每个标题的新样式。二、接下来是最后两步完成_word里1234自动生成

推荐文章

热门文章

相关标签