大数据很大

一文通俗理解Spark架构、Spark部署方式、配属配置优先级、

2019-10-24  本文已影响0人  alexlee666

Spark是一种基于内存计算的计算引擎(通俗地说就是计算速度快),由于其可以将计算的中间结果存放在内存中,因此非常适合于迭代计算和交互式查询

一、Spark的四大核心组件和集群资源调度器

Spark四大核心组件

1.1 Spark的四大核心组件

Spark core定义了Spark基本功能和模块,包含SparkSession、RDD、DAG、Lingage、Cache、broadcast等,并封装了底层通讯框架,是Spark的基础。我们常说的Spark四大核心组件分别是指Spark SQL、Spark Streaming、Spark ML 以及 Spark Graphx,它们担任的角色如下:

这四大核心组件都依赖于Spark core才能工作

1.2 Spark的集群资源调度器

通常做大数据处理,至少要具有三个功能,即:

比如Hadoop 2.X 就是HDFS、MapReduce、YARN分别负责这三个功能。Spark则采用如下方式:


二、Spark中常见的专业术语

名称 本质 角色 备注
application 提交给spark处理的应用程序,比如一个jar
transformation操作 一种操作类型,抽象 lazy,直至遇到下一个action操作才执行
action操作 一种操作类型,抽象 立即执行,非lazy
job action操作 1个action操作对应个job
task action或者transformation操作可以分成多个子任务,这里的子任务即task 一般来说 task数=RDD分区数
stage 执行整个application需要分成若干个stage依次先后完成,是一种抽象 当出现shuffler时,认为存在新的stage,一个stage通常包含多个task
RDD 弹性分布式数据集,一种数据结构 Spark中独特的数据结构抽象
DAG 有向无环图,由stages 和 tasks组成 用于指定执行application中的各stage及其task
DAG scheduler 接口 将整个application划分成一个或多个stage 生成相应的task set放到task scheduler中
task scheduler 接口 负责分配具体的task给executor进行处理,向 DAGScheduler 汇报执行情况
driver 进程 application中main方法所在进程,用于管理指定application中的action/transformation操作(即各stages)的执行先后顺序,协调tasks和stages 如果把一个application视为一个建筑工程,那么driver就像是现场指挥,提交一个application就有一个driver
master 服务级别的进程 负责集群级别的全局调度,向cluster manager请求资源并使得这些资源能够为driver所用 一个集群只有一个处于working状态的active master(一台机器),如果是HA则可以多添加一个standby master(另一台机器)
worker/slave 服务级别的进程 即slave,多个executor可以运行在一个worker节点上 一台物理机器上可以布置多个worker节点,由于ip是一致的,通过port来区分同一台机器上不同的worker
executor 线程 真正干活的,用于启动线程池运行任务,负责处理task 一个executor可以负责处理多个task,每个Application拥有独立的一组Executors,一个executor负责处理一个task
cluster manager 服务级别的进程 负责集群级别的资源分配,监控worker节点,保留master为worker节点请求的资源 一个集群只有一个

注:worker节点即slave(Spark采用的是主从架构),定义在spark配置路径{SPARK_HOME}/conf中的slaves文件(需要手动创建,通过copy 现有的slaves.template得到,并添加上worker主机名),比如:

# A Spark Worker will be started on each of the machines listed below.
# 注意此处的slave名必须和hosts文件中定义的slave名一致
# 每个slave占一行
slave1

同时slave(也包括master)还必须在hosts文件中定义,以让Spark知道worker所在机器的IP,比如:

# spark master & slaves
127.0.0.1  master
127.0.0.1  slave1


三、Spark的架构和部署方式

与Hadoop类似,Spark也是采用主从(master/slaves)架构,一个active master 节点(如果是高可用HA则还有一个standby master节点)和若干个worker节点(slaves)

3.1 Spark的架构

Spark架构图
如果将Spark集群类比为一个建筑公司,那么:
Spark集群 建筑公司 备注
master CEO
worker/slave 工程队 active master只有一个,worker可以多个
executor 工程队中的施工人员(真正干活的) 一个worker中executor可以多个
driver 某个工程的现场总指挥 一个application对应一个driver,多个application就会有多个driver,各driver之间互相隔离
cluster manager 资源管家(负责整个公司的资源分配) 一个集群只有一个cluster manager

3.2 Spark的部署方式

Spark的部署方式有两个因素决定:

Spark部署方式

生产环境中最常见的部署方式还是yarn-cluster,因为存在如下考虑:

综上,yarn-cluster模式有类似于负载均衡的作用,在需要提交多个spark任务时尽量使用yarn-cluster模式

3.3 Spark参数配置的优先级

基本上有3处可以配置Spark的master和deploy-mode的取值:

    // initialize spark context
    val sparkConf = new SparkConf().setAppName("app1").setMaster("yarn")

优先级就是说,当有两处以上对同一个参数进行了设置时,优先级高的生效


四、Spark application提交和处理流程

4.1 Spark提交application的方式

目前Spark支持两种提交application的方式:

spark2-shell --executor-memory=512m 
# 启动client后会显示:
Welcome to
     ____              __
    / __/__  ___ _____/ /__
   _\ \/ _ \/ _ `/ __/  '_/
  /___/ .__/\_,_/_/ /_/\_\   version 2.1.0
     /_/
        
Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_171)
Type in expressions to have them evaluated.
Type :help for more information.

scala>
# 然后将application的业务代码逐句执行即可
......

4.2 Spark处理所提交的application的流程

(1) 构建Spark Application的运行环境(启动SparkContext),SparkContext向资源管理器(可以是Standalone、Mesos、YARN或k8s)注册并申请运行Executor资源

(2) 资源管理器分配Executor资源并启动StandaloneExecutorBackend,Executor运行情况将随着心跳发送到资源管理器上;

(3) SparkContext根据driver端代码构建DAG图,将DAG图分解成Stage,并把Taskset发送给Task Scheduler。Executor向SparkContext申请Task;

(4) Task Scheduler将Task发放给Executor运行,同时SparkContext将应用程序代码发放给Executor;

(5) Task在Executor上运行,运行完毕释放所有资源

Spark处理所提交的application的流程

五、Spark的共享变量

参考博客:https://www.jianshu.com/p/e09827bce476


六、Spark的监听

参考博客:https://www.jianshu.com/p/7d79092e2d9c


如有错误,敬请指正!

参考:
https://www.cnblogs.com/langfanyun/p/8098804.html
https://blog.csdn.net/addUpDay/article/details/89112712
https://www.jianshu.com/p/da20133ecfea
https://blog.csdn.net/songhao22/article/details/79069983
https://www.cnblogs.com/frankdeng/p/9301485.html

上一篇 下一篇

猜你喜欢

热点阅读