当前位置: 首页 > news >正文

Spark 基础知识点

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)

相关文章:

Spark 基础知识点

Spark 基础 本文来自 B站 黑马程序员 - Spark教程 :原地址 什么是Spark 什么是Spark 1.1 定义:Apache Spark是用于大规模数据(large-scala data)处理的统一(unified)分析引擎 Spark最早源于一篇论文 Re…...

动作捕捉系统通过SDK与LabVIEW通信

运动分析、VR、机器人等应用中常使用LabVIEW对动作捕捉数据进行实时解算。NOKOV度量动作捕捉系统支持通过SDK与LabVIEW进行通信,将动作数据传入LabVIEW。 一、软件设置 1、形影软件设置 1、将模式切换到后处理模式 2、加载一个刚体数据 3、打开软件设置 4、选择网…...

【PTE-day02 sqlmap操作】

1、sqlmap简介 🍇sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL进行SQL注入。目前支持的数据库有MySql、Oracle、Access、PostageSQL、SQL Server、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB等. Sqlmap采用了以下5种独特的SQL注入技术 (1)…...

2021年03月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 不超过100个元素的有序数列,使用二分查找能找到指定的元素,可能的查找次数不包括? …...

2023.10.18 信息学日志

1. CF1689D Lena and Matrix 题目描述 n ⋅ m n \cdot m n⋅m 的矩阵,求矩阵上任意一点坐标使得到矩阵上的关键点曼哈顿距离最大值最小。数据范围: ∑ n ⋅ m ≤ 1 0 6 \sum n \cdot m \leq 10^6 ∑n⋅m≤106 题目概况 来源:Codeforces …...

Modbus封装库(Com,tcp,udp一应俱全)

自行封装在用的Modbus通迅库,集成了com,tcp,udp, 做个笔记吧&#xff0c; 以下头文件&#xff0c; #pragma once #include <functional> #include <vector> #include <string> #include <memory> #ifdef LIBMODBUS_EXPORTS #define LIBMODBUS_EXPORT_…...

专访HuggingFace CTO:开源崛起、创业故事和AI民主化丨智源独家

导读 HuggingFace CTO Julien Chaumond认为&#xff0c;在大模型时代&#xff0c;AI民主化至关重要。随着大语言模型和复杂人工智能系统的崛起&#xff0c;持续提升AI技术的可及性有助于确保这些技术的获取和控制不集中在少数强大实体手中。技术民主化促进了机会均等&#xff0…...

C++常用格式化输出转换

在C语言中可以用printf以一定的格式打印字符&#xff0c;C当然也可以。 输入输出及命名空间还不太了解的小伙伴可以看一看C入门讲解第一篇。  在C中&#xff0c;可以用流操作符&#xff08;stream manipulators&#xff09;控制数据的输出格式&#xff0c;这些流操作符定义在2…...

如何使用 Loadgen 来简化 HTTP API 请求的集成测试

引言 在编写 HTTP 服务的过程中&#xff0c;集成测试 1 是保证程序正确性的重要一环&#xff0c;如下图所示&#xff0c;其基本的流程就是不断向服务发起请求然后校验响应的状态和数据等&#xff1a; 为大量的 API 和用例编写测试是一件繁琐的工作&#xff0c;而 Loadgen 2 正…...

软件测试面试大家是不是一问到项目就不会了?

软件测试面试中&#xff0c;介绍做过的项目&#xff0c;可以说是必不可少的一道面试题了&#xff0c;对于面试的同学来说&#xff0c;该自己发挥呢&#xff1f; 把项目的所有功能噼里啪啦说一遍就完事了&#xff1f;当然不是&#xff0c;我们要搞清楚&#xff0c;面试官问这个…...

伐木猪小游戏

欢迎来到程序小院 伐木猪 玩法&#xff1a;控制小猪点击屏幕左右砍树&#xff0c;不能碰到树枝&#xff0c;考验手速与眼力&#xff0c;记录分数&#xff0c;快去挑战伐木吧^^。开始游戏https://www.ormcc.com/play/gameStart/199 html <script type"text/javascript…...

0007Java安卓程序设计-ssm基于Android的校园新闻管理系统

文章目录 **摘** **要**目 录开发环境 编程技术交流、源码分享、模板分享、网课教程 &#x1f427;裙&#xff1a;776871563 摘 要 网络的广泛应用给生活带来了十分的便利。所以把校园新闻管理与现在网络相结合&#xff0c;利用java技术建设校园新闻管理系统app&#xff0c;实…...

git增加右键菜单

有次不小心清理系统垃圾&#xff0c;把git右击菜单搞没了&#xff0c;下面是恢复方法 将下面代码存为.reg文件&#xff0c;双击后导出生效&#xff0c;注意&#xff0c;你安装的git必须是默认C盘的&#xff0c;如果换了地方要改下面注册表文件中相关的位置 Windows Registry …...

openGauss学习笔记-117 openGauss 数据库管理-设置数据库审计-查看审计结果

文章目录 openGauss学习笔记-117 openGauss 数据库管理-设置数据库审计-查看审计结果117.1 前提条件117.2 背景信息117.3 操作步骤 openGauss学习笔记-117 openGauss 数据库管理-设置数据库审计-查看审计结果 117.1 前提条件 审计功能总开关已开启。需要审计的审计项开关已开…...

学习代码20231106

解释代码&#xff1a;os.environ[“OMP_NUM_THREADS“] “1“ 这行代码涉及到 Python 的 os 模块和环境变量。它的作用是设置名为 “OMPNUMTHREADS” 的环境变量的值为 “1”。让我解释一下各部分的含义&#xff1a; 1.os.environ: 这是 Python 中的一个字典&#xff0c;包含…...

turtle绘制分形树-第10届蓝桥杯省赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第5讲。 turtle绘制分形树&…...

【大厂招聘试题】__硬件工程师_2021年“美团”校招

目录 匹配职位&#xff1a;硬件工程师 1.&#xff08;多选题&#xff09;单处理系统中&#xff0c;进程P1,P2,P3处于就绪队列&#xff0c;进程P4&#xff0c;P6处于等待队列&#xff0c;P5正占用处理器运行&#xff0c;以下对接下来的运行合理的分析是&#xff08; &#xff…...

算法通关村第七关|黄金挑战|迭代实现二叉树的前、中、后序遍历

1.迭代实现前序遍历 public List<Integer> preOrderTraversal(TreeNode root) {List<Integer> res new ArrayList<Integer>();if (root null) {return res;}Deque<TreeNode> stack new LinkedList<TreeNode>();TreeNode node root;while (!…...

了解高防服务器的工作原理

在当今互联网时代&#xff0c;网络安全问题日益突出&#xff0c;各种网络攻击层出不穷。为了保护企业的网络安全&#xff0c;高防服务器应运而生。那么&#xff0c;你是否了解高防服务器的工作原理呢?下面就让我们一起来探索一下。 高防服务器是一种能够有效抵御各种网络攻击的…...

AVL树性质和实现

AVL树 AVL是两名俄罗斯数学家的名字&#xff0c;以此纪念 与二叉搜索树的区别 AVL树在二叉搜索树的基础上增加了新的限制&#xff1a;需要时刻保证每个树中每个结点的左右子树高度之差的绝对值不超过1 因此&#xff0c;当向树中插入新结点后&#xff0c;即可降低树的高度&…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...