Spark 基本原理与架构认识 .

1. 什么是Spark.

spark是一个基于内存的分布式并行的迭代式计算框架

2.Spark和MapReduce比较

在这里插入图片描述

3.Spark应用的四种运行环境

bin/spark-submit

本地模式
1、local => 主要用于开发(IDEA中运行)和开发的测试(spark-shell运行)

集群模式
2、standalone => 将spark应用运行在spark自带的资源管理器上
3、yarn => 将spark应用运行在yarn上、80%的公司选择将程序运行在yarn上。

yarn 有两种运行模式的区别:
《详细见博主下面链接》
https://blog.csdn.net/weixin_46163590/article/details/104867435

4、mesos => 将spark应用运行在mesos上
standalone、yarn、mesos均为集群资源管理器;
mesos、standalone都是类似yarn的一种资源管理器

4.简述Spark的特点

Spark函数运行的时候,绝大多数的函数是可以在内存里面去迭代的。只有少部分的函数需要落地到磁盘

5.Spark 架构图

图2.1

在这里插入图片描述
1、Spark Core:包含Spark的基本功能;尤其是定义RDD的API、操作以及这两者上的动作。其他Spark的库都是构建在RDD和Spark Core之上的

2、Spark SQL:提供通过Apache Hive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API。每个数据库表被当做一个RDD,Spark SQL查询被转换为Spark操作。

3、Spark Streaming:对实时数据流进行处理和控制。Spark Streaming允许程序能够像普通RDD一样处理实时数据

扫描二维码关注公众号,回复: 11170701 查看本文章

4、MLlib:一个常用机器学习算法库,算法被实现为对RDD的Spark操作。这个库包含可扩展的学习算法,比如分类、回归等需要对大量数据集进行迭代的操作。

5、GraphX:控制图、并行图操作和计算的一组算法和工具的集合。GraphX扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作

6.Spark应用提交流程

-1. client会将所有的应用相关参数/文件上传到driver的执行节点,client申请Driver运行的资源,并远程启动driver进程(RPC远程调用)
-2. driver进程负责executor进程的资源以及远程启动executor进程
-3. 进入具体的job执行阶段
-4. SparkContext关闭,释放资源
sc.stop() ==> 这个一般不需要调用,原因在于:SparkContext内部添加了一个JVM的钩子,当JVM退出的时候,这个会自动的调用

图2.2

在这里插入图片描述

7、Spark应用的执行流程

** 注意:
1,2,3,4,5,6, 8,9 ==> Driver进程中运行
7 ==> exeucotr运行

-1. 在Driver中调用RDD的transformation类型的API(算子)构建RDD的DAG执行 图2.2 见
-2. 调用RDD的action类型的API(算子)触发job执行
-3. 首先RDD调用SparkContext的runJob方法提交job
-4. SparkContext的runJob方法中调用DAGScheduler对象的submitJob提交job
-5. 在DAGScheduler中对提交的Job(DAG图)进行stage划分,并形成TastSet,提交到TaskScheduler对象中
-6. TaskScheduler负责将TaskSet提交到Executor中执行
-7. ExecutorBackend进程接收到task运行的命令后,启动对应的task线程进行数据处理,并将数据结构输出到磁盘(物化)(ShuffleMapTask)或者返回给Driver(ResultTask) ===> TaskScheduler会将Task信息(执行API)进行序列化后,传递给Executor
-8. Driver(SparkContext对象)中的SchedulerBackend对象会接收ExecutorBackend进程返回的task执行结果(在这个过程中TaskScheduler也会参与进来)
-9. 当一个Stage的所有Task均执行完成,DAGScheduler负责将下一个Stage的Task继续提交给TaskScheduler进行调度管理,直到所有的Stage均执行完成,那么job执行完成,并将所有分区的执行结果合并后返回给driver(调用线程)

灵魂一问:
隐士转换的函数是辣个?
Implicit._

8、转载著名出处,尊重原创,如有错误,欢迎指正。

在这里插入图片描述

原创文章 48 获赞 45 访问量 9351

猜你喜欢

转载自blog.csdn.net/weixin_46163590/article/details/105012727