Spark 基础知识点

news2024/11/26 20:34:21

Spark 基础

本文来自 B站 黑马程序员 - Spark教程 :原地址

什么是Spark

什么是Spark 1.1

定义:Apache Spark是用于大规模数据(large-scala data)处理的统一(unified)分析引擎

在这里插入图片描述

Spark最早源于一篇论文 Resilient Distributed Datasets:A Fault-Tolerant Abstraction for In-Memory Cluster Computing,该论文是由加州大学柏克莱分校的Matei Zaharia 等人发表的。论文中提出了一种弹性分布式数据集(即RDD)的概念。

在这里插入图片描述

翻译过来:RDD是一种分布式内存抽象,其使得程序员能够在大规模集群中做内存运算,并且有一定的容错方式。而这也是整个Spark的核心数据结构,Spark整个平台都围绕着RDD进行。

什么是Spark 1.2

定义:Apache Spark是用于大规模数据(large-scala data)处理的统一(unified)分析引擎

在这里插入图片描述

简而言之,Spark借鉴了MapReduce 思想发展而来,保留了其分布式并行计算的优点并改进了其明显的缺陷,让中间数据存储在内存中提高了运行速度,并提供丰富的操作数据的API提高了开发速度。

什么是Spark 1.3

统一分析引擎?

​ Spark是一款分布式内存计算的统一分析引擎。

​ 其特点就是对任意类型的数据进行自定义计算。

​ Spark可以计算:结构化,半结构化,非结构化等各种类型的数据结构,同时也支持使用Python,java,Scala,R以及SQL语言去开发应用程序计算数据。

​ Spark的适用面非常广泛,所以,被称之为统一的(适用面广)的分析引擎(数据处理)

Spark 历史

Spark 历史 1.1

Spark 是加州大学伯克分校AMP实验室(Algorithms Machines and People Lab)开发的通用大数据处理框架

Spark的发展历史,经历过几大重要阶段,如下图所示:

在这里插入图片描述

Spark 历史 1.2

Stack Overflow的数据可以看出,2015年开发Spark每月的问题提交数量已经超越Hadoop,而2018年Spark Python版本的API PySpark每月的问题提交数量也已超过Hadoop。2019年排名Spark第一,PySpark第二,而十年的累计排名是Spark第一,PySpark第三。按照这个趋势发展下去,Spark和PySpark在未来很长的一段时间内应该还会处于垄断地位。

在这里插入图片描述

Spark 历史 1.3

十年走来,Spark目前已经迭代到了3.2.0版本(2021.10.13发布)

在这里插入图片描述

Spark VS Hadoop(MapReduce)

Spark VS Hadoop(MapReduce) 1.1

Spark和前面学习的Hadoop技术栈有何区别呢?

HadoopSpark
类型基础平台,包含计算,存储,调试纯计算工具(分布式)
场景海量数据批处理(磁盘迭代计算)海量数据的批处理(内存迭代计算,交互式计算),海量数据流计算
价格对机器要求低,便宜对内存有要求,相对较贵
编程范式Map+Reduce,API较为底层,算法适应性差Rdd组成Dag有向无环图,API较为顶层,方便使用
数据存储结构MapReduce中间计算结果在HDFS磁盘上,延迟大RDD中间运算结果在内存中,延迟小
运行方式Task以进程方式维护,任务启动慢Task以线程方式维护,任务启动快,可批量创建提高并行能力

尽管Spark相对于Hadoop而言具有较大优势,但Spark并不能完全替代Hadoop

  • 在计算层面,Spark相比较MR(MapReduce)有巨大的性能优势,但至今仍有许多计算工具基于MR构架,比如非常成熟的Hive
  • Spark仅做计算,而Hadoop生态圈不仅有计算(MR)也有存储(HDFS)和资源管理调试(Yarn),HDFS和Yarn仍是许多大数据体系的核心架构

Spark VS Hadoop(MapReduce) 1.2

面试题:Hadoop的基于进程的计算和Spark基于线程方式优缺点?

答案:Hadoop中的MR中每个map/reduce task都是一个java进程方式运行,好处在于进程之间是相互独立的,每个task独享进程资源,没有互相干扰,监控方便,但是问题在于task之前不方便共享数据,执行效率比较低。比如多个map task读取不同数据源文件需要将数据源加载到每个map task中,造成重复加载和浪费内存。而基于线程的方式计算是为了数据共享和提高执行效率,Spark采用线程的最小执行单位,但缺点是线程之间会有资源竞争。

线程的基本概念

  • 线程是cpu的基本调度单位
  • 一个进程一般包含多个线程,一个进程下的多个线程共享进程的资源
  • 不同进程之间的线程相互不可见
  • 线程不能独立执行
  • 一个线程可以创建和撤销另外一个线程

Spark 四大特点

在这里插入图片描述

速度快

由于Apache Spark 支持内存计算,并且通过DAG(有向无环图)执行引擎支持无环数据流,所以官方宣称其在内存中的运行速度比Hadoop的Map Reduce快100倍,在硬盘中要快10倍。

在这里插入图片描述

Spark处理数据与MapReduce处理数据相比,有如下两个不同点:

  • 其一 spark处理数据时,可以将中间处理的结果数据存储到内存中
  • 其二 spark提供了非常丰富的算子(API),可以做到复杂任务在一个Spark程序中完成。

易于使用

spark 的版本已经更新到 spark 3.2.0 (截止日期2021.10.13),支持包括java, scala, python, R和sql语言在内的多种语言,为了兼容spark2.x 企业级应用场景,spark 仍然持续更新 spark2 版本

在这里插入图片描述

通用性强

在spark 的基础上,spark还提供了包括spark sql, spark streaming, Mlib及GraphX在内的多个工具库,我们可以在一个应用中无缝地使用这些工具库。

在这里插入图片描述

运行方式

spark 支持多种运行方式,包含在hadoop 和Mesos上,也支持Standalone的独立运行模式,同时也可以运行在云Kubernetes (Spark 2.3开始支持)上。

在这里插入图片描述

对于数据源而言,spark支持从HDFS, HBase, Cassandra及 Kafka等多种途径获取数据。

Spark 框架模块-了解

整个Spark框架模块包含:spark Core, spark SQL, Spark Streaming, Spark GraphX, Spark Mlib,而后四项的能力都是建立在核心引擎之上

在这里插入图片描述

Spark Core: Spark的核心,Spark核心功能均由Spark core模块提供,是Spark运行的基础,Spark Core以RDD为数据抽象,提供Python,java,scala, R 语言的API,可以编程进行海量离线数据批处理计算。

SparkSQL:基于SparkCore之上,提供结构化数据的处理模块,SparkSql支持以Sql语言对数据进行处理,SparkSql本身针对离线计算场景。同时基于SparkSql,Spark提供了StructuredStreaming模块,可以以SparkSql为基础,进行数据的流式计算。

SparkStreaming:以SparkCore为基础,提供数据的流式计算功能

MlIib:以sparkcore 为基础,进行机器学习计算,内置了大量的机器学习库和API算法等。方便用户以分布式计算的模式进行机器学习计算。

GraphX:以SparkCore为基础,进行图计算,提供了大量的图计算API, 方便用于以分布式计算模式进行图计算。

Spark 运行模式-了解

在这里插入图片描述

spark 提供了多种运行模式,包括:

  • 本地模式(单机)

    本地模式就是以一个独立的进程,通过其内部的多个线程来模拟整个spark运行时环境

  • Standalone模式(集群)

    spark中的各个角色以独立进程的形式存在,并组成spark集群环境

  • Hadoop Yarn模式(集群)

    spark中的各个角色运行在yarn的容器内部,并组成spark集群环境

  • Kubernetes模式(容器集群)

    spark中的各个角色运行在kubernetes的容器内部,并组成spark集群环境

  • 云服务模式(运行在云平台上)

    aws,华为云,阿里云

Spark的架构角色-理解

Spark的架构角色-理解 1.1

yarn角色回顾

在这里插入图片描述

yarn主要有4类角色,从2个层面去看:

资源管理层面

  • 集群资源管理者(master)resourceManager
  • 单机资源管理者(worker)nodeManager

任务计算层面

  • 单任务管理者(master)applicationMaster
  • 单任务执行者(worker)Task(容器内计算框架的工作角色)

Spark的架构角色-理解 1.2

spark运行角色

在这里插入图片描述

Spark的架构角色-理解 1.3

spark运行角色

spark中由4类角色组成整个spark的运行时环境

  • master角色,管理整个集群的资源 类比与yarn的ResouceManager
  • worker角色,管理单个服务器的资源 类比与yarn的NodeManger
  • Driver角色,管理单个Spark任务在运行的时候的工作 类比于yarn的applicationMaster
  • Executor角色,单个任务运行的时候的一堆工作者,干活的, 类比于yarn的容器内运行的task

从2个层面划分

资源管理层面

  • 管理者:spark是master角色,yarn是ResourcesManger
  • 工作中:spark是worker角色,yarn是NodeManager

从任务执行层面

  • 某任务管理者:spark是Driver角色,yarn是applicationMaster
  • 某任务执行者:spark是Executor角色,yarn是容器中运行的具体工作进程

相关问题

spark解决什么问题?

​ 海量数据的计算,可以进行离线批处理以及实时流计算

spark有哪些模块?

​ 核心sparkCore,sql计算(SparkSql),流计算(sparkStreaming),图计算(GraphX), 机器学习(MLib)

spark特点有哪些?

​ 速度快,使用简单,通用性强,多种模式运行

spark的运行模式?

​ 本地模式

​ 集群模式(standAlone,yarn,K8s)

​ 云模式

Spark的运行角色(对比yarn)

​ master: 集群资源管理(类同ResourceManager)

​ worker: 单机资源管理(类同NodeManager)

​ Driver:单任务管理者(类同ApplicationMaster)

​ Executor:单任务执行者(类同Yarn容器内的Task)

用简单,通用性强,多种模式运行

spark的运行模式?

​ 本地模式

​ 集群模式(standAlone,yarn,K8s)

​ 云模式

Spark的运行角色(对比yarn)

​ master: 集群资源管理(类同ResourceManager)

​ worker: 单机资源管理(类同NodeManager)

​ Driver:单任务管理者(类同ApplicationMaster)

​ Executor:单任务执行者(类同Yarn容器内的Task)

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

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

相关文章

Linux 学习(CentOS 7)

CentOS 7 学习 Linux系统内核作者: Linux内核版本 内核(kernel)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层。 Linux内核版本又分为稳定版和开发版,两种版本是相互关联&am…

深度优先遍历与连通分量

深度优先遍历(Depth First Search)的主要思想是首先以一个未被访问过的顶点作为起始顶点,沿当前顶点的边走到未访问过的顶点。当没有未访问过的顶点时,则回到上一个顶点,继续试探别的顶点,直至所有的顶点都被访问过。 下图示例的…

设置Linux时间格式

一、事因 不知道什么时候我在输入ls -l 命令时候的显示变成了。 -rw-r--r-- 1 bossftp ftp 6796376499 915 05:31 rac_full_20230915.gz -rw-r--r-- 1 bossftp ftp 6804104515 104 05:25 rac_full_20231024.gz -rw-r--r-- 1 bossftp ftp 6804365525 105 05:29 rac_full_202…

技术分享 | Selenium多浏览器处理

实战演示 Python 版本 #导入依赖 import os from selenium import webdriverdef test_browser():#使用os模块的getenv方法来获取声明环境变量browserbrowser os.getenv("browser").lower()#判断browser的值if browser "headless":driver webdriver.Ph…

python web框架 flask基础入门教程

python web框架 flask基础入门教程 今天我们写一个flask基础入门教程,当然也会覆盖很多重要的知识点,在这篇博客中,我们主要会讲解如下内容: 1、通过flask框架向web传输和接收参数 2、实现静态图片插入和图书上传 3、实现搭建…

函数调用指令, 返回机制分析(x86_64)

预备 #include <stdio.h>int addDetail(int a, int b) {return a b; }int add(int a, int b) {int c;c addDetail(a, b);return c; }int main(int argc, char *argv[]) {int sum;sum add(3, 5);printf("sum %d\n", sum);return 0; }汇编 main add addDeta…

前端食堂技术周刊第 103 期:10 月登陆 Web 平台的新功能、TS 5.3 RC、React 2023 状态、高并发的哲学原理、Web 资源加载优先级

美味值&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f; 口味&#xff1a;夏梦玫珑 食堂技术周刊仓库地址&#xff1a;https://github.com/Geekhyt/weekly 大家好&#xff0c;我是童欧巴。欢迎来到前端食堂技术周刊&#xff0c;我们先来看下…

数据集划分:手动划分文件夹中的图片数据集为训练集、验证集和测试集

1.需求 手动划分文件夹中的图片数据集为训练集、验证集和测试集&#xff0c;即进行文件夹中的数据集&#xff08;都是图片&#xff09;进行划分。 2.步骤 使用文件处理库&#xff08;如os&#xff09;遍历读取文件夹中的图片文件。将读取到的图片文件路径存储到列表中。打乱…

8、Python模块和包:导入模块、创建自己的模块和包

文章目录 Python模块和包:导入模块、创建自己的模块和包导入模块创建自己的模块创建包使用相对导入结论Python模块和包:导入模块、创建自己的模块和包 Python是一种功能强大的编程语言,它的模块和包系统是其强大功能的基石之一。在Python中,模块是包含Python定义和声明的文…

【MySQL事务篇】多版本并发控制(MVCC)

多版本并发控制(MVCC) 文章目录 多版本并发控制(MVCC)1. 概述2. 快照读与当前读2.1 快照读2.2 当前读 3. MVCC实现原理之ReadView3.1 ReadView概述3.2 设计思路3.3 ReadView的规则3.4 MVCC整体操作流程 4. 举例说明4.1 READ COMMITTED隔离级别下4.2 REPEATABLE READ隔离级别下 …

viewBinding与反射结合的实用实践

首先&#xff0c;官方教程指个路&#xff1a;视图绑定 本文阅读认真阅读大约需要5-20分钟 也可直接跳到文末3.0看最终方案 目录 1 关于ViewBinding第一点&#xff0c;命名符合一定的规则第二点&#xff0c;继承自ViewBinding 2 正常使用不便之处3 话不多说直接看代码1.04 话不…

数据结构与算法之美学习笔记:16 | 二分查找(下):如何快速定位IP对应的省份地址?

目录 前言二分查找的变形问题变体一&#xff1a;查找第一个值等于给定值的元素变体二&#xff1a;查找最后一个值等于给定值的元素变体三&#xff1a;查找第一个大于等于给定值的元素变体四&#xff1a;查找最后一个小于等于给定值的元素 解答开篇内容小结 前言 本节课程思维导…

vue3+ts 项目遇到的问题和bug

1.router中使用pinia报错 pinia.mjs:1709 Uncaught Error: [&#x1f34d;]: "getActivePinia()" was called but there was no active Pinia. Are you trying to use a store before calling "app.use(pinia)"? See https://pinia.vuejs.org/core-concep…

[科研图像处理]用matlab平替image-j,有点麻烦,但很灵活!

做材料与生物相关方向的同学应该对image-j并不陌生&#xff0c;前几天有个师兄拜托我用image-j分析一些图片&#xff0c;但使用过后发现我由于不了解image-j的工作流程而对结果并不确信&#xff0c;而且image-j的功能无法拓展&#xff0c;对有些图片的处理效果并不好&#xff0…

【网络协议】聊聊HTTPDNS如何工作的

传统 DNS 存在哪些问题&#xff1f; 域名缓存问题 我们知道CND会进行域名解析&#xff0c;但是由于本地会进行缓存对应的域名-ip地址&#xff0c;所以可能出现过期数据的情况。 域名转发问题 出口 NAT 问题 域名更新问题 解析延迟问题 因为在解析DNS的时候&#xff0c;需要进行…

【C语言】函数的系统化精讲(二)

&#x1f308;write in front :&#x1f50d;个人主页 &#xff1a; 啊森要自信的主页 &#x1f308;作者寄语 &#x1f308;&#xff1a; 小菜鸟的力量不在于它的体型&#xff0c;而在于它内心的勇气和无限的潜能&#xff0c;只要你有决心&#xff0c;就没有什么事情是不可能的…

vue3错误排查-POST请求的body参数 传参方式form-data和json

问题&#xff1a;vue3实现登录功能&#xff0c;登录成功后 跳转到登陆后的界面 一秒后 闪退回登录页 对应的输出结果也一闪而过&#xff0c;反复复查了代码&#xff0c;没问题。 自测&#xff1a;进行断点输出调试。强行跳转到登陆后的界面&#xff0c;查看输出的结果。 没有报…

安全操作(安卓推流)程序

★ 安全操作项目 项目描述&#xff1a;安全操作项目旨在提高医疗设备的安全性&#xff0c;特别是在医生离开操作屏幕时&#xff0c;以减少非授权人员的误操作风险。为实现这一目标&#xff0c;我们采用多层次的保护措施&#xff0c;包括人脸识别、姿势检测以及二维码识别等技术…

Linux 实现原理 — NUMA 多核架构中的多线程调度开销与性能优化

前言 NOTE&#xff1a;本文中所指 “线程” 均为可执行调度单元 Kernel Thread。 NUMA 体系结构 NUMA&#xff08;Non-Uniform Memory Access&#xff0c;非一致性存储器访问&#xff09;的设计理念是将 CPU 和 Main Memory 进行分区自治&#xff08;Local NUMA node&#x…

1070 结绳

一.问题&#xff1a; 给定一段一段的绳子&#xff0c;你需要把它们串成一条绳。每次串连的时候&#xff0c;是把两段绳子对折&#xff0c;再如下图所示套接在一起。这样得到的绳子又被当成是另一段绳子&#xff0c;可以再次对折去跟另一段绳子串连。每次串连后&#xff0c;原来…