网站置顶jq,网站优化是怎么做的,开通域名后怎样建设网站,开发网站哪家好Spark 基础
本文来自 B站 黑马程序员 - Spark教程 #xff1a;原地址
什么是Spark
什么是Spark 1.1
定义#xff1a;Apache Spark是用于大规模数据#xff08;large-scala data#xff09;处理的统一#xff08;unified#xff09;分析引擎 Spark最早源于一篇论文 Re…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可以计算结构化半结构化非结构化等各种类型的数据结构同时也支持使用PythonjavaScalaR以及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类型基础平台包含计算存储调试纯计算工具分布式场景海量数据批处理磁盘迭代计算海量数据的批处理内存迭代计算交互式计算海量数据流计算价格对机器要求低便宜对内存有要求相对较贵编程范式MapReduce,API较为底层算法适应性差Rdd组成Dag有向无环图API较为顶层方便使用数据存储结构MapReduce中间计算结果在HDFS磁盘上延迟大RDD中间运算结果在内存中延迟小运行方式Task以进程方式维护任务启动慢Task以线程方式维护任务启动快可批量创建提高并行能力
尽管Spark相对于Hadoop而言具有较大优势但Spark并不能完全替代Hadoop
在计算层面Spark相比较MR(MapReduce)有巨大的性能优势但至今仍有许多计算工具基于MR构架比如非常成熟的HiveSpark仅做计算而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,javascala, R 语言的API可以编程进行海量离线数据批处理计算。
SparkSQL基于SparkCore之上提供结构化数据的处理模块SparkSql支持以Sql语言对数据进行处理SparkSql本身针对离线计算场景。同时基于SparkSqlSpark提供了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个层面去看
资源管理层面
集群资源管理者masterresourceManager单机资源管理者workernodeManager
任务计算层面
单任务管理者masterapplicationMaster单任务执行者workerTask(容器内计算框架的工作角色)
Spark的架构角色-理解 1.2
spark运行角色 Spark的架构角色-理解 1.3
spark运行角色
spark中由4类角色组成整个spark的运行时环境
master角色管理整个集群的资源 类比与yarn的ResouceManagerworker角色管理单个服务器的资源 类比与yarn的NodeMangerDriver角色管理单个Spark任务在运行的时候的工作 类比于yarn的applicationMasterExecutor角色单个任务运行的时候的一堆工作者干活的 类比于yarn的容器内运行的task
从2个层面划分
资源管理层面
管理者spark是master角色yarn是ResourcesManger工作中spark是worker角色yarn是NodeManager
从任务执行层面
某任务管理者spark是Driver角色yarn是applicationMaster某任务执行者spark是Executor角色yarn是容器中运行的具体工作进程
相关问题
spark解决什么问题
海量数据的计算可以进行离线批处理以及实时流计算
spark有哪些模块
核心sparkCoresql计算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