spark理论

news2024/10/6 18:21:40

前言: 本文是之前19年学生时学习林子雨老师《Spark大数据 》网易公开课的中关于spark的理论部分的部分笔记。主要包括大数据产品与spark的一些概念与运行原理介绍。 

目录

大数据产品与hadoop生态系统

Spark概念

MapReduce与spark的比较

Spark运行

Spark运行基本流程

大数据产品与hadoop生态系统

大数据计算模式

解决问题

代表产品

批处理计算

针对大规模数据的批量处理

MapReduce、Spark等

流计算

针对流数据的实时计算

Storm、S4、Flume、Streams、Puma、DStream、Super Mario、银河流数据处理平台等

图计算

针对大规模图结构数据的处理

Pregel、GraphX、Giraph、PowerGraph、Hama、GoldenOrb等

查询分析计算

大规模数据的存储管理和查询分析

Dremel、Hive、Cassandra、Impala等

(19年时的图)

Hadoop不是单一的,是一个生态系统

HDFS:分布式文件系统,分布式批处理

MapReduce : 分布式计算框架

Hive : 数据仓库,相当于编程接口,将写的SQL语句转换为MapReduce的执行程序

Mahout : 数据挖掘库,机器学习函数库

Yarn : 资源管理框架

。。。。

MapReduce 工作流程(此了解即可,hadoop的原生mapReduce 已被弃用)

•    MapReduce采用“分而治之”策略,一个存储在分布式文件系统中的大规模数据集,会被切分成许多独立的分片(split),这些分片可以被多个Map任务并行处理

Spark概念

spark也是一个生态系统

MapReduce工作流

Hadoop存在如下一些缺点:

•    表达能力有限

•    磁盘IO开销大

•    延迟高

•    任务之间的衔接涉及IO开销

•    在前一个任务执行完成之前,其他任务就无法开始,难以胜任复杂、多阶段的计算任务

Spark 本质上也是基于MapReduce的计算框架,但是提供了更多数据集的操作。

Spark在借鉴Hadoop MapReduce优点的同时,很好地解决了MapReduce所面临的问题

相比于Hadoop MapReduce,Spark主要具有如下优点:

•    Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供了多种数据集操作类型(包括groupBy、Filter、join等),编程模型比Hadoop MapReduce更灵活

•    Spark提供了内存计算,可将中间结果放到内存中,对于迭代运算效率更高

Spark基于DAG的任务调度执行机制,要优于Hadoop MapReduce的迭代执行机制

Spark 生态系统:通常是HDFS 存储数据,Spark负责数据的计算与处理。

实现SQL查询: Spark SQl

流式计算: Spark Streaming

机器学习: Spark MLlib

图算法组件: Spark 的GraphX

MapReduce与spark的比较

Spark是基于内存的计算,是指计算过程中能够不落磁盘的就尽量不落磁盘,能占内存的就尽量占内存,留在内存中计算。

MapReduce

Spark

数据存储结构:磁盘HDFS文件系统的split

使用内存构建弹性分布式数据集RDD

对数据进行运算和cache

编程范式:Map + Reduce

DAG: Transformation + Action

计算中间结果落到磁盘,IO及序列化、反序列化代价大

计算中间结果在内存中维护

存取速度比磁盘高几个数量级

Task以进程的方式维护,需要数秒时间才能启动任务

Task以线程的方式维护

对于小数据集读取能够达到亚秒级的延迟

                       

Spark 运行模式: 即可以单机模式又可以集群模式。

•       Spark可以部署在资源管理器YARN之上,提供一站式的大数据解决方案

•       因此,Spark所提供的生态系统同时支持批处理、交互式查询和流数据处理

Spark生态系统组件的应用场景

应用场景

时间跨度

其他框架

Spark生态系统中的组件

复杂的批量数据处理

小时级

MapReduce、Hive

Spark

基于历史数据的交互式查询

分钟级、秒级

Impala、Dremel、Drill

Spark SQL

基于实时数据流的数据处理

毫秒、秒级

Storm、S4

Spark Streaming

基于历史数据的数据挖掘

-

Mahout

MLlib

图结构数据的处理

-

Pregel、Hama

GraphX

Spark运行

Spark运行架构

与Hadoop MapReduce计算框架相比,Spark所采用的Executor有两个优点:

一是利用多线程来执行具体的任务,减少任务的启动开销

二是Executor中有一个BlockManager存储模块,会将内存和磁盘共同作为存储设备,有效减少IO开销

一个Application由一个Driver和若干个Job构成,一个Job由多个Stage构成,一个Stage由多个没有Shuffle关系的Task组成

当执行一个Application时,Driver会向集群管理器申请资源,启动Executor,并向Executor发送应用程序代码和文件,然后在Executor上执行Task,运行结束后,执行结果会返回给Driver,或者写到HDFS或者其他数据库中

图 Spark运行基本流程图

SparkContext对象代表了和一个集群的连接

Spark运行基本流程

(1)首先为应用构建起基本的运行环境,即由Driver创建一个SparkContext,进行资源的申请、任务的分配和监控

(2)资源管理器为Executor分配资源,并启动Executor进程

(3)SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stage,然后把一个个TaskSet提交给底层调度器TaskScheduler处理;Executor向SparkContext申请Task,Task Scheduler将Task发放给Executor运行,并提供应用程序代码

(4)Task在Executor上运行,把执行结果反馈给TaskScheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源

总体而言,Spark运行架构具有以下特点:

(1)每个Application都有自己专属的Executor进程,并且该进程在Application运行期间一直驻留。Executor进程以多线程的方式运行Task

(2)Spark运行过程与资源管理器无关,只要能够获取Executor进程并保持通信即可

(3)Task采用了数据本地性和推测执行等优化机制

 

 

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

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

相关文章

【Spring 系列】Spring Session 深度解析

文章目录Spring Session 架构及应用场景为什么要spring-sessionSR340规范与spring-session的透明继承Spring Session探索特点核心 APIservlet session 与 spring-session 关系webflux 与 spring session 的关系基于 Servlet 的 Spring Session 实现思考题背景1、注册到 Filter …

Pytorch—模型微调(fine-tune)

随着深度学习的发展,在大模型的训练上都是在一些较大数据集上进行训练的,比如Imagenet-1k,Imagenet-11k,甚至是ImageNet-21k等。但我们在实际应用中,我们自己的数据集可能比较小,只有几千张照片,这时从头训…

RHCE——ansible环境配置(1)

配置ansible学习环境实现以下要求: 1.控制主机和受控主机通过root用户通过免密验证方式远程控住受控主机实施对应(普通命令,特权命令)任务 2.控制主机连接受控主机通过普通用户以免密验证远程控住受控主机实施指定(普通…

雪花算法详解

背景 需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量。 数据库的扩展方式主要包括:业务分库、主从复制,数据库分表。 数据库分表 将不同业务数据分散存储到不同的数据库服务器,能够支撑百万甚至千万…

计算机网络学习笔记

前言 本篇笔记方便本人用于复习回顾知识点,内容庞杂,见谅。含有目录方便大家跳转复习! 此复习笔记总结于 湖科大教书匠出品:深入浅出计算机网络 微课视频 此笔记尚未完结,持续更新中… 文章目录前言第一章 概述1.1 …

数学建模学习笔记-概况

目录 1概况. 数学建模: 数学建模的模块: 一般步骤: 全过程: 论文的基本流程 模块学习: 1.题目备战:掌握固定模式 2.摘要备战:总结归纳能力,通过看高水平论文掌握。 3.问题重…

Mybatis源码分析(五)SqlSession的创建

目录一 SqlSession的创建1.1 获取environments配置元素1.2 获取事务工厂1.3 获取执行器Executor1.4 构建DefaultSqlSession官网:mybatis – MyBatis 3 | 简介 参考书籍:《通用源码阅读指导书:MyBatis源码详解》 易哥 参考文章: M…

彩色图像灰度化

灰度图像能以较少的数据表征图像的大部分特征,因此在某些算法的预处理阶段需要进行彩色图像灰度化,以提高算法的效率。将彩色图像转化为灰度图像的过程称为彩色图像灰度化。 常用RGB图像灰度化,在RGB模型中,位于空间位置(x,y)的像…

MAX78000一些AI例程测试

进入Demo所在目录 cd /E/MAX78000/MAXSDK/Examples/MAX78000/CNN/kws20_demo 执行编译 make 如果之前已经被编译过了,可以先清除,再make make distclean 选择板型 根据自己用的开发板不一样,注释掉BOARDEvKit_V1 To compile code for …

视频处理系列︱利用达摩院ModelScope进行视频人物分割+背景切换(一)

做了一个简单的实验,利用modelscope的人像抠图模型对视频流进行抠像并更换背景。 文章目录1 视频人像抠图(Video human matting)2 更换背景1 视频人像抠图(Video human matting) 地址链接:视频人像抠图模型…

2022定格 以史为鉴 擘画未来 砥砺2023

回望2022思绪万千 我们的家国情怀和社会担当,让我们与众不同。 每一个个体,每一天,每一月,每一年,都能且应该成为更好的自己。 我们要做未来的创造者,驱动他人最好的方式是点燃自己。 不放弃就会有光&a…

Js Promise理解和使用

js中的promise是一个异步编程的解决方案,语法层面上他是一个构造函数,名字为Promise()。 它的作用就是将一个任务task封装为一个Promise类的实例对象,这个对象会将任务自动运行并得到任务结果,而且在得到结果的过程中并不会影响到…

区间预测 | MATLAB实现Lasso分位数回归时间序列预测

区间预测 | MATLAB实现Lasso分位数回归时间序列预测 目录 区间预测 | MATLAB实现Lasso分位数回归时间序列预测效果一览基本描述模型描述程序设计学习总结参考资料效果一览 基本描述 LASSO回归的特点是在拟合广义线性模型的同时进行变量筛选(variable selection)和复杂度调整(…

D2. RGB Substring (hard version)(尺取)

Problem - 1196D2 - Codeforces 通用领域 医学 计算机 金融经济 你有一个包含n个字符的字符串s,每个字符是R, G或B。 你还得到一个整数k。你的任务是改变初始字符串s中的最小字符数,这样在改变之后,将会有一个长度为k的字符串…

C语言及算法设计课程实验三:最简单的C程序设计——顺序程序设计(一)

C语言及算法设计课程实验三:最简单的C程序设计——顺序程序设计一、实验目的二、 实验内容2.1、实验内容1:通过下面的程序掌握各种格式转换符的正确使用方法三、 实验步骤3.1、顺序程序设计实验题目1:通过下面的程序掌握各种格式转换符的正确…

[OC学习笔记]启动流程

我们的app是如何从桌面图标被启动的嘞?这个问题值得探究。 冷启动与热启动 这两个启动的区别其实很简单,就看启动之前手机后台是否有app存活。 名称区别冷启动启动时,App的进程不在系统里,需要开启新进程。热启动启动时&#x…

前端学习笔记006:React.js

(前面学了那么多,终于到 React 了~) React.js 大家应该听说过,是用于构建前端网页的主流框架之一。本文会把 React.js 开发中会用到的东西(包括 React 核心,React 脚手架,React AJAX&#xff0…

nodejs接收时get请求参数

在http协议中,一个完整的url路径如下图 通过下图我们可以得知,get请求的参数是直接在url路径中显示。 get的请求参数在path资源路径的后面添加,以?表示参数的开始,以keyvalue表示参数的键值对,多个参数以&符号分…

Typescript中函数类型

不给参数定义类型,会报错,如下: 常见写法 function add1(x: number, y: number) {return x y; }function add1_1(x: number, y: number): number {return x y; }const add2 function (x: number, y: number): number {return x y; };con…

第一天作业

第一天 配置ansible学习环境实现以下要求1.控制主机和受控主机通过root用户通过免密验证方式远程控住受控主机实施对应(普通命令,特权命令)任务2.控制主机连接受控主机通过普通用户以免密验证远程控住受控主机实施指定(普通命令&…